freeBuf
主站

分类

云安全 AI安全 开发安全 终端安全 数据安全 Web安全 基础安全 企业安全 关基安全 移动安全 系统安全 其他安全

特色

热点 工具 漏洞 人物志 活动 安全招聘 攻防演练 政策法规

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

某病毒APP防护破解
移动安全星球 2023-02-13 22:39:02 143076
所属地 北京

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

1、AndroidManifest.xml经过处理:
Pasted image 20220422090808.png
2、整个样本的字符串全部经过加密,解密方法名经过强混淆:
Pasted image 20220422091001.png
3、资源文件也经过了混淆:
Pasted image 20220422091037.png
4、样本伪加密:
Pasted image 20220422103524.png
5、样本无法安装(签名问题):
Pasted image 20220422105705.png

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

样本无法安装

我们看样本安装报错,提示签名问题,我们直接上Xposed模块:核心破解
核心破解的主要功能:
1、允许降级安装应用
2、允许安装签名错误的apk
3、允许在使用不同签名的情况下覆盖安装
缺点:
当前版本只支持安卓10-12
Pasted image 20220422110339.png

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

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

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

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

Pasted image 20220422140338.png
我们直接复制,hook该方法,报错,找不到这个方法:
Pasted image 20220422140439.png
这样看直接hook这个方法显然是有问题,因为其中包含了各种字符,frida在解析这个方法时由于乱码的原因,无法正常解析道这个类,这样看来我们只能想其他办法了。

曲线救国,可以试试hook它的上层调用a.c,打印对应的参数和返回值来看,其中的参数即是解密后的字符串。

得到结果如下:

android hooking watch class_method com.g
aoyuan.mianshu.k.c.a --dump-args --dump-return

Pasted image 20220421173501.png
从上图我们可以看到有RSA密钥,以及返回的一些URL。

这样的缺点是只能知道这一块的字符串解密内容,其他的还是无法定位,这样看还是需要hook这个混淆的方法。

我们的大佬提供了解决方法,可以hook混淆方法,展示一下hook到的结果:
Pasted image 20220421174003.png
我们也可以根据打印出来的字符串在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;
            }
    }
)
# 移动安全 # 病毒分析 # 安全防护
本文为 移动安全星球 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
移动安全星球 LV.3
公众号:移动安全星球。主要从事移动安全行业,病毒分析、客户端安全检测等
  • 6 文章数
  • 2 关注者
如何在移动应用程序开发中正确使用加密技术
2023-03-14
hexo&github 搭建博客(保姆级)
2023-02-13
magisk 一键集成逆向环境
2022-07-08