<dd id="sga4y"><optgroup id="sga4y"></optgroup></dd>
<nav id="sga4y"><code id="sga4y"></code></nav>
  • <optgroup id="sga4y"></optgroup>

    原文地址:http://drops.wooyun.org/binary/7620

    第69章

    反匯編器

    69.1 IDA

    較老的可下載的免費版本:http://go.yurichev.com/17031

    短熱鍵列表(第977頁)

    第70章

    調試器

    70.1 tracer

    我用tracer代替調試器。

    我最終不再使用調試器是因為我所需要的只是在代碼執行的時候找到函數的參數,或者寄存器在某點的狀態。每次加載調試器的時間太長,因此我編寫了一個小工具tracer。它有控制臺接口,運行在命令行下,允許我們給函數下斷,查看寄存器狀態,修改值等等。

    但出于學習的目的更建議在調試器中手動跟蹤代碼,觀察寄存器狀態是怎么變化的(比如經典的SoftICE,Ollydbg,Windbg寄存器值發生變化會高亮),手動修改標志位,數據然后觀察效果。

    70.2 OllyDbg

    非常流行的win32用戶態調試器 http://go.yurichev.com/17032 短熱鍵列表(第977頁)

    70.3 GDB

    GDB在逆向工程師中并不非常流行,但用起來非常舒適。部分命令(第978頁)

    第71章

    系統調用跟蹤

    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文件工作。

    第72章

    反編譯器

    只有一個已知的,公開的,高質量的反編譯C代碼的反編譯器:Hex-Rays

    http://go.yurichev.com/17033

    第73章

    其他工具

    Microsoft Visual Studio Express1:Visual Studio精簡版,方便做簡單的實驗。部分有用的選項(第978頁)

    Hiew:適用于二進制文件小型修改

    binary grep:大量文件中搜索常量(或者任何有序字節)的小工具,也可以用于不可執行文件:GitHub

    97av