查看原文
其他

某青<>涩病毒APP的防护手段

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

1、AndroidManifest.xml经过处理:

2、整个样本的字符串全部经过加密,解密方法名经过强混淆:


3、资源文件也经过了混淆:


4、样本伪加密:

5、样本无法安装(签名问题):



接下来我们来解决一下2、5两个问题。


一、样本无法安装

        从上图可见样本安装报错,提示签名问题,我们直接上Xposed模块:核心破解:https://github.com/Xposed-Modules-Repo/com.coderstory.toolkit

        核心破解的主要功能:
1、允许降级安装应用
2、允许安装签名错误的apk
3、允许在使用不同签名的情况下覆盖安装
        缺点:
当前版本只支持安卓10-12


二、强混淆方法hook、字符串解密

        接下来我们hook一下这个加密方法,简单的hook我们直接使用objection即可:

hook 监测该类,可以看到只有这一个方法:

objection -g com.biaoqyun.tongchengaglao exploreandroid hooking watch class b6p.alur0e.fmjoi

我们直接复制,hook该方法,直接报错,找不到这个方法:

android hooking watch class_method b6p.alur0e.fmjoi.꩟hxꨢ꩕Sgꨠ꩙A꨽ꨜ꩖bF --dump-args --dump-return

        这样看直接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; } })

三、总结

        从这个病毒样本可以看到现在病毒样本的防护级别也很高,不能说做了很强的加固,但是各种小的防护都用上了,不得不佩服这些做病毒的小团伙啊,不过多行不义必自毙。

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存