明天星友求助一个相似杀猪盘的样本。该样本有以下几个点须要攻克:

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