天天看點

安卓逆向(六) —— Frida實戰AliCrackme_2Frida實戰AliCrackme_2

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
           
安卓逆向(六) —— Frida實戰AliCrackme_2Frida實戰AliCrackme_2
2、反編譯apk
apktool d AliCrackme_2.apk
           
安卓逆向(六) —— Frida實戰AliCrackme_2Frida實戰AliCrackme_2
3、分析AndroidManifest.xml
安卓逆向(六) —— Frida實戰AliCrackme_2Frida實戰AliCrackme_2
4、jadx分析AliCrackme_2.apk

根據在AndroidManifest.xml擷取到的name找到對應檔案com.yaotong.crackme.MainActivaty

安卓逆向(六) —— Frida實戰AliCrackme_2Frida實戰AliCrackme_2

可以很明顯的看到密碼驗證的地方 如果成功的話直接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實戰AliCrackme_2Frida實戰AliCrackme_2

控制台輸出

安卓逆向(六) —— Frida實戰AliCrackme_2Frida實戰AliCrackme_2

五、總結

可以看到通過對Frida的簡單應用我們就跳過了密碼驗證, 但是并不是這道題的最終答案, 題目想考驗的是破解密碼, 其實通過今天的分析我們可以看到的是真正的密碼隐藏在crackme.so檔案中, 下一節我們将對.so檔案進行調試擷取到真正的密碼。

坐得住闆凳,耐得住寂寞,守得住初心!