【反編譯系列】四、反編譯so文件(IDA_Pro)


版權聲明:本文為HaiyuKing原創文章,轉載請注明出處!

概述

  安卓應用程序的開發語言是java,但是由於java層的代碼很容易被反編譯,而反編譯c/c++程序的難度比較大,所以現在很多安卓應用程序的核心部分都使用NDK進行開發。使用NDK開發能夠編譯c/c++程序,最終生成so文件。而so文件是一個二進制文件,我們是無法直接分析so文件的,所以這里需要用到一個反編譯工具IDA Pro。IDA Pro能夠對so文件進行反匯編,從而將二進制代碼轉化為匯編語言,利用IDA Pro神奇的F5功能還能將匯編語言反編譯成c/c++程序。

--摘自《安卓逆向學習筆記 (3)- 使用IDA Pro靜態分析so文件

下載

鏈接: https://pan.baidu.com/s/1c3R6iZY 密碼: tvsn

備用鏈接:https://pan.baidu.com/s/1MvisS6uzwnR9hiAcA2Fz8g 密碼:kljo

下載IDA_Pro_v7.0_Portable.zip即可。

安裝

直接解壓縮即可。

注意:綠色版解壓縮路徑不要含有中文或者路徑長度不能超過72字符。(python模塊自身的bug)

使用

雙擊ida64.exe,打開軟件IDA Pro

本來按照我的理解,如果想要反編譯的so文件是在arm64-v8a目錄下,則只能打開ida64.exe文件;如果想要反編譯的so文件是在armeabi目錄下,則只能打開ida.exe文件。但是我這邊的測試結果時:

ida64.exe:打開arm64-v8a目錄下的so文件正常(可以找到調用的方法名),打開armeabi目錄下的so文件不正常(無法找到調用的方法名);

ida.exe:打開arm64-v8a目錄下的so,打開armeabi目錄下的so文件都不正常(無法找到調用的方法名);

所以我目前的操作是雙擊打開ida64.exe,然后反編譯arm64-v8a目錄下的so文件!

將so文件拖拽到上面的空白區域,選擇”ELF64 for ARM64(Shared object)[elf64.ldw]”選項,然后再點擊ok按鈕

注意,因為我雙擊打開的是ida64.exe,所以需要打開的so文件是arm64-v8a目錄中的,不能是armeabi目錄中的。(以HelloWorld項目為例)

等待一段時間后,我們就能看到反匯編so文件所得到的匯編代碼了。

定位到想要查看的函數(一般先定位到項目中調用的第一個函數,比如HelloWorld項目中的stringFromJNI方法

按鍵盤上的F5,就可以將匯編代碼轉換為C代碼

源代碼如下:

退出(默認即可)

參考資料

安卓逆向學習筆記 (3)- 使用IDA Pro靜態分析so文件

[Disassemblers] IDA Pro 7.0 綠色版

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM