我没有找到如何在 Frida 中声明一个新类。但是,我找到了一种解决方法来完成我的要求。我在这里分享它,希望可以帮助那些和我遇到同样问题的人。基本上,我想做的是为现有的 View 实例添加一个 onClickListener 。由于我们无法在 Frida 中声明新的 onClickListener 派生类,我们可以在单独的 dex 库文件中声明它。在 Frida 中,我们可以动态加载这个 dex 文件,找到类,然后新建它。步骤如下:
1、创建一个java库,声明自己的onClickListener派生类。例如:
package com.test.frida
class MyOnClickListener implements onClickListener {
public void onClick() {
//you code here
}
}
2、编译成Android库文件,假设为mylib.dex。然后推送到安卓设备。
3、在Frida中,假设你要添加onClickListener的view是appView。我们首先加载 mylib.dex,如下所示:
var loader = Java.use("dalvik.system.DexClassLoader").$new(mylib_dex_path, optimizeDir, null, appView.getContext())
optimizeDir 应该是属于应用程序的目录。很容易找到一个。
4、获取MyOnClickListener.class并为其新建一个实例。
Java.classFactory.loader = loader;
var myListenerCls = Java.classFactory.use("com.test.frida.MyOnClickListener");
var listenerObj = myListenerCls.$new();
5、最后把这个监听器传给appView
appView.setOnClickListener(listenerObj);