首先介绍两个工具,一个是反汇编工具PE Explore, 可以用免费的体验版,用它打开exe,然后在菜单中运行disassmble. 就会出来x86机器码, 可以看到程序都是x86指令和Windows API dll 调用。只要你能看到懂,任何程序都是开源的。 但是非常难看懂,就看你的水平了。
另一个是gdb.exe,是gnu gdb的win32 port。这个是主要用来debug的工具。和PE Explore无关,PEE只是为了看汇编程序更简单而已。 在command line运行gdb,
以跟踪firefox为例,
(gdb) cd c:\program files\...\firefox
(gdb) file firefox.exe
(gdb) info file
Symbols from "c:\Program Files\Mozilla Firefox/firefox.exe".
Local exec file:
`c:\Program Files\Mozilla Firefox/firefox.exe', file type pei-i386.
Entry point: 0x4015a0
0x00401000 - 0x00402000 is .text
0x00402000 - 0x00402a00 is .rdata
0x00403000 - 0x00403200 is .data
0x00404000 - 0x0044b600 is .rsrc
0x0044c000 - 0x0044c600 is .reloc
(gdb) b *0x4015a0 -- 只是设置断点,设在了程序的开始
(gdb) run
Starting program: c:\Program Files\Mozilla Firefox/firefox.exe
Breakpoint 1, 0x004015a0 in ?? ()
(gdb) info reg -- 看寄存器
(gdb) x/i $pc -- 反汇编 (当然用PEE看更好)
(gdb) x/a 0x004015a -- 查看内存
(gdb) si -- 单步执行
能设置断点,可以看reg,可以看mem,可以step, 基本功能就有了,接下来就可以调试程序了。
没有评论:
发表评论