1. 程式人生 > >Android安全/應用逆向--28--使用IDA動態除錯.so檔案

Android安全/應用逆向--28--使用IDA動態除錯.so檔案

7-5、使用IDA動態除錯.so檔案

一、應用體系架構:動態分析分析什麼?

程式碼安全分析。有無被篡改,盜版等風險,是否容易被反編譯,重打包。

元件安全分析。四大元件和通訊Intent分析,以及他們許可權使用不當帶來的問題。

儲存安全分析。對儲存的私有檔案,證書檔案,資料庫檔案進行安全驗證分析,尤其是明文資料。

通訊安全分析。通訊傳輸中的加密等問題。

漏洞分析。有無安全漏洞以及漏洞危害。

系統安全分析。有無系統缺陷。

工具:IDA(32位/非常重要)。以下步驟基本可以繞過反除錯了,反除錯在後邊有說明

一、架設除錯橋

1、上傳IDA除錯伺服器地址:

G:\xxxxxx\IDAPro70\dbgsrv\android_server           //保證IDA和裝置的正常通訊

2、cmd進入到該目錄下: G:\xxxxxxx\IDAPro70\dbgsrv\

3、匯入IDA除錯伺服器:adb push android_server /data/local/tmp

4、adb shell

5、cd到/data/local/tmp下:chmod 777 android_server

6、./android_server(如果失敗重啟手機)

二、部署安卓

1、埠轉發:

adb forward tcp:23946 tcp:23946

2、檢視23946埠的使用情況:

netstat -ano | findstr 23946      //實際中不用檢視,成功轉發了即可

3、adb shell下執行:

am start -D -n com.e.te/com.e.te.MainActivity(包名/啟動頁面)          //啟動頁面不一定是這樣

4、會彈出框

5、抓包進行資訊蒐集,包括關鍵URL、關鍵欄位等。

三、部署IDA(此時開啟IDA就行,點選“go”,不要新增任何東西)

建議開啟兩個IDA介面,一個用於動態除錯,另一個使用者靜態查詢

1、IDA-debugger-Attach-remote ARMlinux/Android debugger

2、填入IP(localhost/127.0.0.1)、密碼沒有不用填,儲存預設網路設定

3、高階設定:左邊345,右邊:235,下面:3。儲存設定

4、點選要除錯的包名選入

5、此時相關的應用程式將顯示紅色蜘蛛

四、開始除錯

1、在IDA中點選執行(此步驟非常重要) //也可以先執行第二步

2、輸入命令:

jdb -connect com.sun.jdi.SocketAttach:port=8700,hostname=localhost 
//新建命令執行

3、點選debugger-debugger windows-module list,並在視窗找到要除錯的程式

4、在IDA中暫停除錯按鈕,暫停當前除錯。F9重新開始除錯

5、在找到的要除錯的程式下,繼續尋找我們需要下斷點的函式處。此時so已經載入進來,先獲取JNI_OnLoad函式的絕對地址。Ctrl+s即可找到基地址,靜態搜尋關鍵字即可得到先相對地址,相加即可得到絕對地址,然後跳轉到絕對地址即可。注意下斷點

6、在彙編程式碼處,按下alt+T,搜尋斷點函式名

7、下斷點,執行IDA,如果在斷點處停止,說明已經可以進行斷點動態除錯

8、重點在libc.so中下斷點,因為該檔案是C層中最基本的函式庫,libc中封裝了io、檔案、socket等系統基本呼叫。也可以是linker.so或者libdvm.so中下斷點

五、除錯WebViewApp

1、chrome外掛除錯,類似於firebug。按F12可以召喚該工具

2、WebView已知漏洞

A、遠端程式碼執行漏洞。是webview中使用了javascriptInterface造成的,讓遠端網頁執行本地命令。

B、UXSS漏洞。通用型XSS是一種利用瀏覽器或瀏覽器擴充套件漏洞來製造產生XSS的條件並執行程式碼的一種攻擊型別,導致瀏覽器全域性遠端執行命令,繞過同源策略,竊取使用者資料,劫持使用者等危害。

3、網路釣魚(涉及二維碼安全)。SQL注入攻擊。