【发布时间】:2021-01-19 11:27:09
【问题描述】:
我刚刚开始使用 Frida,并且已经学习了使用 JavaScript 和 python 绑定进行代码注入和挂钩的基本教程。我当前的问题是确定如何从非主线程调用 GUI 更新方法。感谢这是不可能的,搜索我发现代码 in java 可以在主线程上安排任务。我不知道的是如何在 JavaScript 中表示这段代码,即如何在 Frida JavaScript 中表示以下 java 代码(在注入代码中):
android_View.getActivity().runOnUiThread(new Runnable()
{
@Override
public void run()
{
android_View.setVisibility(View.VISIBLE);
}
}
谢谢
【问题讨论】:
-
第一步是反编译应用程序,例如在 Jadx 中获取匿名内部类的类名(Runner 实现)。
-
嘿罗伯特,所以我有所有这些信息,我认为更多的是理解要翻译的语法以创建一个新的 Runnable 实例,即使用类似的东西: Runnable = Java.use("java.lang.Runnable" );这将为您提供界面,但是,鉴于您需要设置一个公共运行方法,您如何在 JavaScript 中实际实例化。
-
不,您看到的课程不是
java.lang.Runnable。该类实现了这个类,但是是它所在类的匿名内部类。看反编译代码。 -
是的,所以发现这很容易(MainActivity$1),但是,我仍在尝试从非主线程执行 GUI 更改代码段。这意味着(尽管对其他建议持开放态度)生成一个用于 runonUiThread 调用的 Run 方法实现,但是在 JavaScript 中执行此操作的命名法似乎具有挑战性。我明白你在说什么 MainActivity$1 确实实现了 Runnable 但我不明白你是如何从这种立场转变为让非主线程在主线程上安排 GUI 更新的。感谢罗伯特的评论。
-
好的,您想生成一个包含自定义代码的新 Java.lang.Runnable 实现。见弗里达
Java.registerClass(..)frida.re/docs/javascript-api/#java-registerclass
标签: javascript frida