安卓逆向案例(4)owasp_r2pay-v0.9.apk
1. 案例来源
https://github.com/OWASP/mastg/tree/master/Crackmes/Android
2. 分析过程
先安装APK,根据提示随便输入内容看一看,根据题目要求,生成的那一长串字符颜色是绿色才算成功。
拖进jadx看一下,在OnCreate函数里面发现反调试和Root检测。
定位到核心判断逻辑,核心函数为gXftm3iswpkVgBNDUp,这又是一个native函数。
用IDA打开so库,导出表没看到gXftm3iswpkVgBNDUp函数,估计是动态注册的,看到了很多的decode函数,位于init_array段中,估计是解密数据用的。
看一下JNI_OnLoad函数,很乱,上了OLLVM。

上D810处理一下JNI_OnLoad函数,修正一下类型,即可定位到关键的动态注册逻辑。函数详细信息的地址off_163018是动态解密的,准备调试获取。

先把Java代码里面的反调试和ROOT检测代码给删掉,准备接下来的调试。
断到函数注册的Call,看到函数信息,包括名称:gXftm3iswpkVgBNDUp,方法签名和地址。根据函数名称和方法签名([BB)[B,函数声明为:public native byte[] gXftm3iswpkVgBNDUp(byte[] arr, byte b);。

转到函数地址,尝试反编译提示函数过大,且函数也上了OLLVM。
改一下配置上限,上D810,尝试反编译,反编译出了一个接近3W行代码的巨大怪物,修正一下参数类型。

本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 凌虚的博客!