From:https://zhuanlan.zhihu.com/p/80751993
IDA_Pro_v7.2_Hgl+F5+x86+aarch64:鏈接:https://pan.baidu.com/s/1wGYAORBUbqOsohuQLnNfiw 提取碼: t2ci
通過一個簡單的題來了解一下IDA的基本操作,題目是bugku的一個簡單的逆向,Easy_re。
將題目下載下來,發現是一個exe可執行文件,先運行一下看看
有一些字符串提示,讓你輸入一個字符串,提示輸入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)