zl程序教程

您现在的位置是:首页 >  其它

当前栏目

反汇编 (四)

反汇编
2023-09-14 09:09:28 时间

反汇编
这里插播一段反汇编的讲解。引入调试器和反汇编工具,我们后续将有更多机会对程序进行深入的分析,现阶段,我们先找一个简单的程序上手,熟悉一下操作和工具。

先安装gdb:

$ sudo apt-get install gdb -y

然后,我们把这个程序,保存为test.asm:

global main

main:
    mov eax, 1
    mov ebx, 2
    add eax, ebx
    ret

然后编译:

$ nasm -f elf test.asm -o test.o ; gcc -m32 test.o -o test

运行:

$ ./test ; echo $?
3

OK,到这里,程序是对的了。开始动刀子,使用gdb:

$ gdb ./test

启动之后,你会看到终端编程变成这样了:

(gdb) 

OK,说明你成功了,接下来输入,并回车:

(gdb) set disassembly-flavor intel

这一步是把反汇编的格式调整称为intel的格式,稍后完事儿后你可以尝试不用这个设置,看看是什么效果。好了,继续,反汇编,输入命令并回车:

(gdb) disas main
Dump of assembler code for function main:
   0x080483f0 <+0>: mov    eax,0x1
   0x080483f5 <+5>: mov    ebx,0x2
   0x080483fa <+10>:    add    eax,ebx
   0x080483fc <+12>:    ret    
   0x080483fd <+13>:    xchg   ax,ax
   0x080483ff <+15>:    nop
End of assembler dump.
(gdb) 

好了,整个程序就在这里被反汇编出来了,请你先仔细看一看,是不是和我们写的源代码差不多?(后面多了两行汇编,你把它们当成路人甲看待就行了,不用理它)。