通过一个例子介绍 IDA pro 的简单使用
From:通過一個例子介紹IDA pro的簡單使用 - 知乎
IDA pro 7.6 綠色便攜版:http://www.ddooo.com/softdown/215615.htm
配置IDA使用Anaconda環境解決Please run idapyswitch to confirm or change the used Python runtime:https://www.pythonheidong.com/blog/article/1034670/2ecf46d7e5bc0c54991b/
通過一個簡單的題來了解一下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)
總結
以上是生活随笔為你收集整理的通过一个例子介绍 IDA pro 的简单使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java Web开发技术详解~MIME类
- 下一篇: windows 的 wsl 命令