1. 程式人生 > >Android安全/應用逆向--32--破解NDK層的簽名校驗

Android安全/應用逆向--32--破解NDK層的簽名校驗

7-9、破解NDK層的簽名校驗

NDK層簽名校驗破解的思路與Java層簽名校驗破解的思路相似:

(1) 通過輸入“signature”關鍵字定位獲取本Apk簽名信息的函式(在下文中,我們用getApkSign來標記該函式);

(2) 找出呼叫的getApkSign函式的函式列表,然後在得到的函式列表中篩選出簽名校驗函式(在下文中,我們用verifyApkSign來標記該函式);

(3) 梳理verifyApkSign函式的流程,找到判斷簽名合法性的關鍵程式碼,然後修改關鍵程式碼以繞過簽名校驗。

破解步驟:

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

2、使用Apktool對相關APK進行解包。解包方法不再詳述

3、Notepad++搜尋在檔案中查詢。 地址:解壓的smali資料夾下

搜尋內容:Landroid/content/pm/PackageInfo;->signatures:[Landroid/content/pm/Signature

注意:所出現的檔案路徑,如果是第三方檔案路徑則不是,如果未搜到則代表沒有java層簽名。

4、Notepad++搜尋在檔案中查詢。 地址:解壓的lib資料夾下

搜尋內容:[Landroid/content/pm/Signature

注意:所出現的檔案路徑,如果是第三方檔案路徑則不是,如果未搜到則代表沒有Native層簽名。

5、在Notepad++查詢的結果中分析哪個是獲取當前簽名的函式 主要是\lib\armeabi-v7a資料夾的,如果沒有可以是其他的。 如果有\lib\armeabi-v7a資料夾下有多個,需要挨個用IDA32開啟進行分析

分析步驟: IDA搜尋關鍵字:[Landroid/content/pm/Signature,可以得知哪個函式使用了該簽名信息 分析該函式是否被其他函式呼叫,以及是否有第三方關鍵字,例如wandoujia,如果未被呼叫且有第三方關鍵字則不是。如果被呼叫,且有相關關鍵字。如signature則是

6、定位和分析APK簽名校驗函式 方法: 靜態分析、F5高階語言、右鍵結構化。注意上方各個視窗的利用。 (1) F5高階語言找到相關呼叫的函式名 (2) 在彙編環境下搜尋該函式名 (3) 記住它的偏移地址,即左邊的地址 最終找到相關函式點(修改關鍵點)

分析左邊圖形邏輯彙編程式碼,同時注意適時下斷點。右鍵點選右側的R1、R2、R3……等 -->jump,即可以在下方檢視具體的值(如加密資料、金鑰等)。右鍵點選右側的PC -->jump,即可跳轉回去(單步除錯過頭了)。只有熟悉ARM彙編才可以看懂整個IDA介面。

7、 修改APK簽名校驗函式 使用其他可編輯的軟體開啟該.so檔案 參考IDA,將對應的語句nop掉,即都弄為0,注意地址的讀數

8、二次打包APK並簽名