提供一种比较简单的内置脚本的方法
想要看修改方法可以直接看文尾,过程提供大家逆向入门学习
首先获取执行的资源ID 7F07021B
拖进JEB轮询搜索 定位到该点击事件
Tab 转smali 代码 Ctel+B 下断点
继续步过,直到脚本运行完毕,定位到运行LUA脚本方法 chunk.call() 向上回溯 定位到
public void runscript() 方法的 this.globals.loadfile(file.getAbsolutePath()) ,跟进后Hook获得该方法的形参,练习 frida获得参数值,Xposed 修改该参数值。
jscode = """
Java.perform(function () {
var Utils = Java.use("luaj.Globals");
Utils.loadfile.implementation = function (a) {
send(a);
return this.loadfile(a);
}
});
"""
Hook后发现该方法参数为路径,下来用Xposed修改参数
if(lpparam.packageName.equals("catch_.me_.if_.you_.can_")){
XposedBridge.log("当前需要hook的包名为;"+ lpparam.packageName);
XposedHelpers.findAndHookMethod("luaj.Globals",
lpparam.classLoader, //类加载器
"loadfile",//
String.class,
new XC_MethodHook() {
@Override
protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
//hook 之前的代码.
super.beforeHookedMethod(param);
//字符串为脚本路径
param.args[0]="/storage/emulated/0/Android/data/com.tencent.mobileqq/1.lua";
XposedBridge.log("end");
}
});
}
测试随意路径文件执行,结果均为运行我们指定路径
所以我们只需要修改Smali 将LUA修改为其他格式。例如PNG 存放于res路径下即可 修改点如下,删掉原先的函数返回,指定其内容、
既然在JAVA层,路径大可不必用明文,可以用bytes转String,再混淆该应用即可,该方法可以在云脚本或其他脚本作为外壳,提高逆向时间。



