【轉】IDA Pro 初探
IDA Pro(https://yunpan.360.cn/surl_yFS4HRAez3H (提取碼:0b3d))
是一款強大的反彙編軟體,特有的IDA檢視和交叉引用,可以方便理解程式邏輯和快速定位程式碼片斷,以方便修改。
這裡寫圖片描述
**IDA檢視**
示例程式
下面會通過修改示例程式的輸出字串,來講解如何使用IDA Pro。
#include
main()
{
int n;
scanf ("%d",&n);
if (n > 0)
printf("a > 0"); //後面會用IDA Pro把'a'改成'n'
else
printf("n < 0");
}
編譯後的程式下載:demo
執行IDA Pro
執行IDA Pro,並使用PE檔案的方式開啟示例的test.exe檔案。IDA Pro會新建一個工程,並開始反彙編程式。反彙編完成後,在[IDA-View]視窗中,可以看到程式邏輯的樹形圖,如下:
這裡寫圖片描述
樹形圖把條件分支清晰地顯示出來了。左下角有IDA檢視的縮圖,在上面點選可以快速定位到檢視的指定位置。 IDA的View有幾個按鈕對定位程式碼很重要,如下圖所示:
這裡寫圖片描述
從上到下分別是:
Open exports window:開啟匯出視窗
Open import window:開啟匯入視窗
Open names window:函式和引數的命名列表
Open functions window:程式呼叫的所有函式視窗
Open strings window:開啟字串顯示視窗,會列出程式中的所有字串,該視窗有助於你通過程式的執行輸出逆向找出對應的程式碼片斷。
定位程式碼片斷
假設我們現在接到個任務,需修正程式,把輸出“a > 0”修正為“n > 0”。示例程式比較簡單,直接看IDA檢視我們就能找到需修改的程式碼片斷,但實際處理時,可能程式有幾m大,通過一個個看IDA檢視已沒法有效找到相關的執行程式碼片斷,這時怎麼辦? 使用字串視窗和IDA強大的交叉引用! 點選View裡的[Open strings windows]按鈕,可以看到如下的程式字串:
這裡寫圖片描述
程式的字串較少,可以很快地看到我們需要的字串“a > 0”在資料段00403003位置。假如字串多到已不能肉眼定位查詢,因為字串視窗是沒有查詢功能的,這時需要藉助其他的文字編輯器,如notepad,editplus等。在字串視窗內右鍵,選擇選單[copy]命令,會把字串視窗的所有內容複製到剪貼簿,再貼上到記事本中查詢就可以了。 雙擊字串視窗的該行字串,會跳轉到IDA檢視的00403003位置,如下圖所示:
這裡寫圖片描述
單擊’a > 0’中的a,a會高亮,
這裡寫圖片描述
最後定位的程式碼片斷,上圖顯示的彙編指令即是我們要找的程式碼片斷,這時點選[Hex View-A]視窗,會切換到二進位制瀏覽模式,並高亮了彙編程式碼的二進位制格式指令,如下圖所示:
這裡寫圖片描述
已找到需修改的程式碼片斷,剩下的只需把a改成n。
修改程式檔案
在IDA中,可以在[Hex View-A]視窗右鍵選擇[Edit]來修改二進位制指令。修改後通過右鍵選擇[Commit Change]可以看到修改後的IDA檢視。但需要注意的是,這種方式的修改並不會更新原始程式檔案,實際只是修改了IDA的專案檔案!IDA中只適合做一些驗證性的修改,確保正確後再使用其他工具修改原始程式檔案。 在IDA中驗證修改正確後,可以使用UltraEdit或Hex Workshop來修改原始程式檔案。下面會以UltraEdit為例來說明如何修改。
這裡寫圖片描述
下載好UltraEdit,用UltraEdit直接開啟程式檔案,如上圖所示,UltraEdit會以16進位制模式顯示程式檔案。UltraEdit顯示的地址和IDA顯示的地址是不同的,為了找到對應程式碼片斷在UltraEdit中的實際地址,需要使用到UltraEdit的查詢功能。在IDA中複製需修改的16進位制模式顯示的指令,在UltraEdit中開啟查詢,貼上並查詢該16進位制字串,UltrEdit會很快定位到該指令處,如下圖所示:
這裡寫圖片描述
找到了UltraEdit的對應位置 現在我們要把“a > 0”改成“n > 0”,a對應的ASCII碼是61,而n對應的ASCII碼是6E,只需把61改成6E就可以了,修改後儲存。
這裡寫圖片描述
再次執行,可以看到結果已改變!
這裡寫圖片描述
示例只是修改了字串,只需更改資料段內容就可以了,不用更改指令。假如需要更改指令,需要參考指令集的指令操作表寫出對應指今的16進位制形式,再修改。
作者:牧碼人小鵬
連結:https://www.jianshu.com/p/dd49eb38609f
來源:簡書
簡書著作權歸作者所有,任何形式的轉載都請聯絡作者獲得授權並註明出處。
相關文章
- [IDA PRO] RVA 外掛
- ida pro 7.5反編匯程式
- 互動式反彙編ida pro
- 《IDA pro權威指南》閱讀筆記筆記
- IDA Pro for Mac(最強反彙編工具)Mac
- 攻防世界 gametime 使用IDA pro+OD動調GAM
- 3.1 IDA Pro編寫IDC指令碼入門指令碼
- 【已安裝】IDA Pro 7 for Mac 啟用使用Mac
- IDA Pro for Mac(靜態反編譯軟體)Mac編譯
- IDA Pro for Mac 靜態反編譯軟體Mac編譯
- Java初探Oracle(轉)JavaOracle
- IDA Pro for Mac /win——靜態反編譯的終極選擇Mac編譯
- 安卓動態除錯七種武器之孔雀翎 – Ida Pro安卓除錯
- 透過QEMU 和 IDA Pro遠端除錯裝置韌體除錯
- ida pro 7破解版!支援mac10.15系統!試試?Mac
- IDA Pro 6.0使用Qt 框架實現了跨平臺的UIQT框架UI
- 靜態分析詐欺術: Windows x86下IDA Pro混淆技巧Windows
- IDA的基本使用
- 深入解析二進位制世界:Hex-Rays IDA Pro forMac/win互動式反彙編工具ORMMac
- 初步認識ida軟體
- ida 升級黑色主題
- 從零開始玩轉PerfDogService---------初探篇Gse
- 從零開始玩轉 PerfDogService---------初探篇Gse
- 初探JavaScript PDF blob轉換為Word docx方法JavaScript
- 如何使用Ida Pro和Core Dump檔案定位崩潰位置(Linux下無除錯符號的程序專享)Linux除錯符號
- 攻防世界 serial-150 IDA動調
- MacX Video Converter Pro for mac(影片轉換工具)MacIDE
- Kigo Video Converter pro for mac 影片轉換工具GoIDEMac
- IDA動態除錯解RC4除錯
- PR語音轉字幕轉換外掛Speech to Text for Premiere Pro 2022REM
- Capture One 22 Pro 影像編輯轉換器APT
- 怎麼旋轉圖片?BenVista PhotoZoom Pro旋轉圖片的方法OOM
- IDA靜態逆向分析模型原理的補充模型
- Puppeteer 初探
- gRPC 初探RPC
- ## RATreeView 初探View
- 初探Firewalld
- Serverless初探Server