mri*_*ing 3 x86 assembly nasm elf disassembly
我反汇编了编译非常简单的源文件test.c的代码,它看起来像这样:
void main() {}
Run Code Online (Sandbox Code Playgroud)
这就是我得到的:
gcc -c test.c
ld -o test -Ttext 0x0 -e main test.o
objcopy -R .note -R .comment -S -O binary test test.bin
ndisasm -b 32 test.bin
Run Code Online (Sandbox Code Playgroud)
前四行的所有目的是什么?为什么它会添加到eax指向的内存位置,2*eax,edx + 0x52,比较等等?这是关于检查程序是否正确执行或其他什么?
unw*_*ind 11
我相信你有一些不是代码的反汇编,这就是为什么它没有多大意义.
为了得到一个什么样的文件可能包含一个想法,我会建议运行objdump的全二进制(ELF),看看你是否可以识别任何部分的上方字节序列.