package com.anjia.unidbgserver.service;
import com.anjia.unidbgserver.config.UnidbgProperties;
import com.anjia.unidbgserver.utils.TempFileUtils;
import com.github.unidbg.AndroidEmulator;
import com.github.unidbg.Emulator;
import com.github.unidbg.EmulatorBuilder;
import com.github.unidbg.Module;
import com.github.unidbg.arm.backend.DynarmicFactory;
import com.github.unidbg.file.FileResult;
import com.github.unidbg.file.IOResolver;
import com.github.unidbg.linux.android.AndroidEmulatorBuilder;
import com.github.unidbg.linux.android.AndroidResolver;
import com.github.unidbg.linux.android.dvm.*;
import com.github.unidbg.linux.android.dvm.api.ApplicationInfo;
import com.github.unidbg.linux.android.dvm.array.ArrayObject;
import com.github.unidbg.linux.android.dvm.array.ByteArray;
import com.github.unidbg.linux.android.dvm.wrapper.DvmInteger;
import com.github.unidbg.linux.android.dvm.wrapper.DvmLong;
import com.github.unidbg.linux.file.ByteArrayFileIO;
import com.github.unidbg.linux.file.SimpleFileIO;
import static com.anjia.unidbgserver.utils.PrintUtils.*;
import com.github.unidbg.memory.Memory;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.security.cert.CertificateException;
import java.security.cert.CertificateFactory;
import java.util.*;
@Slf4j
public class MeiTuanService extends AbstractJni implements IOResolver {
private final AndroidEmulator emulator;
private final VM vm;
private final Module module;
private final static String BASE_MEITUAN_PATH = "data/apks/meituan";
private final static String MEITUAN_APK_PATH = BASE_MEITUAN_PATH + "/meituan.apk";
private final UnidbgProperties unidbgProperties;
// private final static String LIBTT_ENCRYPT_LIB_PATH = "data/apks/so/libttEncrypt.so";
@SneakyThrows MeiTuanService(UnidbgProperties unidbgProperties) {
this.unidbgProperties = unidbgProperties;
// 创建模拟器实例,要模拟32位或者64位,在这里区分
EmulatorBuilder<AndroidEmulator> builder = AndroidEmulatorBuilder.for32Bit().setProcessName("com.xxxxx");
// 动态引擎
if (unidbgProperties.isDynarmic()) {
builder.addBackendFactory(new DynarmicFactory(true));
}
emulator = builder.build();
// 模拟器的内存操作接口
final Memory memory = emulator.getMemory();
// 设置系统类库解析
memory.setLibraryResolver(new AndroidResolver(23));
// 创建Android虚拟机
// vm = emulator.createDalvikVM(); // 只创建vm,用来读so,不加载apk
vm = emulator.createDalvikVM(TempFileUtils.getTempFile(MEITUAN_APK_PATH));
// 设置是否打印Jni调用细节
vm.setVerbose(unidbgProperties.isVerbose());
vm.setJni(this);
emulator.getSyscallHandler().addIOResolver(this);
// 加载libttEncrypt.so到unicorn虚拟内存,加载成功以后会默认调用init_array等函数,这是直接读so文件
// DalvikModule dm = vm.loadLibrary(TempFileUtils.getTempFile(LIBTT_ENCRYPT_LIB_PATH), false);
// 这是搜索加载apk里的模块名,比如 libguard.so 那么模块名一般是guard
DalvikModule dm = vm.loadLibrary("模块名", false);
// 手动执行JNI_OnLoad函数
dm.callJNI_OnLoad(emulator);
// 加载好的libttEncrypt.so对应为一个模块
module = dm.getModule();
dm.callJNI_OnLoad(emulator);
// TTEncryptUtils = vm.resolveClass("com/bytedance/frameworks/core/encrypt/TTEncryptUtils");
}
/**
* unidbg 模拟调用
*
* @param param 入参
* @return 结果
*/
public Object doWork(Object param) {
return null;
}
@Override public DvmObject<?> callStaticObjectMethodV(BaseVM vm, DvmClass dvmClass, String signature, VaList vaList) {
printArgs(vm,"callStaticObjectMethodV", signature, vaList);
switch (signature) {
case "android/os/SystemProperties->get(Ljava/lang/String;)Ljava/lang/String;":
//时间:31595 ms,参数:{jstring=hex:726f2e6275696c642e6964, string:ro.build.id},样例:GenericRequest
return new StringObject(vm, "GenericRequest");
//时间:33124 ms,signature:android/os/SystemProperties->get(Ljava/lang/String;)Ljava/lang/String;,参数:{jstring=hex:706572736973742e7379732e7573622e636f6e666967, string:persist.sys.usb.config},样例:adb
//时间:34114 ms,signature:android/os/SystemProperties->get(Ljava/lang/String;)Ljava/lang/String;,参数:{jstring=hex:7379732e7573622e636f6e666967, string:sys.usb.config},样例:adb
//时间:35052 ms,signature:android/os/SystemProperties->get(Ljava/lang/String;)Ljava/lang/String;,参数:{jstring=hex:7379732e7573622e7374617465, string:sys.usb.state},样例:adb
case "com/meituan/android/common/mtguard/NBridge->getClassLoader()Ljava/lang/ClassLoader;":
//时间:6242 ms,参数:{},样例:jobject : 0x19
return new StringObject(vm, "jobject : 0x19");
//时间:13872 ms,signature:com/meituan/android/common/mtguard/NBridge->getClassLoader()Ljava/lang/ClassLoader;,参数:{},样例:jobject : 0x25
//时间:16987 ms,signature:com/meituan/android/common/mtguard/NBridge->getClassLoader()Ljava/lang/ClassLoader;,参数:{},样例:jobject : 0x19
//时间:18955 ms,signature:com/meituan/android/common/mtguard/NBridge->getClassLoader()Ljava/lang/ClassLoader;,参数:{},样例:jobject : 0x11
//时间:20948 ms,signature:com/meituan/android/common/mtguard/NBridge->getClassLoader()Ljava/lang/ClassLoader;,参数:{},样例:jobject : 0x15
//时间:27523 ms,signature:com/meituan/android/common/mtguard/NBridge->getClassLoader()Ljava/lang/ClassLoader;,参数:{},样例:jobject : 0x19
//时间:28997 ms,signature:com/meituan/android/common/mtguard/NBridge->getClassLoader()Ljava/lang/ClassLoader;,参数:{},样例:jobject : 0x11
//时间:36537 ms,signature:com/meituan/android/common/mtguard/NBridge->getClassLoader()Ljava/lang/ClassLoader;,参数:{},样例:jobject : 0x11
//时间:37502 ms,signature:com/meituan/android/common/mtguard/NBridge->getClassLoader()Ljava/lang/ClassLoader;,参数:{},样例:jobject : 0x59
//时间:39271 ms,signature:com/meituan/android/common/mtguard/NBridge->getClassLoader()Ljava/lang/ClassLoader;,参数:{},样例:jobject : 0x29
//时间:43497 ms,signature:com/meituan/android/common/mtguard/NBridge->getClassLoader()Ljava/lang/ClassLoader;,参数:{},样例:jobject : 0x31
//时间:44908 ms,signature:com/meituan/android/common/mtguard/NBridge->getClassLoader()Ljava/lang/ClassLoader;,参数:{},样例:jobject : 0x59
//时间:48264 ms,signature:com/meituan/android/common/mtguard/NBridge->getClassLoader()Ljava/lang/ClassLoader;,参数:{},样例:jobject : 0x41
//时间:48313 ms,signature:com/meituan/android/common/mtguard/NBridge->getClassLoader()Ljava/lang/ClassLoader;,参数:{},样例:jobject : 0x51
//时间:61200 ms,signature:com/meituan/android/common/mtguard/NBridge->getClassLoader()Ljava/lang/ClassLoader;,参数:{},样例:jobject : 0x15 { java/io/File }
//时间:69707 ms,signature:com/meituan/android/common/mtguard/NBridge->getClassLoader()Ljava/lang/ClassLoader;,参数:{},样例:jobject : 0x51
//时间:69830 ms,signature:com/meituan/android/common/mtguard/NBridge->getClassLoader()Ljava/lang/ClassLoader;,参数:{},样例:jobject : 0x55
//时间:69915 ms,signature:com/meituan/android/common/mtguard/NBridge->getClassLoader()Ljava/lang/ClassLoader;,参数:{},样例:jobject : 0x55
//时间:69962 ms,signature:com/meituan/android/common/mtguard/NBridge->getClassLoader()Ljava/lang/ClassLoader;,参数:{},样例:jobject : 0x51
//时间:70000 ms,signature:com/meituan/android/common/mtguard/NBridge->getClassLoader()Ljava/lang/ClassLoader;,参数:{},样例:jobject : 0x55
//时间:70046 ms,signature:com/meituan/android/common/mtguard/NBridge->getClassLoader()Ljava/lang/ClassLoader;,参数:{},样例:
//时间:70095 ms,signature:com/meituan/android/common/mtguard/NBridge->getClassLoader()Ljava/lang/ClassLoader;,参数:{},样例:jobject : 0x51
//时间:70145 ms,signature:com/meituan/android/common/mtguard/NBridge->getClassLoader()Ljava/lang/ClassLoader;,参数:{},样例:jobject : 0x55
//时间:70194 ms,signature:com/meituan/android/common/mtguard/NBridge->getClassLoader()Ljava/lang/ClassLoader;,参数:{},样例:jobject : 0x55
//时间:70347 ms,signature:com/meituan/android/common/mtguard/NBridge->getClassLoader()Ljava/lang/ClassLoader;,参数:{},样例:jobject : 0x55
//时间:70386 ms,signature:com/meituan/android/common/mtguard/NBridge->getClassLoader()Ljava/lang/ClassLoader;,参数:{},样例:jobject : 0x55
//时间:70431 ms,signature:com/meituan/android/common/mtguard/NBridge->getClassLoader()Ljava/lang/ClassLoader;,参数:{},样例:
//时间:70468 ms,signature:com/meituan/android/common/mtguard/NBridge->getClassLoader()Ljava/lang/ClassLoader;,参数:{},样例:jobject : 0x55
//时间:70512 ms,signature:com/meituan/android/common/mtguard/NBridge->getClassLoader()Ljava/lang/ClassLoader;,参数:{},样例:
//时间:70550 ms,signature:com/meituan/android/common/mtguard/NBridge->getClassLoader()Ljava/lang/ClassLoader;,参数:{},样例:jobject : 0x55
//时间:70594 ms,signature:com/meituan/android/common/mtguard/NBridge->getClassLoader()Ljava/lang/ClassLoader;,参数:{},样例:jobject : 0x51
//时间:70642 ms,signature:com/meituan/android/common/mtguard/NBridge->getClassLoader()Ljava/lang/ClassLoader;,参数:{},样例:
//时间:70781 ms,signature:com/meituan/android/common/mtguard/NBridge->getClassLoader()Ljava/lang/ClassLoader;,参数:{},样例:jobject : 0x51
//时间:71877 ms,signature:com/meituan/android/common/mtguard/NBridge->getClassLoader()Ljava/lang/ClassLoader;,参数:{},样例:jobject : 0x55
case "java/lang/Class->main2(I[Ljava/lang/Object;)Ljava/lang/Object;":
//时间:9722 ms,参数:{jint=1, jobjectArray=0x0},样例:com.sankuai.meituan
return new StringObject(vm, "com.sankuai.meituan");
//时间:18395 ms,signature:java/lang/Class->main2(I[Ljava/lang/Object;)Ljava/lang/Object;,参数:{jint=4, jobjectArray=0x0},样例:ms_com.sankuai.meituan
//时间:20344 ms,signature:java/lang/Class->main2(I[Ljava/lang/Object;)Ljava/lang/Object;,参数:{jint=5, jobjectArray=0x0},样例:ppd_com.sankuai.meituan.xbt
//时间:22080 ms,signature:java/lang/Class->main2(I[Ljava/lang/Object;)Ljava/lang/Object;,参数:{jint=2, jobjectArray=0x0},样例:
//时间:28530 ms,signature:java/lang/Class->main2(I[Ljava/lang/Object;)Ljava/lang/Object;,参数:{jint=6, jobjectArray=0x0},样例:5.2.10
//时间:29961 ms,signature:java/lang/Class->main2(I[Ljava/lang/Object;)Ljava/lang/Object;,参数:{jint=3, jobjectArray=0x0},样例:jobject : 0x0 { de/robv/android/xposed/XposedBridge }
//时间:38354 ms,signature:java/lang/Class->main2(I[Ljava/lang/Object;)Ljava/lang/Object;,参数:{jint=3, jobjectArray=0x0},样例:
//时间:39312 ms,signature:java/lang/Class->main2(I[Ljava/lang/Object;)Ljava/lang/Object;,参数:{jint=8, jobjectArray=0x0},样例:
//时间:47169 ms,signature:java/lang/Class->main2(I[Ljava/lang/Object;)Ljava/lang/Object;,参数:{jint=40, jobjectArray=0x0},样例:
//时间:50520 ms,signature:java/lang/Class->main2(I[Ljava/lang/Object;)Ljava/lang/Object;,参数:{jint=8, jobjectArray=0x0},样例:
//时间:90586 ms,signature:java/lang/Class->main2(I[Ljava/lang/Object;)Ljava/lang/Object;,参数:{jint=32, jobjectArray=0x0},样例:
case "java/lang/Long->valueOf(J)Ljava/lang/Long;":
//时间:41495 ms,参数:{jlong=1631241713924},样例:jobject : 0x89 { java/lang/Long }
return DvmLong.valueOf(vm, vaList.getLongArg(0));
//时间:59660 ms,signature:java/lang/Long->valueOf(J)Ljava/lang/Long;,参数:{jlong=1631241725638},样例:jobject : 0x85 { java/lang/Long }
case "java/lang/String->format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;":
//时间:43624 ms,参数:{jstring=hex:25313178, string:%11x, jobjectArray=0x99},样例:17bcd953904
return new StringObject(vm, String.format(vaList.getObjectArg(0).getValue().toString(), vaList.getIntArg(1)));
//时间:87572 ms,signature:java/lang/String->format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;,参数:{jstring=hex:25313178, string:%11x, jobjectArray=0x95},样例:17bcd9566c6
case "java/lang/System->getProperty(Ljava/lang/String;)Ljava/lang/String;":
//时间:15105 ms,参数:{jstring=hex:687474702e70726f7879486f7374, string:http.proxyHost},样例:jobject : 0x0 { de/robv/android/xposed/XposedBridge }
return new StringObject(vm, "jobject : 0x0 { de/robv/android/xposed/XposedBridge }");
//时间:16512 ms,signature:java/lang/System->getProperty(Ljava/lang/String;)Ljava/lang/String;,参数:{jstring=hex:68747470732e70726f7879486f7374, string:https.proxyHost},样例:jobject : 0x0 { de/robv/android/xposed/XposedBridge }
case "java/util/UUID->randomUUID()Ljava/util/UUID;":
//时间:40169 ms,参数:{},样例:jobject : 0x61
return vm.resolveClass("java/util/UUID").newObject(UUID.randomUUID());
//时间:51574 ms,signature:java/util/UUID->randomUUID()Ljava/util/UUID;,参数:{},样例:jobject : 0x69
default:
return super.callStaticObjectMethod(vm, dvmClass, signature, vaList);
}
}
@Override public long callStaticLongMethodV(BaseVM vm, DvmClass dvmClass, String signature, VaList vaList) {
printArgs(vm,"callStaticLongMethodV", signature, vaList);
switch (signature) {
case "java/lang/System->currentTimeMillis()J":
//时间:41080 ms,参数:{},样例:1631241713924
return System.currentTimeMillis();
//时间:53598 ms,signature:java/lang/System->currentTimeMillis()J,参数:{},样例:1631241725638
default:
return super.callStaticLongMethodV(vm, dvmClass, signature, vaList);
}
}
@Override public int getIntField(BaseVM vm, DvmObject<?> dvmObject, String signature) {
switch (signature) {
case "android/content/pm/PackageInfo->versionCode:I":
//时间:27256 ms,样例:1100130207
return 1100130207;
default:
return super.getIntField(vm, dvmObject, signature);
}
}
@Override public DvmObject<?> getStaticObjectField(BaseVM vm, DvmClass dvmClass, String signature) {
switch (signature) {
case "android/os/Build$VERSION->RELEASE:Ljava/lang/String;":
//时间:35693 ms,样例:9
return new StringObject(vm, "9");
case "android/os/Build->BRAND:Ljava/lang/String;":
//时间:30368 ms,样例:xiaomi
return new StringObject(vm, "xiaomi");
case "android/os/Build->HARDWARE:Ljava/lang/String;":
//时间:31937 ms,样例:mt6765
return new StringObject(vm, "mt6765");
case "android/os/Build->MODEL:Ljava/lang/String;":
//时间:32233 ms,样例:Redmi 6A
return new StringObject(vm, "Redmi 6A");
case "android/os/Build->TAGS:Ljava/lang/String;":
//时间:35393 ms,样例:release-keys
return new StringObject(vm, "release-keys");
case "android/os/Build->TYPE:Ljava/lang/String;":
//时间:30675 ms,样例:user
return new StringObject(vm, "user");
default:
return super.getStaticObjectField(vm, dvmClass, signature);
}
}
@Override public DvmObject<?> getObjectField(BaseVM vm, DvmObject<?> dvmObject, String signature) {
switch (signature) {
case "android/content/pm/ApplicationInfo->sourceDir:Ljava/lang/String;":
//时间:24182 ms,样例:/data/app/com.sankuai.meituan-1POrADLXYch5YRE6dgT4FQ==/base.apk
return new StringObject(vm, "/data/app/com.sankuai.meituan-1POrADLXYch5YRE6dgT4FQ==/base.apk");
case "android/content/pm/PackageInfo->versionName:Ljava/lang/String;":
//时间:25833 ms,样例:DecodeJob
return new StringObject(vm, "DecodeJob");
default:
return super.getObjectField(vm, dvmObject, signature);
}
}
@Override public boolean callBooleanMethodV(BaseVM vm, DvmObject<?> dvmObject, String signature, VaList vaList) {
printArgs(vm,"callBooleanMethodV", signature, vaList);
switch (signature) {
case "0x35->canRead()Z":
//时间:11308 ms,参数:{},样例:false
return false;
case "java/lang/Object->canRead()Z":
//时间:69207 ms,参数:{},样例:false
return false;
default:
return super.callBooleanMethodV(vm, dvmObject, signature, vaList);
}
}
@Override public DvmObject<?> newObjectV(BaseVM vm, DvmClass dvmClass, String signature, VaList vaList) {
printArgs(vm,"newObjectV", signature, vaList);
switch (signature) {
case "java/lang/String-><init>([BLjava/lang/String;)V":
//时间:8810 ms,参数:{jstring=hex:636f6d2f6d65697475616e2f616e64726f69642f636f6d6d6f6e2f6d7467756172642f4e427269646765, string:com/meituan/android/common/mtguard/NBridge, jbyteArray=0x39},样例:jobject : 0x51
return super.newObjectV(vm, dvmClass, signature, vaList);
case "java/io/File-><init>(Ljava/lang/String;)V":
//时间:10812 ms,参数:{jstring=0x25},样例:jobject : 0x35
return dvmClass.newObject(vaList.getObjectArg(0).getValue().toString());
//时间:13051 ms,signature:java/lang/String-><init>([BLjava/lang/String;)V,参数:{jstring=hex:64652e726f62762e616e64726f69642e78706f7365642e58706f736564427269646765, string:de.robv.android.xposed.XposedBridge, jbyteArray=0x21},样例:jobject : 0x41
//时间:14823 ms,signature:java/lang/String-><init>([BLjava/lang/String;)V,参数:{jstring=hex:687474702e70726f7879486f7374, string:http.proxyHost, jbyteArray=0x31},样例:jobject : 0x59
//时间:16114 ms,signature:java/lang/String-><init>([BLjava/lang/String;)V,参数:{jstring=hex:68747470732e70726f7879486f7374, string:https.proxyHost, jbyteArray=0x35},样例:jobject : 0x55
//时间:17671 ms,signature:java/lang/String-><init>([BLjava/lang/String;)V,参数:{jstring=hex:636f6d2f6d65697475616e2f616e64726f69642f636f6d6d6f6e2f6d7467756172642f4e427269646765, string:com/meituan/android/common/mtguard/NBridge, jbyteArray=0x39},样例:jobject : 0x51
//时间:19695 ms,signature:java/lang/String-><init>([BLjava/lang/String;)V,参数:{jstring=hex:636f6d2f6d65697475616e2f616e64726f69642f636f6d6d6f6e2f6d7467756172642f4e427269646765, string:com/meituan/android/common/mtguard/NBridge, jbyteArray=0x35},样例:jobject : 0x59
//时间:21435 ms,signature:java/lang/String-><init>([BLjava/lang/String;)V,参数:{jstring=hex:636f6d2f6d65697475616e2f616e64726f69642f636f6d6d6f6e2f6d7467756172642f4e427269646765, string:com/meituan/android/common/mtguard/NBridge, jbyteArray=0x31},样例:jobject : 0x55
//时间:23727 ms,signature:java/lang/String-><init>([BLjava/lang/String;)V,参数:{jstring=hex:636f6d2e73616e6b7561692e6d65697475616e, string:com.sankuai.meituan, jbyteArray=0x61},样例:jobject : 0x89
//时间:27991 ms,signature:java/lang/String-><init>([BLjava/lang/String;)V,参数:{jstring=hex:636f6d2f6d65697475616e2f616e64726f69642f636f6d6d6f6e2f6d7467756172642f4e427269646765, string:com/meituan/android/common/mtguard/NBridge, jbyteArray=0x35},样例:jobject : 0x51
//时间:29435 ms,signature:java/lang/String-><init>([BLjava/lang/String;)V,参数:{jstring=hex:636f6d2f6d65697475616e2f616e64726f69642f636f6d6d6f6e2f6d7467756172642f4e427269646765, string:com/meituan/android/common/mtguard/NBridge, jbyteArray=0x31},样例:jobject : 0x59
//时间:31292 ms,signature:java/lang/String-><init>([BLjava/lang/String;)V,参数:{jstring=hex:726f2e6275696c642e6964, string:ro.build.id, jbyteArray=0x35},样例:jobject : 0x55
//时间:32828 ms,signature:java/lang/String-><init>([BLjava/lang/String;)V,参数:{jstring=hex:706572736973742e7379732e7573622e636f6e666967, string:persist.sys.usb.config, jbyteArray=0x39},样例:jobject : 0x51
//时间:33801 ms,signature:java/lang/String-><init>([BLjava/lang/String;)V,参数:{jstring=hex:7379732e7573622e636f6e666967, string:sys.usb.config, jbyteArray=0x35},样例:jobject : 0x59
//时间:34745 ms,signature:java/lang/String-><init>([BLjava/lang/String;)V,参数:{jstring=hex:7379732e7573622e7374617465, string:sys.usb.state, jbyteArray=0x31},样例:jobject : 0x55
case "java/lang/Integer-><init>(I)V":
//时间:36110 ms,参数:{jint=0},样例:jobject : 0x29
return DvmInteger.valueOf(vm, vaList.getIntArg(0));
//时间:37401 ms,signature:java/lang/String-><init>([BLjava/lang/String;)V,参数:{jstring=hex:636f6d2f6d65697475616e2f616e64726f69642f636f6d6d6f6e2f6d7467756172642f4e427269646765, string:com/meituan/android/common/mtguard/NBridge, jbyteArray=0x39},样例:jobject : 0x51
//时间:38322 ms,signature:java/lang/String-><init>([BLjava/lang/String;)V,参数:{jstring=hex:636f6d2f6d65697475616e2f616e64726f69642f636f6d6d6f6e2f6d7467756172642f4e427269646765, string:com/meituan/android/common/mtguard/NBridge, jbyteArray=0x75},样例:jobject : 0x95
//时间:40201 ms,signature:java/lang/String-><init>([BLjava/lang/String;)V,参数:{jstring=hex:636f6d2f6d65697475616e2f616e64726f69642f636f6d6d6f6e2f6c6f636174652f6170692f4d7454656c6570686f6e794d616e61676572, string:com/meituan/android/common/locate/api/MtTelephonyManager, jbyteArray=0x49},样例:jobject : 0x69
//时间:41840 ms,signature:java/lang/String-><init>([BLjava/lang/String;)V,参数:{jstring=hex:6d74675f6775617264, string:mtg_guard, jbyteArray=0x71},样例:jobject : 0x99
case "java/lang/Class-><init>(Landroid/content/Context;Ljava/lang/String;)V":
//时间:42265 ms,参数:{jstring=0x99, jobject=0x15 { java/lang/Object }},样例:jobject : 0x85
return super.newObjectV(vm, dvmClass, signature, vaList);
//时间:43044 ms,signature:java/lang/String-><init>([BLjava/lang/String;)V,参数:{jstring=hex:25313178, string:%11x, jbyteArray=0xb9},样例:jobject : 0xd1
//时间:44600 ms,signature:java/lang/String-><init>([BLjava/lang/String;)V,参数:{jstring=hex:636f6d2f6d65697475616e2f616e64726f69642f636f6d6d6f6e2f6c6f636174652f6170692f4d744c6f636174696f6e4d616e61676572, string:com/meituan/android/common/locate/api/MtLocationManager, jbyteArray=0x51},样例:jobject : 0x79
//时间:46001 ms,signature:java/lang/String-><init>([BLjava/lang/String;)V,参数:{jstring=hex:636f6d2f6d65697475616e2f616e64726f69642f636f6d6d6f6e2f6d7467756172642f4e427269646765, string:com/meituan/android/common/mtguard/NBridge, jbyteArray=0x71},样例:jobject : 0x95
//时间:46612 ms,signature:java/lang/String-><init>([BLjava/lang/String;)V,参数:{jstring=hex:6d74675f6775617264, string:mtg_guard, jbyteArray=0x81},样例:jobject : 0xa9
//时间:47030 ms,signature:java/lang/Class-><init>(Landroid/content/Context;Ljava/lang/String;)V,参数:{jstring=0xa9, jobject=0x21 { java/lang/Object }},样例:jobject : 0x95
//时间:49353 ms,signature:java/lang/String-><init>([BLjava/lang/String;)V,参数:{jstring=hex:636f6d2f6d65697475616e2f616e64726f69642f636f6d6d6f6e2f6d7467756172642f4e427269646765, string:com/meituan/android/common/mtguard/NBridge, jbyteArray=0x79},样例:jobject : 0x91
//时间:49393 ms,signature:java/lang/String-><init>([BLjava/lang/String;)V,参数:{jstring=hex:636f6d2f6d65697475616e2f616e64726f69642f636f6d6d6f6e2f6c6f636174652f6170692f4d74576966694d616e61676572, string:com/meituan/android/common/locate/api/MtWifiManager, jbyteArray=0x69},样例:jobject : 0x89
case "0x51-><init>([BLjava/lang/String;)V":
//时间:51357 ms,参数:{jstring=0xa1, jbyteArray=0x91},样例:jobject : 0xb9
return super.newObjectV(vm, dvmClass, signature, vaList);
//时间:51778 ms,signature:java/lang/Class-><init>(Landroid/content/Context;Ljava/lang/String;)V,参数:{jstring=0xb9, jobject=0x35 { java/lang/Object }},样例:jobject : 0xa5
//时间:64420 ms,signature:java/io/File-><init>(Ljava/lang/String;)V,参数:{jstring=0x25},样例:jobject : 0x35 { java/lang/Object }
case "0x25-><init>([BLjava/lang/String;)V":
//时间:74721 ms,参数:{jstring=0x45, jbyteArray=0x35},样例:jobject : 0x59 { java/lang/Object }
return super.newObjectV(vm, dvmClass, signature, vaList);
//时间:79694 ms,signature:java/lang/String-><init>([BLjava/lang/String;)V,参数:{jstring=hex:25313178, string:%11x, jbyteArray=0xb5},样例:jobject : 0xd9
//时间:82023 ms,signature:java/lang/String-><init>([BLjava/lang/String;)V,参数:{jstring=hex:636f6d2f6d65697475616e2f616e64726f69642f636f6d6d6f6e2f6d7467756172642f4e427269646765, string:com/meituan/android/common/mtguard/NBridge, jbyteArray=0x71},样例:jobject : 0x99
//时间:82806 ms,signature:java/lang/String-><init>([BLjava/lang/String;)V,参数:{jstring=hex:636f6d2f6d65697475616e2f616e64726f69642f636f6d6d6f6e2f6d7467756172642f4e427269646765, string:com/meituan/android/common/mtguard/NBridge, jbyteArray=0x75},样例:jobject : 0x91
//时间:82962 ms,signature:java/lang/String-><init>([BLjava/lang/String;)V,参数:{jstring=hex:636f6d2f6d65697475616e2f616e64726f69642f636f6d6d6f6e2f6d7467756172642f4e427269646765, string:com/meituan/android/common/mtguard/NBridge, jbyteArray=0x71},样例:jobject : 0x99
//时间:83054 ms,signature:java/lang/String-><init>([BLjava/lang/String;)V,参数:{jstring=hex:636f6d2f6d65697475616e2f616e64726f69642f636f6d6d6f6e2f6d7467756172642f4e427269646765, string:com/meituan/android/common/mtguard/NBridge, jbyteArray=0x75},样例:jobject : 0x99
//时间:83214 ms,signature:java/lang/String-><init>([BLjava/lang/String;)V,参数:{jstring=hex:636f6d2f6d65697475616e2f616e64726f69642f636f6d6d6f6e2f6d7467756172642f4e427269646765, string:com/meituan/android/common/mtguard/NBridge, jbyteArray=0x71},样例:jobject : 0x91
//时间:83280 ms,signature:java/lang/String-><init>([BLjava/lang/String;)V,参数:{jstring=hex:636f6d2f6d65697475616e2f616e64726f69642f636f6d6d6f6e2f6d7467756172642f4e427269646765, string:com/meituan/android/common/mtguard/NBridge, jbyteArray=0x71},样例:jobject : 0x99
//时间:83343 ms,signature:java/lang/String-><init>([BLjava/lang/String;)V,参数:{jstring=hex:636f6d2f6d65697475616e2f616e64726f69642f636f6d6d6f6e2f6d7467756172642f4e427269646765, string:com/meituan/android/common/mtguard/NBridge, jbyteArray=0x75},样例:jobject : 0x99
//时间:83392 ms,signature:java/lang/String-><init>([BLjava/lang/String;)V,参数:{jstring=hex:636f6d2f6d65697475616e2f616e64726f69642f636f6d6d6f6e2f6d7467756172642f4e427269646765, string:com/meituan/android/common/mtguard/NBridge, jbyteArray=0x75},样例:jobject : 0x99
//时间:83562 ms,signature:java/lang/String-><init>([BLjava/lang/String;)V,参数:{jstring=hex:636f6d2f6d65697475616e2f616e64726f69642f636f6d6d6f6e2f6d7467756172642f4e427269646765, string:com/meituan/android/common/mtguard/NBridge, jbyteArray=0x75},样例:jobject : 0x95
//时间:83615 ms,signature:java/lang/String-><init>([BLjava/lang/String;)V,参数:{jstring=hex:636f6d2f6d65697475616e2f616e64726f69642f636f6d6d6f6e2f6d7467756172642f4e427269646765, string:com/meituan/android/common/mtguard/NBridge, jbyteArray=0x75},样例:jobject : 0x99
//时间:83667 ms,signature:java/lang/String-><init>([BLjava/lang/String;)V,参数:{jstring=hex:636f6d2f6d65697475616e2f616e64726f69642f636f6d6d6f6e2f6d7467756172642f4e427269646765, string:com/meituan/android/common/mtguard/NBridge, jbyteArray=0x71},样例:jobject : 0x99
//时间:83726 ms,signature:java/lang/String-><init>([BLjava/lang/String;)V,参数:{jstring=hex:636f6d2f6d65697475616e2f616e64726f69642f636f6d6d6f6e2f6d7467756172642f4e427269646765, string:com/meituan/android/common/mtguard/NBridge, jbyteArray=0x75},样例:jobject : 0x99
//时间:83788 ms,signature:java/lang/String-><init>([BLjava/lang/String;)V,参数:{jstring=hex:636f6d2f6d65697475616e2f616e64726f69642f636f6d6d6f6e2f6d7467756172642f4e427269646765, string:com/meituan/android/common/mtguard/NBridge, jbyteArray=0x71},样例:jobject : 0x99
//时间:83839 ms,signature:java/lang/String-><init>([BLjava/lang/String;)V,参数:{jstring=hex:636f6d2f6d65697475616e2f616e64726f69642f636f6d6d6f6e2f6d7467756172642f4e427269646765, string:com/meituan/android/common/mtguard/NBridge, jbyteArray=0x71},样例:jobject : 0x95
//时间:83887 ms,signature:java/lang/String-><init>([BLjava/lang/String;)V,参数:{jstring=hex:636f6d2f6d65697475616e2f616e64726f69642f636f6d6d6f6e2f6d7467756172642f4e427269646765, string:com/meituan/android/common/mtguard/NBridge, jbyteArray=0x75},样例:jobject : 0x99
//时间:83936 ms,signature:java/lang/String-><init>([BLjava/lang/String;)V,参数:{jstring=hex:636f6d2f6d65697475616e2f616e64726f69642f636f6d6d6f6e2f6d7467756172642f4e427269646765, string:com/meituan/android/common/mtguard/NBridge, jbyteArray=0x79},样例:jobject : 0x91
//时间:84063 ms,signature:java/lang/String-><init>([BLjava/lang/String;)V,参数:{jstring=hex:636f6d2f6d65697475616e2f616e64726f69642f636f6d6d6f6e2f6d7467756172642f4e427269646765, string:com/meituan/android/common/mtguard/NBridge, jbyteArray=0x75},样例:jobject : 0x99
//时间:84323 ms,signature:java/lang/String-><init>([BLjava/lang/String;)V,参数:{jstring=hex:636f6d2f6d65697475616e2f616e64726f69642f636f6d6d6f6e2f6d7467756172642f4e427269646765, string:com/meituan/android/common/mtguard/NBridge, jbyteArray=0x71},样例:jobject : 0x99
//时间:85012 ms,signature:java/lang/String-><init>([BLjava/lang/String;)V,参数:{jstring=hex:636f6d2f6d65697475616e2f616e64726f69642f636f6d6d6f6e2f6d7467756172642f4e427269646765, string:com/meituan/android/common/mtguard/NBridge, jbyteArray=0x79},样例:jobject : 0x99
//时间:90542 ms,signature:java/lang/String-><init>([BLjava/lang/String;)V,参数:{jstring=hex:6a6176612e696f2e746d70646972, string:java.io.tmpdir, jbyteArray=0x39},样例:jobject : 0x59 { java/lang/Object }
default:
return super.newObjectV(vm, dvmClass, signature, vaList);
}
}
@Override public DvmObject<?> callObjectMethodV(BaseVM vm, DvmObject<?> dvmObject, String signature, VaList vaList) {
printArgs(vm,"callObjectMethodV", signature, vaList);
switch (signature) {
case "0x19->loadClass(Ljava/lang/String;)Ljava/lang/Class;":
//时间:9345 ms,参数:{jstring=hex:636f6d2f6d65697475616e2f616e64726f69642f636f6d6d6f6e2f6d7467756172642f4e427269646765, string:com/meituan/android/common/mtguard/NBridge},样例:jobject : 0x31 { java/lang/Class }
return new StringObject(vm, "jobject : 0x31 { java/lang/Class }");
case "0x25->loadClass(Ljava/lang/String;)Ljava/lang/Class;":
//时间:13957 ms,参数:{jstring=hex:64652e726f62762e616e64726f69642e78706f7365642e58706f736564427269646765, string:de.robv.android.xposed.XposedBridge},样例:jobject : 0x0 { de/robv/android/xposed/XposedBridge }
return new StringObject(vm, "jobject : 0x0 { de/robv/android/xposed/XposedBridge }");
//时间:18206 ms,signature:0x19->loadClass(Ljava/lang/String;)Ljava/lang/Class;,参数:{jstring=hex:636f6d2f6d65697475616e2f616e64726f69642f636f6d6d6f6e2f6d7467756172642f4e427269646765, string:com/meituan/android/common/mtguard/NBridge},样例:jobject : 0x31 { java/lang/Class }
case "0x11->loadClass(Ljava/lang/String;)Ljava/lang/Class;":
//时间:20156 ms,参数:{jstring=hex:636f6d2f6d65697475616e2f616e64726f69642f636f6d6d6f6e2f6d7467756172642f4e427269646765, string:com/meituan/android/common/mtguard/NBridge},样例:jobject : 0x39 { java/lang/Class }
return new StringObject(vm, "jobject : 0x39 { java/lang/Class }");
case "0x15->loadClass(Ljava/lang/String;)Ljava/lang/Class;":
//时间:21895 ms,参数:{jstring=hex:636f6d2f6d65697475616e2f616e64726f69642f636f6d6d6f6e2f6d7467756172642f4e427269646765, string:com/meituan/android/common/mtguard/NBridge},样例:jobject : 0x35 { java/lang/Class }
return new StringObject(vm, "jobject : 0x35 { java/lang/Class }");
case "java/lang/Object->getPackageManager()Landroid/content/pm/PackageManager;":
//时间:22952 ms,参数:{},样例:jobject : 0x59
return new StringObject(vm, "jobject : 0x59");
case "0x59->getApplicationInfo(Ljava/lang/String;I)Landroid/content/pm/ApplicationInfo;":
//时间:23953 ms,参数:{jstring=hex:636f6d2e73616e6b7561692e6d65697475616e, string:com.sankuai.meituan, jint=0},样例:jobject : 0x71 { android/content/pm/ApplicationInfo }
return new StringObject(vm, "jobject : 0x71 { android/content/pm/ApplicationInfo }");
//时间:25058 ms,signature:java/lang/Object->getPackageManager()Landroid/content/pm/PackageManager;,参数:{},样例:jobject : 0x49
case "0x49->getPackageInfo(Ljava/lang/String;I)Landroid/content/pm/PackageInfo;":
//时间:25447 ms,参数:{jstring=, jint=0},样例:jobject : 0x51 { android/content/pm/PackageInfo }
return new StringObject(vm, "jobject : 0x51 { android/content/pm/PackageInfo }");
//时间:26521 ms,signature:java/lang/Object->getPackageManager()Landroid/content/pm/PackageManager;,参数:{},样例:jobject : 0x45
case "0x45->getPackageInfo(Ljava/lang/String;I)Landroid/content/pm/PackageInfo;":
//时间:26888 ms,参数:{jstring=, jint=0},样例:jobject : 0x55 { android/content/pm/PackageInfo }
return new StringObject(vm, "jobject : 0x55 { android/content/pm/PackageInfo }");
//时间:28378 ms,signature:0x19->loadClass(Ljava/lang/String;)Ljava/lang/Class;,参数:{jstring=hex:636f6d2f6d65697475616e2f616e64726f69642f636f6d6d6f6e2f6d7467756172642f4e427269646765, string:com/meituan/android/common/mtguard/NBridge},样例:jobject : 0x39 { java/lang/Class }
//时间:29813 ms,signature:0x11->loadClass(Ljava/lang/String;)Ljava/lang/Class;,参数:{jstring=hex:636f6d2f6d65697475616e2f616e64726f69642f636f6d6d6f6e2f6d7467756172642f4e427269646765, string:com/meituan/android/common/mtguard/NBridge},样例:jobject : 0x35 { java/lang/Class }
//时间:38075 ms,signature:0x11->loadClass(Ljava/lang/String;)Ljava/lang/Class;,参数:{jstring=hex:636f6d2f6d65697475616e2f616e64726f69642f636f6d6d6f6e2f6d7467756172642f4e427269646765, string:com/meituan/android/common/mtguard/NBridge},样例:jobject : 0x31 { java/lang/Class }
case "0x59->loadClass(Ljava/lang/String;)Ljava/lang/Class;":
//时间:39018 ms,参数:{jstring=hex:636f6d2f6d65697475616e2f616e64726f69642f636f6d6d6f6e2f6d7467756172642f4e427269646765, string:com/meituan/android/common/mtguard/NBridge},样例:jobject : 0x79 { java/lang/Class }
return new StringObject(vm, "jobject : 0x79 { java/lang/Class }");
case "0x61->toString()Ljava/lang/String;":
//时间:40519 ms,参数:{},样例:jobject : 0x79
return new StringObject(vm, "jobject : 0x79");
case "0x29->loadClass(Ljava/lang/String;)Ljava/lang/Class;":
//时间:40834 ms,参数:{jstring=hex:636f6d2f6d65697475616e2f616e64726f69642f636f6d6d6f6e2f6c6f636174652f6170692f4d7454656c6570686f6e794d616e61676572, string:com/meituan/android/common/locate/api/MtTelephonyManager},样例:jobject : 0x41 { java/lang/Class }
return new StringObject(vm, "jobject : 0x41 { java/lang/Class }");
case "0x31->loadClass(Ljava/lang/String;)Ljava/lang/Class;":
//时间:45458 ms,参数:{jstring=hex:636f6d2f6d65697475616e2f616e64726f69642f636f6d6d6f6e2f6c6f636174652f6170692f4d744c6f636174696f6e4d616e61676572, string:com/meituan/android/common/locate/api/MtLocationManager},样例:jobject : 0x55 { java/lang/Class }
return new StringObject(vm, "jobject : 0x55 { java/lang/Class }");
//时间:46819 ms,signature:0x59->loadClass(Ljava/lang/String;)Ljava/lang/Class;,参数:{jstring=hex:636f6d2f6d65697475616e2f616e64726f69642f636f6d6d6f6e2f6d7467756172642f4e427269646765, string:com/meituan/android/common/mtguard/NBridge},样例:jobject : 0x75 { java/lang/Class }
case "0x41->loadClass(Ljava/lang/String;)Ljava/lang/Class;":
//时间:50140 ms,参数:{jstring=hex:636f6d2f6d65697475616e2f616e64726f69642f636f6d6d6f6e2f6c6f636174652f6170692f4d74576966694d616e61676572, string:com/meituan/android/common/locate/api/MtWifiManager},样例:jobject : 0x61 { java/lang/Class }
return new StringObject(vm, "jobject : 0x61 { java/lang/Class }");
case "0x51->loadClass(Ljava/lang/String;)Ljava/lang/Class;":
//时间:50181 ms,参数:{jstring=hex:636f6d2f6d65697475616e2f616e64726f69642f636f6d6d6f6e2f6d7467756172642f4e427269646765, string:com/meituan/android/common/mtguard/NBridge},样例:jobject : 0x71 { java/lang/Class }
return new StringObject(vm, "jobject : 0x71 { java/lang/Class }");
case "0x69->toString()Ljava/lang/String;":
//时间:52003 ms,参数:{},样例:jobject : 0x71
return new StringObject(vm, "jobject : 0x71");
//时间:85743 ms,signature:0x15->loadClass(Ljava/lang/String;)Ljava/lang/Class;,参数:{jstring=0x45},样例:jobject : 0x39 { java/lang/Class }
default:
return super.callObjectMethodV(vm, dvmObject, signature, vaList);
}
}
@SneakyThrows @Override
public FileResult resolve(Emulator emulator, String pathname, int oflags) {
switch (pathname) {
default:
printFileResolve(pathname);
return null;
}
}
public void destroy() throws IOException {
emulator.close();
}
}