将自定义数据嵌入到不会被 ld.so 映射的 ELF 文件中

2024-03-15

我有一个 500MB 的文件,其中包含一些自定义数据(即 ZIP 存档)。我想将它嵌入到我的 ELF 可执行文件中,这样当我分发 ELF 文件时,我将只能发送 1 个文件而不是 2 个文件。

问题是我不希望在我的应用程序启动时操作系统自动加载这 500MB ZIP 数据。我希望我的应用程序打开自己的文件,找到数据,并以这种“惰性”方式使用这些数据。

在 Windows 上,可以将这个 500MB ZIP 文件放入 PE 资源。这样,可执行加载程序就不会加载此数据。

ELF 格式中是否有一个地方可以嵌入如此大量的数据,而操作系统不会自动映射这些数据?

我知道我可以将数据附加到文件末尾,然后操作系统应该在加载阶段跳过它。但是是否可以使用ELF结构来嵌入这些数据呢?


ELF 格式中是否有一个地方可以嵌入如此大量的数据,而操作系统不会自动映射这些数据?

这对于 ELF 来说很简单——只需将数据放入未分配的部分即可。

这是最容易使用的objcopy将任意数据文件转换为.o可以链接到:

objcopy -I binary -B i386 -O elf64-x86-64 \
  --rename-section .data=.mydata,readonly,contents src dst.o
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将自定义数据嵌入到不会被 ld.so 映射的 ELF 文件中 的相关文章

  • C# - 如何调用添加到项目解决方案中的exe

    所以我在我的项目解决方案中添加了一个 EXE EXE 执行一些操作并通过 stdout 输出数据 我想捕获输出 但更重要的是如何在程序中执行该 EXE Process p new Process p StartInfo UseShellEx
  • 从 ELF 目标文件转储 C 结构大小

    如何使用调试符号从 ELF 目标文件中提取所有 C 结构的大小 可以使用 print sizeof some struct 从 GDB 获取各个结构大小 但我需要的是获取所有结构的列表 我查看了 nm 和 objdump 但没有看到执行我正
  • 如何更改 Visual Studio 2012 (C++) 中的默认 .exe 图标

    我想知道是否有办法更改 VS2012 在编译我的应用程序时生成的默认图标 对于那些想知道的人 我正在尝试更改 exe 程序的图标 而不是窗口左上角和开始菜单上的窗口图标 我已经知道该怎么做了 我一直在谷歌搜索这个 它总是显示如何更改窗口图标
  • 获取精灵部分偏移量

    我正在尝试获取 elf 文件每个部分的偏移量和数据 我已经有了包含以下代码的部分名称 include
  • 如何将 Erlang 程序编译成独立的 Windows 可执行文件?

    Last fm 的理查德在metabrew http www metabrew com has 将他的应用程序移植到 Erlang http www metabrew com article rewriting playdar c to e
  • Pyinstaller 和 cython 应用程序文件太大

    我正在创建可以在我的笔记本电脑上运行而无需安装 Python 的可执行文件 下面的工作完美 pyinstaller r file a so dll file a so r file b so dll file b so F bin hell
  • 程序可以读取自己的 elf 部分吗?

    我想使用 ld 的 build id 选项来将构建信息添加到我的二进制文件中 但是 我不确定如何在程序中提供此信息 假设我想编写一个程序 每次发生异常时都会写入回溯 以及一个解析此信息的脚本 该脚本读取程序的符号表并搜索回溯中打印的地址 我
  • 在剥离的 ELF 可执行文件中设置断点

    我有一个 ELF 32 位动态链接 剥离文件 我希望对其进行调试 尝试在某个地址设置断点时 出现一条消息 提示符号表未加载 我的问题是 当你说 ELF 文件是stripped究竟发生了什么 如何剥离 ELF 文件 是否可以以某种方式重建符号
  • 如何保护 Java/Javafx 代码不被最终用户看到?

    我一个人在一家公司做一个项目已经两年多了 该项目是一个非常大的项目 使用 rxtx 与硬件设备进行通信 我使用 Java 8 和 JAVAFX 作为 UI 现在它几乎完成了 我开始搜索如何交付公司将分发给其客户的最终用户应用程序 问题是 我
  • Windows 中什么是零字节可执行文件

    我注意到在安装某些应用程序期间创建的文件夹 USERPROFILE AppData Local Microsoft WindowsApps 中有一些零字节可执行文件 这些是什么 如何像Windows一样创建和调用它 谢谢 GameBarEl
  • ELF的基址

    我正在尝试查找 ELF 文件的基地址 我知道您可以使用 readelf 来查找程序入口点和不同部分的详细信息 基址 大小 标志等 例如 x86 架构的程序通过链接器基于 0x8048000 使用 readelf 我可以看到程序入口点 但输出
  • 符号查找错误未定义符号,但所有符号似乎都存在

    可执行文件似乎无法解析链接库中的符号 LD DEBUG libs 的相关输出表明加载了正确的库 6557 usr lib libcharon so 0 error symbol lookup error undefined symbol a
  • 访问附加到 ELF 二进制文件的数据

    我有一个静态 ELF 二进制文件 它从 zip 文件中读取数据 为了简化分发 我想将 zip 文件附加到二进制文件中 如下所示 cat mydata zip gt gt mybinary 我知道这样做不会损坏 mybinary 但我不知道如
  • 如何在 hash-bang 可执行文件中引用本地 ruby​​?

    我有一个 Ruby 可执行文件 它是一个捆绑器 binstub 它以 usr bin env ruby 在我的服务器上 我通过 RVM 安装了 Ruby 193 which ruby gt home dtuite rvm rubies ru
  • 如何将 VBScript 转换为可执行 (EXE) 文件? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我四处寻找转换 VBScript 的信息 vbs 到可执行文件 并意识到大多数可用的工具实际上是将脚本包装在可执行文件中 尝试了一些工
  • 为什么 objdump 不显示 .bss、.shstratab、.symtab 和 .strtab 部分?

    我目前正在用 C 语言实现我自己的 objdump 实现 For my s选项 我必须显示 ELF 文件各部分的完整内容 我做得很好 但我显示的部分比 真正的 objdump 更多 事实上 它并没有输出 bss shstrtab symta
  • 使用 Pyinstaller 将 Django 项目转换为 .exe - 缺少模块、ModuleNotFoundError

    我正在使用 Pyinstaller 将 Django 项目转换为 exe 文件 我希望能够只需单击一个图标并在浏览器中打开该项目 这是我的文件夹结构 proj pycache proj pycache init py manage py D
  • 将静态链接的 elf 二进制文件转换为动态链接的

    我有一个 elf 二进制文件 它已静态链接到 libc 我无权访问其 C 代码 我想使用 OpenOnload 库 它在用户空间中实现了套接字 因此与标准 libc 版本相比提供了更低的延迟 OpenOnload 实现标准套接字 api 并
  • 如何在eclipse中生成java项目的可执行文件[重复]

    这个问题在这里已经有答案了 我正在尝试为我的 Java 应用程序创建一个可执行文件 但我不知道该怎么做 我知道如何生成可执行 jar 文件 但我想制作一个可执行应用程序 我正在使用 eclipse indigo 来制作 java 应用程序并
  • 更改 elf 调试信息中列出的源文件

    基本上我希望能够更改 elf 二进制文件中 debug dwarf 部分中源文件的路径 基本上我希望能够更改 elf 二进制文件中 debug dwarf 部分中源文件的路径 什么东西阻止你 该路径存储在 debug str二进制文件的一部

随机推荐