ELF代表可执行文件和可链接格式,是包含机器代码的文件的文件格式。
将此玩具代码用作可执行文件和共享库: // main.c 无效 foo() {} int main() { 返回 0; } // 酒吧.c 无效 foo(); 无效酒吧(){ 富(); } 让我们在不进行优化的情况下进行构建,首先...
解析 elf 文件中的 dwarf .debug_info 部分时出现问题
我正在尝试在 C++ 中实现一个矮人解析器,而不使用任何外部依赖项。正如dwarf5标准中提到的,调试信息前4个字节或12个字节表示单元长度 基本上是这样的:
假设我有 liba.so 和 libb.so 并且都定义了符号 foo。为了更好地理解,我们假设这两个库都是从单个文件编译的,并且 foo 是一个 C 函数,如下所示: int foo...
有没有一种方法可以在一般情况下结合 ELF、Mach-O 和 PE 编译代码,这样所有现代系统都可以有一个“二进制”文件? (Windows、macOS、Linux) 我记得有一些古老的故事
JAR 可以包含 java 类可以使用的资源。您可以将图像、xml 文件等捆绑到 JAR 中,并可以在 java 应用程序代码中使用。 可以嵌入吗
如果ELF可执行文件中没有.data部分,GP寄存器设置为多少?
我正在制作一个 RISC-V 64 位模拟器,并为其添加 ELF 文件支持。我在某处读到,您应该分配一个堆栈并在 SP 寄存器中设置一个指向它的指针,同时设置...
当 shellcode 定义为全局变量时,msfvenom bind_tcp shellcode 不起作用
我正在我的Ubuntu上生成bind_tcp shellcode msfvenom -p linux/x64/shell/bind_tcp -b "\x00" -f c RHOST=172.31.31.179 LPORT=1234 我的 C 代码是 #包括 #包括<
LSB 5 禁止同时拥有 SHT_DYNSYM 和 SHT_SYMTAB 部分?
我正在阅读 System V ABI 和 Linux Standard Base 规范中的 ELF 文件。关于符号表部分 System V 说 目前,目标文件每种类型可能只有一个部分,...
错误/lib/x86_64-linux-gnu/libc.so.6:找不到版本“GLIBC_2.34”
首先,我用谷歌搜索了很多,但没有找到与我的情况相关的东西,我有一个 ELF 可执行文件,我试图在我的 Ubuntu WSL 中运行它,我已经更改了权限(chmod +x 文件) ,当我运行它时,t...
如果能够在 ELF 文件中创建自定义部分,那么是否可以将不同 CPU 架构的机器代码转储到同一 ELF 文件的不同部分中,并在运行时映射 co...
我一直试图让我的固件版本在运行时显示。 我尝试使用来自的示例 gcc 是否有任何选项可以在 ELF 二进制文件中添加版本信息? 但没有运气。这就是我...
简短的问题:有没有办法使用 elfread -a 打印函数变量的地址? 说明:我正在一个玩具编译器上做一些工作,它使用 llvm C++ API 生成一个共享库。我
在 SystemV ABI 中指定 PLT 使用方式(并在实践中实现),示意性如下: # 来自代码中某处的调用进入 PLT 槽 #(实际上不是直接的...
我正在使用 SDCC 生成 ELF 文件。然后我将此 ELF 文件转换为二进制文件。遗憾的是,输出并不如预期。输出定位不正确并且有奇怪的零长度
我的理解是—— (1) 符号绑定(全局/本地/弱)由链接器用来将符号的范围限制为其定义的目标文件或链接在一起的其他目标文件/库,...
收到错误:bash:(程序):无法执行二进制文件:Exec 格式错误,在 32 位和 64 位 Windows 上
有一个为语言研究开发的程序(http://people.csail.mit.edu/mcollins/code.html)。当我尝试在 Windows 上使用 Git bash 终端运行解析器时,出现错误: bash:不能
file(1) 实用程序如何区分 ELF 共享对象和 ELF 可执行文件?
问题是,如果你查看 ELF 头文件,ELF 共享库和普通可执行文件根本没有区别。在我的 Linux 机器(Debian 11.4)上,甚至 ELF 标头的 e_type 字段也设置为共享
如何在 ELF 64 位 LSB 可执行文件、x86-64、版本 1 (GNU/Linux)、静态链接、无节头中显示符号
得到一个文件,我不知道如何列出其符号,文件命令说: ]# 文件 ELF 64 位 LSB 可执行文件,x86-64,版本 1 (GNU/Linux),静态链接,无节头 ...
如果动态链接失败,我会收到此错误: / # /经理 /bin/sh: /manager: 未找到 对于普通用户来说,这非常令人困惑,因为 /manager 存在。 现在,经过几个小时的搜索,我发现...
目标:给定一段机器代码,其中包含 RISC-V 扩展指令,我想将其包装为函数并创建一个 .o 目标文件。 该函数类似于 void foo(),没有