明天星友求助一个相似杀猪盘的样本。该样本有以下几个点须要攻克:
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 exploreandroid hooking watch class b6p.alur0e.fmjoi
咱们间接复制,hook该办法,报错,找不到这个办法:
这样看间接hook这个办法显然是有问题,因为其中蕴含了各种字符,frida在解析这个办法时因为乱码的起因,无奈失常解析道这个类,这样看来咱们只能想其余方法了。
曲线救国,能够试试hook它的下层调用a.c,打印对应的参数和返回值来看,其中的参数即是解密后的字符串。
失去后果如下:
android hooking watch class_method com.gaoyuan.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; } })
举荐浏览:
https://mp.weixin.qq.com/s/dV2JzXfgjDdCmWRmE0glDA
https://mp.weixin.qq.com/s/an83QZOWXHqll3SGPYTL5g