autojs(android)脚本解密 | Mario
有问题可以下方留言给我
0x1 分析目标
名称: 各种广告sdk 脱机挂
包名: muling.plugin
分析目的: 分析脱机刷任务原理
0x2 分析过程
通过包内 assets -> project -> project.json文件确定该包是有autojs框架生存, 了解了一下, 该框架主要逻辑是js代码, 被加密放在project文件夹里
通过对文件的监控与静态分析确定了解密函数位于, com.stardust.autojs.engine.encryption.ScriptEncryption
的decrypt
函数, 使用了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)