Frida實戰AliCrackme_2
僅用于研究和學習使用,禁止将相關技術應用到不正當途徑,如侵犯隐私或權益,請聯系我立即删除
文章目錄
-
-
-
- 一、項目背景
- 二、 項目準備
- 三、AliCrackme_2分析
-
- 1、安裝apk
- 2、反編譯apk
- 3、分析AndroidManifest.xml
- 4、jadx分析AliCrackme_2.apk
- 四、Hook跳過密碼驗證
- 五、總結
-
-
一、項目背景
當Bob帶領銀河飛行隊趕到時,飛碟已墜落在小山谷裡,駕駛員在墜落前啟動了自毀程式,飛碟中的一切已化為灰燼,唯一幸免的是一部手機,但需要開機密碼。這是2015移動安全挑戰賽中的一道題目,我們今天的任務就是要使用Frida架構來Hook跳過這個密碼驗證打開手機。
二、 項目準備
準備個root過的手機或者模拟器(推薦夜神模拟器)
安裝Frida 具體檢視上一篇部落格 安卓逆向(五) —— Hook架構Frida介紹
安裝 AliCrackme_2.apk包 百度網盤 AliCrackme_2.apk 密碼: 8578
三、AliCrackme_2分析
1、安裝apk
adb install AliCrackme_2.apk
2、反編譯apk
apktool d AliCrackme_2.apk
3、分析AndroidManifest.xml
4、jadx分析AliCrackme_2.apk
根據在AndroidManifest.xml擷取到的name找到對應檔案com.yaotong.crackme.MainActivaty
可以很明顯的看到密碼驗證的地方 如果成功的話直接return, 不成功傳回驗證碼校驗失敗
我們隻要将securityCheck這個函數Hook住,不管輸入什麼都傳回True就可以了
四、Hook跳過密碼驗證
通過Frida架構Hook securityCheck函數 使函數傳回True
import sys
import frida
def on_message(message, data):
if message['type'] == 'send':
print("[*] {0}".format(message['payload']))
else:
print(message)
jscode = """
Java.perform(
function () {
var MainActivaty = Java.use("com.yaotong.crackme.MainActivity");
MainActivaty.securityCheck.implementation = function (str) {
send("密碼正确!!!");
return true;
}
}
);
"""
process = frida.get_usb_device().attach('com.yaotong.crackme')
script = process.create_script(jscode)
script.on('message', on_message)
print('[*] Running CTF')
script.load()
sys.stdin.read()
首先要安卓啟動裝置中的frida服務, 并啟動app
運作上述代碼
手機中随便輸入數字或不輸入内容,點選輸入密碼
控制台輸出
五、總結
可以看到通過對Frida的簡單應用我們就跳過了密碼驗證, 但是并不是這道題的最終答案, 題目想考驗的是破解密碼, 其實通過今天的分析我們可以看到的是真正的密碼隐藏在crackme.so檔案中, 下一節我們将對.so檔案進行調試擷取到真正的密碼。
坐得住闆凳,耐得住寂寞,守得住初心!