简单破解 Auto.js 脚本代码

查看 62|回复 9
作者:behindeye   

此贴针对没有加密、以及较旧版本的auto.js的脚本代码

思路
1.下载 auto.js 在 github 开源的代码,地址这里就不贴了,自行去搜索;
2.跟踪源码,分析解密入口,既然JavaScript引擎最终是要解析未加密的文档的,是不是有一个地方是解密的,直接hook解密的地方,取解完密的内容;
3.将解密之后的内容保存到本地即可;
核心代码如下:
            Class encry = lpparam.classLoader.loadClass("com.stardust.autojs.engine.encryption.ScriptEncryption");
            XposedHelpers.findAndHookMethod(encry, "decrypt", byte[].class, int.class, int.class, new XC_MethodHook() {
                @Override
                protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
                    super.beforeHookedMethod(param);
                }
                @Override
                protected void afterHookedMethod(MethodHookParam param) throws Throwable {
                    super.afterHookedMethod(param);
                    byte[] b = (byte[]) param.getResult();
                    getFile(b, "/sdcard/", lpparam.packageName + "_hook_hex16.js");
                    String result = new String((byte[]) param.getResult());
                    //                    XposedBridge.log("result:" + result);
                }
            });
            final Class ct = lpparam.classLoader.loadClass("org.mozilla.javascript.Context");
            XposedHelpers.findAndHookMethod(ct, "compileReader", Reader.class, String.class, int.class, Object.class, new XC_MethodHook() {
                @Override
                protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
                    super.beforeHookedMethod(param);
                }
                @Override
                protected void afterHookedMethod(MethodHookParam param) throws Throwable {
                    super.afterHookedMethod(param);
                    Object ret = param.getResult();
                    Method method = ct.getMethod("decompileScript", lpparam.classLoader.loadClass("org.mozilla.javascript.Script"), int.class);
                    String decompStr = (String) method.invoke(param.thisObject, ret, 0);
                    byte[] b = decompStr.getBytes();
                    getFile(b, "/sdcard/", lpparam.packageName + "_hook.js");
                    XposedBridge.log("decompStr:" + decompStr);
                }
            });
注:新版本或者加密之后,不行

代码, 脚本

mmcat33   

可以的啊
jonney   

厉害了,学到了
wang2292126   

嗯厉害,虽然看不懂
wjl19900603   

厉害了,定一个
此名已被注册?   

厉害厉害
mengzehe   

厉害,虽然看不懂
wiifrank   

最近刚好在研究这个脚本。
1101203976   

学到了,感谢分享
webhook   

还没有用过,一直有听说这个东西
您需要登录后才可以回帖 登录 | 立即注册

返回顶部