ChatGPT 可用网址,仅供交流学习使用,如对您有所帮助,请收藏并推荐给需要的朋友。
https://ckai.xyz
今天星友求助一个类似杀猪盘的样本。该样本有以下几个点需要攻克:
1、AndroidManifest.xml经过处理:
2、整个样本的字符串全部经过加密,解密方法名经过强混淆:
3、资源文件也经过了混淆:
4、样本伪加密:
5、样本无法安装(签名问题):
接下来我们来解决一下2、5两个问题。
样本无法安装
我们看样本安装报错,提示签名问题,我们直接上Xposed模块:核心破解
核心破解的主要功能:
1、允许降级安装应用
2、允许安装签名错误的apk
3、允许在使用不同签名的情况下覆盖安装
缺点:
当前版本只支持安卓10-12
强混淆方法hook、字符串解密
接下来我们hook一下这个加密方法,简单的hook我们直接使用objection即可:
hook 监测该类,可以看到只有这一个方法:
objection -g com.biaoqyun.tongchengaglao explore
android hooking watch class b6p.alur0e.fmjoi
我们直接复制,hook该方法,报错,找不到这个方法:
这样看直接hook这个方法显然是有问题,因为其中包含了各种字符,frida在解析这个方法时由于乱码的原因,无法正常解析道这个类,这样看来我们只能想其他办法了。
曲线救国,可以试试hook它的上层调用a.c,打印对应的参数和返回值来看,其中的参数即是解密后的字符串。
得到结果如下:
android hooking watch class_method com.g
aoyuan.mianshu.k.c.a --dump-args --dump-return
从上图我们可以看到有RSA密钥,以及返回的一些URL。
这样的缺点是只能知道这一块的字符串解密内容,其他的还是无法定位,这样看还是需要hook这个混淆的方法。
我们的大佬提供了解决方法,可以hook混淆方法,展示一下hook到的结果:
我们也可以根据打印出来的字符串在jadx中搜索对应的字符串然后继续分析代码
hook代码如下:
Java.perform(
function() {
var targetClass = "b6p.alur0e.fmjoi";
var hookCls = Java.use(targetClass);
var methods = hookCls.class.getDeclaredMethods();
var methodname = encodeURIComponent(methods[0].toString().replace(/^.*?\.([^\s\.\(\)]+)\(.*?$/, "$1"));//对字符串进行js自己编码
hookCls[decodeURIComponent(methodname)]//使用的时候再去解码
.implementation = function (x) {
console.log("参数:", x);
var result = this[decodeURIComponent(methodname)](x);
console.log("返回值:",result);
return result;
}
}
)
推荐阅读: