# APP

选用 com.hoge.android.app.hljapp_3.8.7_20220615.apk 这一版本的 app

# root 检测

打开发现有 root 检测

image-20220728181132781

直接采用 objection 在启动阶段过掉检测

objection -g appname explore --startup-command "android root disable"

这里主要是将 root 后端文件特征抹掉

注入后就可以正常进入 app 了

image-20220728184938632

# app 抓包

使用 postern 抓包后,获取如下接口内容,发现主要的加密参数可能为如下两个:

image-20220729095038572

# 静态分析
# 脱壳

直接用 jadx 打开,发现应该是 360 的壳

image-20220729095513391

直接用 frida_dexdump 脱壳.

pip3 install frida-dexdump
# 脱壳
frida-dexdump -FU

image-20220729100252532

本质上应该是直接把 dex 文件导出来

# jadx 分析

然后把 dex 文件拖到 jadx 中搜索参数,很明显这里估计就是对应的参数加密的位置

image-20220729191816673

很明显,这里的 account 应该是个随机数,接下来跟进 getSign 中看

image-20220729193630021

跟到最里面发现它其实是一个 interface 的实现,直接搜索,发现它是 native 方法

image-20220729193736930

# ida 分析

直接打开对应的 wtf.so,然后搜索 java 进到对应的 get_Sign 方法中

image-20220730160805506

然后直接 hook so 即可

console.log("so start:")
var address = Module.findBaseAddress("libnativeappdemo.so").add(0x154+1);
console.log("func address:", address)
Interceptor.attach(address, {
    onEnter: function (args) {
        console.log("params1", Memory.readCString(args[2]));
    },
    onLeave: function (retval) {
        console.log("here???", retval)
    }
})
Edited on

Give me a cup of [coffee]~( ̄▽ ̄)~*

Mr2 WeChat Pay

WeChat Pay