【发布时间】:2016-06-02 19:28:48
【问题描述】:
这是关于 linux 中的逆向工程:如果我有一个 .c 文件并用 gdb 编译它,一切都很好。但是如何从可执行文件开始获得相同的结果呢?
我尝试objdump -M intel -D file 进行反汇编,但后来我想再次组装它以便用 gdb 打开它(相反,如果我直接用 gdb 打开可执行文件,我不能做诸如放置断点和查看寄存器之类的事情);我尝试了 nasm 和 gcc,但他们发现语法错误。
【问题讨论】:
-
请注意:NASM 使用 Intel 语法的变体。 GNU 汇编器更喜欢 AT&T 语法。我认为,您的意思是:用 gcc 编译一个 .c 文件,并用 gas(或简称)组装一个文件。
-
在 GDB 中,您可以使用
break设置断点并使用info registers查看寄存器。那么你能否澄清你的问题。 -
但是如果我使用gdb和可执行文件(下载的crackme,不是我自己编译和链接的)我不能设置断点并且(这是重点)我不能查看汇编代码(它说“没有加载符号表”)。
标签: c gdb reverse-engineering objdump