通过一个例子介绍 IDA pro 的简单使用
From:通過(guò)一個(gè)例子介紹IDA pro的簡(jiǎn)單使用 - 知乎
IDA pro 7.6 綠色便攜版:http://www.ddooo.com/softdown/215615.htm
配置IDA使用Anaconda環(huán)境解決Please run idapyswitch to confirm or change the used Python runtime:https://www.pythonheidong.com/blog/article/1034670/2ecf46d7e5bc0c54991b/
通過(guò)一個(gè)簡(jiǎn)單的題來(lái)了解一下IDA的基本操作,題目是bugku的一個(gè)簡(jiǎn)單的逆向,Easy_re。
將題目下載下來(lái),發(fā)現(xiàn)是一個(gè)exe可執(zhí)行文件,先運(yùn)行一下看看
有一些字符串提示,讓你輸入一個(gè)字符串,提示輸入flag,隨便輸入幾個(gè)字符,看一下有什么提示。
然后開(kāi)始進(jìn)入分析階段,首先通過(guò)Detect It Easy這個(gè)軟件查看一下程序的基本信息。
這一步我們主要想看一下程序時(shí)32位還是64位的,通過(guò)上圖可以看到程序?qū)儆?2位程序。然后我們通過(guò)IDA對(duì)程序進(jìn)行分析,IDA是一個(gè)靜態(tài)反編譯軟件,用來(lái)靜態(tài)的分析軟件,我們?cè)?2位的IDA中打開(kāi)re1.exe(如果程序時(shí)64位的需要用64位的IDA打開(kāi)),他會(huì)彈出彈窗,這里不用管,一路點(diǎn)“是(或者ok)”就行了,然后界面如下。
一進(jìn)來(lái),最大的那片區(qū)域?yàn)榉磪R編窗口,左邊為函數(shù)窗口,在反匯編窗口按空格鍵,會(huì)在圖形視圖和列表視圖之間切換。然后分析程序一般先從字符串入手,打開(kāi)字符串窗口,View --> open subviews --> Strings,或者快捷鍵shift+F12。
程序中往往包含很多字符串資源,這些資源存在于PE文件的rdata段,可以看到運(yùn)行程序時(shí)出現(xiàn)過(guò)的“DUTCTF”字符串,雙擊它找到他的位置
可以看到aDutctf字符串周圍還有很多字符串,我們把它們都變成可顯示字符,結(jié)果如下,由于本題比較簡(jiǎn)單,所以直接出現(xiàn)了flag。
當(dāng)然,本文是為了介紹IDA的使用,所以我們繼續(xù)往下分析,找到關(guān)鍵的字符串后,在字符串的位置,按快捷鍵x,查看程序在哪里引用了它,比如這道題沒(méi)有給出flag,我們需要在提示信息處(也就是aDutctf的位置)按快捷鍵x,可以看到只有一處引用了它。
我們跟進(jìn)去看一下,找到了引用它的位置,這一步是為了找到程序的主要邏輯在哪,因?yàn)橛袝r(shí)候IDA可能分析不出函數(shù)名來(lái),你就沒(méi)辦法通過(guò)左邊的函數(shù)窗口定位程序的主要邏輯位置,也有可能程序的主要邏輯不在main函數(shù)里,在一個(gè)其他的函數(shù)里。
所以說(shuō),先運(yùn)行程序,找到程序運(yùn)行時(shí)出現(xiàn)的提示字符,然后定位提示字符出現(xiàn)的位置,用這樣的方法來(lái)找程序的主要邏輯比較靠譜一些。
找到了關(guān)鍵位置后,發(fā)現(xiàn)是一堆匯編代碼,看不懂怎么辦?IDA的強(qiáng)大之處還在于他可以將分析的程序以偽代碼的形式給出,快捷鍵為F5(不是所有程序都能以偽代碼的形式顯示,也不是所有函數(shù)都能以偽代碼的形式顯示,如果沒(méi)辦法顯示偽代碼,那只能剛匯編了),下一步就是分析程序的邏輯了,至于怎么分析,這里就不多贅述了。
在關(guān)閉IDA的時(shí)候他會(huì)提示你是否保存database,你可以選擇保存,下次用IDA打開(kāi)這個(gè)程序的時(shí)候可以加載這個(gè)數(shù)據(jù)庫(kù),里面保存了你上次的操作。
下面給出了一些常用的快捷鍵
參考:IDA Pro權(quán)威指南 (第2版)
加入極客方舟逆向新手群(365990646)
總結(jié)
以上是生活随笔為你收集整理的通过一个例子介绍 IDA pro 的简单使用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Java Web开发技术详解~MIME类
- 下一篇: scrapy-redis 配置 sett