马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
媒介
近来搞了一下安卓。简朴学习记载一下。
目标步调: 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
这里可以打开抓包软件 对比值是否同等。
先看下本来哀求
再看下hook到的 然后发现原来是前后加盐了。
我们放到本身的代码中运行下看看是不是3b6198d0e19a919d7db354c4d1dfd5d6
然后发现是同等的 那这个参数就hook乐成了。
近来也是刚学安卓。着实也没怎么学 就平常问问大佬。写的不好的 盼望各位包容。
结语
星球链接
|