使用 Unidbg 调用 jd.apk 中的 Java_com_jingdong_common_utils_BitmapkitUtils_getSignFromJni 方法
为了调用 jd.apk 中的 Java_com_jingdong_common_utils_BitmapkitUtils_getSignFromJni 方法,我们需要使用 unidbg 工具。以下是详细步骤:
- 安装 unidbg 工具并导入 jd.apk
首先,需要安装 unidbg 工具,并将 jd.apk 导入到工具中。这可以通过以下命令完成:
adb push jd.apk /data/local/tmp/
adb shell chmod 777 /data/local/tmp/jd.apk
然后,在 unidbg 工具中加载 jd.apk,这可以通过以下命令完成:
java -jar unidbg.jar /data/local/tmp/jd.apk
- 获取 Java 对象并调用方法
接下来,我们需要获取 Java 对象并调用方法。我们可以使用以下代码来获取 Java 对象:
DvmClass clazz = vm.resolveClass('com/jingdong/common/utils/BitmapkitUtils');
DvmObject<?> context = new DvmObject<>(vm, vm.resolveClass('android/content/Context'), null);
String[] args = {'arg1', 'arg2', 'arg3', 'arg4', 'arg5', 'arg6'};
DvmObject<?>[] dvmArgs = new DvmObject[args.length + 1];
dvmArgs[0] = context;
for (int i = 1; i < dvmArgs.length; i++) {
dvmArgs[i] = new StringObject(vm, args[i-1]);
}
我们首先使用 vm.resolveClass 方法获取 BitmapkitUtils 类,然后创建一个 DvmObject 来表示 context 对象。最后,我们使用一个循环来创建一个 DvmObject 数组,用于表示 7 个参数。
接下来,我们可以使用以下代码来调用方法:
DvmMethod method = clazz.getMethod('getSignFromJni', 'Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;');
StringObject sign = (StringObject) method.callObject(null, dvmArgs);
这里,我们使用 clazz.getMethod 方法获取 getSignFromJni 方法,并使用 method.callObject 方法来调用该方法。我们传递 null 作为第一个参数,因为该方法是静态方法。最后,我们将返回值强制转换为 StringObject 对象。
- 打印结果
最后,我们可以使用以下代码将结果打印出来:
System.out.println('Sign: ' + sign.getValue());
这里,我们将返回的字符串值打印到控制台上。
总结
通过使用 unidbg 工具,我们可以轻松调用 jd.apk 中的 Java_com_jingdong_common_utils_BitmapkitUtils_getSignFromJni 方法。我们首先获取 Java 对象,然后调用方法,并将结果打印到控制台上。
原文地址: https://www.cveoy.top/t/topic/mYUo 著作权归作者所有。请勿转载和采集!