前言
最近搞了一下安卓。简单学习记录一下。
目标程序: xiao shui mian
也就是某个参数的逆向
准备环境
- 安卓机
- scrcpy
- adb
- frida
- 解包软件(不列举了)
这种环境安装这里就不多说了。教程也很多。
参数逆向分析
先抓包看看参数
这里我使用的是postern抓包。因为如果要用网络代理的话可能会有检测。这里一步到位了
如下图配置
然后打开charles 配置下。记得安装证书 这里简单的配置我跳过了。
我们这里直接点进 社区的某个评论
然后我们抓包看看参数
如下图 sig 是我们所需要逆向的参数。
反编译逆向分析
这里直接把apk丢到Jadx中就可以了。
如下图操作即可。
然后发现 他在Java层是由Sinner.sign 返回来的。继续点进去。
然后发现这里上面是逻辑层的判断。下面是调用了 sbase的getSig
这里继续点进去。发现是调用了 lib中的base
如下图文件的位置
这里直接右击解压apk文件。然后找到对应的位置。
把这个libbase 放到 IDA中。记得选择IDA64
点击搜索
然后点进去。发现这就是个md5加密。
然后按tab 进去看方法、发现传了3个参数。
那后面就简单了。先用frida hook下基址。
代码如下
Java.perform(function () {
var dlsymadd = Module.findExportByName("libbase.so", 'dlsym');
Interceptor.attach(dlsymadd, {
onEnter: function (args) {
this.info = args[1];
}, onLeave: function (retval) {
var module = Process.findModuleByAddress(retval);
if (module == null) {
return retval;
}
// native方法
var funcName = this.info.readCString();
console.log(funcName)
if (funcName.indexOf("GetSig") !== -1) {
console.log(module.name);
console.log(module.base);
console.log('\t', funcName);
}
return retval;
}
})
});
执行以下命令
frida -U -f com.psyone.brainmusic -l static_find_so.js
找到基址了。
然后就根据基质。hook 这个传参就行了。
这里通过Interceptor.attach 来hook 两个传参就行了。
var funcAddress = ptr("0x701bdb8000") // 替换偏移量为实际值
var funcAdd = funcAddress.add(0x1c2c)
然后运行文件 这里切记要用大F
frida -U -F -l 新的js文件
这里可以打开抓包软件 对比值是否一致。
先看下原本请求
再看下hook到的 然后发现原来是前后加盐了。
我们放到自己的代码中运行下看看是不是3b6198d0e19a919d7db354c4d1dfd5d6
然后发现是一致的 那这个参数就hook成功了。
最近也是刚学安卓。其实也没怎么学 就平时问问大佬。写的不好的 希望各位见谅。
结语
有兴趣的同学可以关注下我的个人公众号和星球
公众号链接
星球链接