BY:ZHK 发表于 2024-10-5 10:39

如何Hook JNI层 CallObjectMethodV的va_list的可变参数列表的参数值?

大佬们好,如何Hook JNI CallObjectMethodV的va_list的可变参数列表的参数值?
jobject (*CallObjectMethodV)(JNIEnv*, jobject, jmethodID, va_list);

java层的代码

so层的代码


so层主动去调用java层的toUpper方法的过程
so层会调用CallObjectMethodV方法去调用java层的方法
我想在so层打印出va_list里面包含传递的参数内容,在frida中,用hexdump出来没对应的字符串尝试过一下各种字符串打印方法,都打印不出对应的字符串
// 方式1
var jString_1 = Java.vm.getEnv().getStringUtfChars(args, null).readCString();
console.log("str:", jString_1);
// 方式2
var jString_2=Java.cast(param3,Java.use('java.lang.String'));
console.log("str:", jString_2.toString());
// 方式3
console.log(Memory.readCString(param3));
// 方式4
console.log(Memory.readUtf8String(param3));

狄人3 发表于 2024-10-5 17:30

拿到jstring指针之后创个NativeFunction然后call下GetStringUTFChars试试?

cnwjl 发表于 2024-10-5 21:20

用归纳法,多试几个值

wasm2023 发表于 2024-10-6 10:28

BY:ZHK 发表于 2024-10-6 12:09

wasm2023 发表于 2024-10-6 10:28
此为AI解答,仅供参考
Hook JNI层的 CallObjectMethodV 函数的 va_list 参数列表的参数值是一个高级技术, ...

对的,思路是没问题的,目前就是 不知道如何 打印CallObjectMethodV 函数里面 va_list 里面可变参数

BY:ZHK 发表于 2024-10-7 11:41

狄人3 发表于 2024-10-5 17:30
拿到jstring指针之后创个NativeFunction然后call下GetStringUTFChars试试?

我重启手机后,JNITrace,能够打印出字符串啦,谢谢大佬回复

wasm2023 发表于 2024-10-7 12:03

BY:ZHK 发表于 2024-10-7 11:41
我重启手机后,JNITrace,能够打印出字符串啦,谢谢大佬回复

请问呢jnitrace总是卡掉是什么原因呢

BY:ZHK 发表于 2024-10-7 14:23

wasm2023 发表于 2024-10-7 12:03
请问呢jnitrace总是卡掉是什么原因呢

排除APP对抗的问题,就有可能是frida版本的问题,我pixel3用15.2.2很稳定

wasm2023 发表于 2024-10-7 17:24

BY:ZHK 发表于 2024-10-7 14:23
排除APP对抗的问题,就有可能是frida版本的问题,我pixel3用15.2.2很稳定

有没有可能是函数太多导致的呢,这个jnitrace需要自己配置不

BY:ZHK 发表于 2024-10-7 18:53

wasm2023 发表于 2024-10-7 17:24
有没有可能是函数太多导致的呢,这个jnitrace需要自己配置不

应该不会吧,不用的
页: [1] 2
查看完整版本: 如何Hook JNI层 CallObjectMethodV的va_list的可变参数列表的参数值?