autojs(android)脚本解密 | Mario

有问题可以下方留言给我

0x1 分析目标

  • 名称: 各种广告sdk 脱机挂

  • 包名: muling.plugin

  • 分析目的: 分析脱机刷任务原理

0x2 分析过程

通过包内 assets -> project -> project.json文件确定该包是有autojs框架生存, 了解了一下, 该框架主要逻辑是js代码, 被加密放在project文件夹里

通过对文件的监控与静态分析确定了解密函数位于, com.stardust.autojs.engine.encryption.ScriptEncryptiondecrypt函数, 使用了aes加密, 模式为AES/CBC/PKCS7Padding, 剩下的就简单喽, hook系统调用拿到key与iv就可以了

frida和xposed都行, 我这里就拿xposed了,因为之前写过

关键代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
XposedBridge.hookAllMethods(XposedHelpers.findClass('javax.crypto.Cipher', loadPackageParam.classLoader),'doFinal', new XC_MethodHook() {@Overrideprotected void afterHookedMethod(MethodHookParam param) throws Throwable {super.afterHookedMethod(param);

Cipher cip = (Cipher)param.thisObject;if(param.args.length >= 1){String str = cip.getAlgorithm() + ' Data:';Util.MyLog(loadPackageParam.packageName,str,(byte[])param.args[0]);

str = cip.getAlgorithm() + '  result:';Util.MyLog(loadPackageParam.packageName,str,(byte[])param.getResult());}}});

解密后的数据:

通过源码定位第二层解密部分:

直接抠出来, 就可以解密逻辑脚本:

0x3 写在最后

至此就分析完毕了, 写的很粗糙, 像流水账一样, 就是做个记录, 其实比较简单, 主要就是确定解密的位置和找到aes key的方式, 不过通过此次分析, 以后逆向autojs的软件就可以快速解密了

赏 感谢大佬 微信
(0)

相关推荐