1. 程式人生 > 實用技巧 >python之逆向app破解md5引數

python之逆向app破解md5引數

一、抓包分析

首先下載app,登入入口

二、脫殼

是否加殼,若有殼,先稅殼。
脫完之後發現三個dex檔案,然後合併dex檔案

三、用jadx-gui開啟

分析加密引數
搜尋關鍵字

四、hook方法

上frida,hook md5
frida指令碼如下
hook.js

Java.perform(function () {
    console.log('HOOK Start!!!');
    var Des3Encrypt = Java.use("com.yunmall.ymsdk.utility.AuthUtils"); //com.whxxcy.mango.core.service.network.c.b com.whxxcy.mango.core.util.a
    console.log(Des3Encrypt);
    // 加密
    Des3Encrypt.md5.overload('java.lang.String').implementation = function (args1) {
        console.log("Encrypt args1:",JSON.stringify(args1));
        //console.log("Encrypt args2:",args2);
        //console.log("Encrypt args3:",args3);
        //console.log("Encrypt args4:",args4);
        var result = this.md5(args1);
        console.log("Des3Encrypt.encode result==:",result);
        return result;
    };
});

python 指令碼

import logging
import frida
import sys

logging.basicConfig(level=logging.DEBUG)


def on_message(message, data):
    print(message)


with open('lie_qu.js', 'r', encoding='utf-8') as f:
    sta = ''.join(f.readlines())
    # print(sta)
rdev = frida.get_remote_device()
processes = rdev.enumerate_processes()  # 安卓手機中的所有程序
print(processes)
# android.content.Intent android.content.Context android.view.ViewGroup  java.lang.String, java.util.List  [Ljava.lang.String;(String[]), javax.net.ssl.SSLSession  SSLSession
session = rdev.attach("com.yunmall.ymctoc")
print(session)
script = session.create_script(sta)

script.on("message", on_message)
script.load()
sys.stdin.read()

結果報錯

這種方法在此app是行不通的

六、用命令列形式

frida -U --no-pause -f packagename -l hook.js

frida -U --no-pause -f com.yunmall.ymctoc