【特别声明:本文章仅限交流学习,其中涉及技术不得用于非法目的,本人不承担任何相关法律责任。】
一、分析安卓app adjust nsgin 加密算法:
思路:Frida + IDA静态分析
Step1. 检查是否加壳
用IDA Pro工具打开lib/arm64_v8a/libsigner.so,Expost Tab查找需要的函数名称,找到我们需要逆向的函数,双击打开查看函数的汇编发现已被加壳;
Step2. 静态脱壳
- 使用dd指令对libsigner.so脱壳
因为这个此APP会判断手机系统是否被root,所以自己写了一套自动化bash脚本来实现在APP启动到自动关闭这个时间段内抓取加载到内存中的libsigner.so;
b、使用frida对dex脱壳(脱壳过程还需要用到Magisk、MT、js脚本等),然后用jadx解析出脱壳后的dex中的java原代码,根据IDA中找到的函数名称正则查找到jni接口,确定参数与返回值;
Step3. 导出函数c伪代码
打开脱壳后的libsigner.so补正Section Table,然后IDA打开函数汇编页面按F5键(需要安装Hex-Rays插件)反编译出jni函数Java_com_adjust_sdk_sig_NativeLibHelper_nSign的c伪代码;
二、体外还原算法离机部署:
1、还原算法:使用unidbg-boot-server框架来建立虚拟环境模拟调用libsigner.so的jni函数(函数名:"nSign(Landroid/content/Context;Ljava/lang/Object;[BI)[B" )并补齐环境,这个方案相比传统IDA伪代码逐行分析还原的优点是更高效。
2、调试完成后,打包成Jar包,然后通过Docker Hub部署到服务器。