反匯編器
較老的可下載的免費版本:http://go.yurichev.com/17031
短熱鍵列表(第977頁)
調試器
70.1 tracer
我用tracer代替調試器。
我最終不再使用調試器是因為我所需要的只是在代碼執行的時候找到函數的參數,或者寄存器在某點的狀態。每次加載調試器的時間太長,因此我編寫了一個小工具tracer。它有控制臺接口,運行在命令行下,允許我們給函數下斷,查看寄存器狀態,修改值等等。
但出于學習的目的更建議在調試器中手動跟蹤代碼,觀察寄存器狀態是怎么變化的(比如經典的SoftICE,Ollydbg,Windbg寄存器值發生變化會高亮),手動修改標志位,數據然后觀察效果。
70.2 OllyDbg
非常流行的win32用戶態調試器 http://go.yurichev.com/17032 短熱鍵列表(第977頁)
70.3 GDB
GDB在逆向工程師中并不非常流行,但用起來非常舒適。部分命令(第978頁)
系統調用跟蹤
71.0.1 stace/dtruss
顯示當前進程的系統調用(第697頁)。比如:
#!bash
# strace df -h
...
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/lib/i386-linux-gnu/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\220\232\1\0004\0\0\0"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=1770984, ...}) = 0
mmap2(NULL, 1780508, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb75b3000
Mac OS X 的dtruss也有這個功能。
Cygwin也有strace,但如果我理解正確的話,它只為cygwin環境編譯exe文件工作。
反編譯器
只有一個已知的,公開的,高質量的反編譯C代碼的反編譯器:Hex-Rays
其他工具
Microsoft Visual Studio Express1:Visual Studio精簡版,方便做簡單的實驗。部分有用的選項(第978頁)
Hiew:適用于二進制文件小型修改
binary grep:大量文件中搜索常量(或者任何有序字節)的小工具,也可以用于不可執行文件:GitHub