識別應用程式版本#
使用 16 進制編輯器 HxD 查看應用程式版本
可以看到上述應用程式是 32 位元程式,PE 這個詞後面接 PE..L...,如果是 64 位元程式,PE 這個詞後面接 PE..d+。
透過 IDE 查看也可以知道應用程式版本。
既然知道這是個 32 位元程式,那麼就使用 32 位元的 IDA 打開。
打開後,彈出 IDA:Quick strat 視窗
點擊 new,查找目標應用程式,並載入,介面如下:
點擊 OK 即可,這裡不需要任何設定,IDA 會自動識別程式對應的架構。
檢視#
打開後,顯示的視窗如下,載入可執行程式後最先打開的是反組譯視圖。
按空格鍵可以在圖形化和非圖形化的指令列表間切換現實模式。
在 Options-General-Disassembly 中,勾選 Line prefixes 可以顯示圖形視圖中的指令的地址。
一開始效果如下:
修改後
IDA 有多種視圖模式,可以在 view-Open subviews 菜單中看到
函數起點識別#
當在函數起點有多個指向同一地址的引用時,可將最後一次重複作為函數的起點,此處就是 push 0。
保存設定#
通過此設定可以保存當前的各種配置,下次就直接加載此配置。
字符搜索#
在 IDA 包含列表的選項卡中,如 FUNCTIONS, STRINGS, NAMES 等,可以通過 “CTRL+F” 進行搜索,並且根據輸入的字符進行過濾。打開菜單欄 VIEW-OPEN SUBVIEW-STRINGS, 可以搜索到所有包含 “Lu” 的字符串。
打開菜單欄 VIEW-OPEN SUBVIEW-DISASSEMBLY, 可以打開第二個反組譯選項卡顯示與第一個不同的內容。
此處有 3 個反組譯顯示視圖。
打開菜單欄 VIEW-OPENSUBVIEW- HEX DUMP 可以顯示十六進制視圖。
右鍵,可切換成文本模式,也可以按空格鍵盤切換。
文本視圖如下;
打開 view-Open subviews-import 可以查看引用的外部函數