Exception in thread "main" java.lang.IllegalStateException: load library failed: InnoSecure at com.github.unidbg.linux.android.dvm.BaseVM.loadLibrary(BaseVM.java:206) at com.jason.qjp.TestDanDan.<init>(TestDanDan.java:61) at com.jason.qjp.TestDanDan.main(TestDanDan.java:28)
String apkFilePath = "/Users/zhoujie/Downloads/ddan.1.27.1.1028.1607website.434.apk"; String classPath = "com/inno/innosecure/InnoSecureUtils"; String libso = "InnoSecure"; TestDanDan test = new TestDanDan(apkFilePath, libso, classPath); test.destroy();
运行输出如下:
1 2 3 4 5 6
JNIEnv->FindClass(com/inno/innosecure/InnoSecureUtils) was called from RX@0x4000245d[libInnoSecure.so]0x245d JNIEnv->RegisterNatives(com/inno/innosecure/InnoSecureUtils, RW@0x4000a004[libInnoSecure.so]0xa004, 4) was called from RX@0x40002473[libInnoSecure.so]0x2473 RegisterNative(com/inno/innosecure/InnoSecureUtils, secure(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[B)[B, RX@0x40005d75[libInnoSecure.so]0x5d75) RegisterNative(com/inno/innosecure/InnoSecureUtils, decode([BLjava/lang/String;[B)[B, RX@0x40005edd[libInnoSecure.so]0x5edd) RegisterNative(com/inno/innosecure/InnoSecureUtils, getn()Ljava/lang/String;, RX@0x40006069[libInnoSecure.so]0x6069) RegisterNative(com/inno/innosecure/InnoSecureUtils, getv([B)Ljava/lang/String;, RX@0x400060ed[libInnoSecure.so]0x60ed)
DvmObject<String> result = obj.callJniMethodObject(emulator, "getn()Ljava/lang/String;"); return result.getValue();
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
publicstaticvoidmain(String[] args)throws Exception { //...... TestDanDan test = new TestDanDan(apkFilePath, libso, classPath); String r = test.getn(); System.out.println(r); }
// 出错: JNIEnv->CallStaticObjectMethod(classandroid/app/ActivityThread, currentApplication()Landroid/app/Application;) was called from RX@0x40001d73[libInnoSecure.so]0x1d73 [10:19:55045] WARN [com.github.unidbg.linux.ARM32SyscallHandler] (ARM32SyscallHandler:436) - handleInterrupt intno=2, NR=-1073744048, svcNumber=0x12e, PC=unidbg@0xfffe0374[libandroid.so]0x374, syscall=null java.lang.UnsupportedOperationException: android/app/ActivityThread->currentApplication()Landroid/app/Application; at com.github.unidbg.linux.android.dvm.AbstractJni.callStaticObjectMethod(AbstractJni.java:340) at com.github.unidbg.linux.android.dvm.AbstractJni.callStaticObjectMethod(AbstractJni.java:335) at com.github.unidbg.linux.android.dvm.DvmMethod.callStaticObjectMethod(DvmMethod.java:55) at com.github.unidbg.linux.android.dvm.DalvikVM$47.handle(DalvikVM.java:1032) at com.github.unidbg.linux.ARM32SyscallHandler.hook(ARM32SyscallHandler.java:93)
添加callStaticObjectMethod
1 2 3 4 5 6 7 8
@Override public DvmObject<?> callStaticObjectMethod(BaseVM vm, DvmClass dvmClass, String signature, VarArg varArg) { if (signature.equals("android/app/ActivityThread->currentApplication()Landroid/app/Application;")) { return vm.resolveClass("android/app/Application", vm.resolveClass("android/content/ContextWrapper", vm.resolveClass("android/content/Context"))).newObject(signature); }