通過乙個例子介紹 IDA pro 的簡單使用

2021-10-06 19:15:37 字數 2095 閱讀 5550

from:

通過乙個簡單的題來了解一下ida的基本操作,題目是bugku的乙個簡單的逆向,easy_re。

有一些字串提示,讓你輸入乙個字串,提示輸入flag,隨便輸入幾個字元,看一下有什麼提示。

然後開始進入分析階段,首先通過detect it easy這個軟體檢視一下程式的基本資訊。

這一步我們主要想看一下程式時32位還是64位的,通過上圖可以看到程式屬於32位程式。然後我們通過ida對程式進行分析,ida是乙個靜態反編譯軟體,用來靜態的分析軟體,我們在32位的ida中開啟re1.exe(如果程式時64位的需要用64位的ida開啟),他會彈出彈窗,這裡不用管,一路點「是(或者ok)」就行了,然後介面如下。

一進來,最大的那片區域為反彙編視窗,左邊為函式視窗,在反彙編視窗按空格鍵,會在圖形檢視和列表檢視之間切換。然後分析程式一般先從字串入手,開啟字串視窗,view --> open subviews --> strings,或者快捷鍵shift+f12

程式中往往包含很多字串資源,這些資源存在於pe檔案的rdata段,可以看到執行程式時出現過的「dutctf」字串,雙擊它找到他的位置

可以看到adutctf字串周圍還有很多字串,我們把它們都變成可顯示字元,結果如下,由於本題比較簡單,所以直接出現了flag。

當然,本文是為了介紹ida的使用,所以我們繼續往下分析,找到關鍵的字串後,在字串的位置,按快捷鍵x,檢視程式在**引用了它,比如這道題沒有給出flag,我們需要在提示資訊處(也就是adutctf的位置)按快捷鍵x,可以看到只有一處引用了它。

我們跟進去看一下,找到了引用它的位置,這一步是為了找到程式的主要邏輯在哪,因為有時候ida可能分析不出函式名來,你就沒辦法通過左邊的函式視窗定位程式的主要邏輯位置,也有可能程式的主要邏輯不在main函式裡,在乙個其他的函式裡。

所以說,先執行程式,找到程式執行時出現的提示字元,然後定位提示字元出現的位置,用這樣的方法來找程式的主要邏輯比較靠譜一些。

找到了關鍵位置後,發現是一堆彙編**,看不懂怎麼辦?ida的強大之處還在於他可以將分析的程式以偽**的形式給出,快捷鍵為f5(不是所有程式都能以偽**的形式顯示,也不是所有函式都能以偽**的形式顯示,如果沒辦法顯示偽**,那只能剛彙編了),下一步就是分析程式的邏輯了,至於怎麼分析,這裡就不多贅述了。

在關閉ida的時候他會提示你是否儲存database,你可以選擇儲存,下次用ida開啟這個程式的時候可以載入這個資料庫,裡面儲存了你上次的操作。

下面給出了一些常用的快捷鍵

參考:ida pro權威指南 (第2版)

加入極客方舟逆向新手群(365990646)

LineDDA的乙個例子

unit unit1 inte ce uses windows,messages,sysutils,variants,classes,graphics,controls,forms,dialogs,extctrls,stdctrls,buttons type tfmmain class tform ...

SQL GROUP CONCAT的乙個例子

我有乙個這樣的資料庫 user info 現在有乙個需求是把這樣 9 條記錄按照 username 來 group 成3條記錄 目標 shu female 201 lee male 202 yuki female 181 如果用select from user info group by usern...

explode的乙個例子

select level as level,explode split 1,2,3 as value 可以生成結果 level value level 1 level 2 level 3 lateral view 1.lateral view 用於和udtf函式 explode,split 結合來使...