通过 JNI 制作 Android Toast,即通过 JNI 调用 Java 方法

逆向工程 C++ 安卓 爪哇
2021-06-20 22:49:27

关于一个企业的输出Toast,我发现有一些方法可以让一个Toast,即调用调用FindClassJNIEnv与对象android/widget/Toast的参数,但我发现代码中没有引用这样做。

我在这里找到了这个代码

jclass toast = (*env)->FindClass(env, "android/widget/Toast");
// ToastクラスのmakeTextスタティックメソッドのメソッドIDを取得する
jmethodID methodMakeText = (*env)->GetStaticMethodID(env, toast, "makeText", "(Landroid/content/Context;Ljava/lang/CharSequence;I)Landroid/widget/Toast;");
if(methodMakeText == NULL){
LOGE("toast.makeText not Found");

return;

但是当strings在我正在反编译的应用程序中使用的 C++ 编译文件上使用该工具,我没有找到任何对Toast.

还有哪些其他方法可以调用 Java 库中的方法,例如制作 Toast?

1个回答

你可以试试:

jclass toast = (*env)->FindClass(env, "android/widget/Toast"); // get the class you need (need to be already loaded otherwise you have to define it first)
jmethodID methodToCall = env->GetStaticMethodID(toast, "makeText", "(Landroid/content/Context;Ljava/lang/CharSequence;I)Landroid/widget/Toast;"); // get your desidered method

env->CallStaticVoidMethod(toast, methodToCall, <your parameters here>); // ask the jvm to call your method (assuming its static)