相关疑难解决方法(0)

如何在Linux上检查ELF文件的数据部分的内容?

我一直在使用objdumpLinux ELF二进制文件中的汇编代码.

有时会通过存储在rodata(只读数据)部分中的跳转表进行间接跳转.

如何获取objdump或任何其他工具向我显示此数据部分的内容?

我可以执行程序并检查调试器中的相关地址,但我不想这样做,因为它必须以交互方式完成.

理想的答案将确定一个工具,不仅可以向我显示内容,还可以让我控制显示格式od.

linux elf object-code objdump

66
推荐指数
3
解决办法
8万
查看次数

ELF文件格式中节和段的区别是什么

来自wiki 可执行文件和可链接格式:

这些段包含运行时执行文件所必需的信息,而段包含用于链接和重定位的重要数据.整个文件中的任何字节最多只能由一个部分拥有,并且可能存在不属于任何部分的孤立字节.

但是段和段之间有什么区别?在可执行的ELF文件中,段是否包含一个或多个部分?

linux debian gnu elf abi

60
推荐指数
3
解决办法
2万
查看次数

内核如何获得在linux下运行的可执行二进制文件?

内核如何获得在linux下运行的可执行二进制文件?

这似乎是一个简单的问题,但任何人都可以帮助我深入挖掘?如何将文件加载到内存以及如何启动执行代码?

任何人都可以帮助我,一步一步地告诉我们发生了什么吗?

c linux

26
推荐指数
4
解决办法
1万
查看次数

GCC创建共享对象而不是可执行二进制文件

我有一个正在建设的图书馆.当我运行以下任何一个时,我的所有对象都会连续编译和链接: ar rcs lib/libryftts.a $^

gcc -shared $^ -o lib/libryftts.so

在我的Makefile中.我也能够成功安装它们/usr/local/lib 当我用nm测试文件时,所有的功能都在那里.我的问题是,当我跑步gcc testing/test.c -lryftts -o test && file ./testgcc testing/test.c lib/libryftts.a -o test && file ./test 它说:

test: ELF 64-bit LSB shared object而不是test: ELF 64-bit LSB executable像我期望的那样.我究竟做错了什么?

c gcc shared-libraries static-libraries

22
推荐指数
2
解决办法
1万
查看次数

如何在 Linux 中创建静态链接位置无关的可执行 ELF?

我有一个独立的 Linux 独立 x86_64 hello world 工作岗位:

电源

.text
.global _start
_start:
asm_main_after_prologue:
    /* Write */
    mov $1, %rax    /* syscall number */
    mov $1, %rdi    /* stdout */
    lea msg(%rip), %rsi  /* buffer */
    mov $len, %rdx  /* len */
    syscall

    /* Exit */
    mov $60, %rax   /* syscall number */
    mov $0, %rdi    /* exit status */
    syscall
msg:
    .ascii "hello\n"
len = . - msg
Run Code Online (Sandbox Code Playgroud)

我可以组装和运行:

as -o main.o main.S
ld -o main.out main.o
./main.out
Run Code Online (Sandbox Code Playgroud)

由于RIP …

linux gnu-assembler elf ld

5
推荐指数
1
解决办法
1921
查看次数