unidbg 调用jdapk 中的 Java_com_jingdong_common_utils_BitmapkitUtils_getSignFromJni 方法该方法有7个参数其中第一个为context 其他都是string写一个示例详细步骤并且解说
为了调用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/bvbe 著作权归作者所有。请勿转载和采集!