我被告知要使用反汇编程序.是否gcc有建于什么?最简单的方法是什么?
GNU汇编程序似乎有一些方法可以控制为某些指令发出的操作码的替代形式.例如
.intel_syntax noprefix
mov eax, ecx
mov.s eax, ecx
Run Code Online (Sandbox Code Playgroud)
处理上面的代码as test.s -o test.o && objdump -d test.o -M intel给出了以下反汇编:
0: 89 c8 mov eax,ecx
2: 8b c1 mov eax,ecx
Run Code Online (Sandbox Code Playgroud)
我们可以看到.s后缀似乎将89操作码切换到8b版本(并适当地更改了ModRM字节).
这种语法在GAS中如何工作?我找不到任何相关文件.
可能重复:
反汇编,修改然后重新组装Linux可执行文件
我被告知装配和拆卸不是反转.显然,你不能解组程序,将输出直接放入汇编程序,并期望它能够正确运行,因为信息丢失了.
我的问题是,为什么信息会丢失?还有什么信息丢失了?