zhkl0228 / unidbg

Allows you to emulate an Android native library, and an experimental iOS emulation
Apache License 2.0
3.83k stars 962 forks source link

Illegal JNI version: 0xffffffff 异常求助 #396

Open hangaoke1 opened 2 years ago

hangaoke1 commented 2 years ago

异常信息

[18:17:17 760]  INFO [com.github.unidbg.linux.ARM32SyscallHandler] (ARM32SyscallHandler:1923) - openat dirfd=-100, pathname=/proc/3180/cmdline, oflags=0x20000, mode=0
[18:17:18 027]  WARN [com.github.unidbg.linux.ARM32SyscallHandler] (ARM32SyscallHandler:530) - handleInterrupt intno=2, NR=1673228784, svcNumber=0x1ef, PC=unidbg@0xfffe1368[libandroid.so]0x368, LR=RX@0x4001c1f9[libcose.so]0x1c1f9, syscall=null
java.lang.NullPointerException: Cannot invoke "com.sun.jna.Pointer.getString(long)" because "filename" is null
    at com.github.unidbg.linux.android.ArmLD$4.handle(ArmLD.java:214)
    at com.github.unidbg.linux.ARM32SyscallHandler.hook(ARM32SyscallHandler.java:132)
    at com.github.unidbg.arm.backend.UnicornBackend$11.hook(UnicornBackend.java:345)
    at unicorn.Unicorn$NewHook.onInterrupt(Unicorn.java:128)
    at unicorn.Unicorn.emu_start(Native Method)
    at com.github.unidbg.arm.backend.UnicornBackend.emu_start(UnicornBackend.java:376)
    at com.github.unidbg.AbstractEmulator.emulate(AbstractEmulator.java:386)
    at com.github.unidbg.thread.Function32.run(Function32.java:39)
    at com.github.unidbg.thread.MainTask.dispatch(MainTask.java:19)
    at com.github.unidbg.thread.UniThreadDispatcher.run(UniThreadDispatcher.java:172)
    at com.github.unidbg.thread.UniThreadDispatcher.runMainForResult(UniThreadDispatcher.java:96)
    at com.github.unidbg.AbstractEmulator.runMainForResult(AbstractEmulator.java:346)
    at com.github.unidbg.arm.AbstractARMEmulator.eFunc(AbstractARMEmulator.java:229)
    at com.github.unidbg.linux.LinuxInitFunction.call(LinuxInitFunction.java:31)
    at com.github.unidbg.linux.LinuxModule.callInitFunction(LinuxModule.java:140)
    at com.github.unidbg.linux.AndroidElfLoader.loadInternal(AndroidElfLoader.java:182)
    at com.github.unidbg.linux.AndroidElfLoader.loadInternal(AndroidElfLoader.java:63)
    at com.github.unidbg.spi.AbstractLoader.load(AbstractLoader.java:219)
    at com.github.unidbg.linux.android.dvm.BaseVM.loadLibrary(BaseVM.java:227)
    at com.greenpoint.android.Pingan.<init>(Pingan.java:47)
    at com.greenpoint.android.Pingan.main(Pingan.java:60)
[18:17:18 033]  WARN [com.github.unidbg.AbstractEmulator] (AbstractEmulator:426) - emulate RX@0x40022b75[libcose.so]0x22b75 exception sp=unidbg@0xbfffe1fc, msg=Cannot invoke "com.sun.jna.Pointer.getString(long)" because "filename" is null, offset=296ms
JNIEnv->FindClass(android/os/Build$VERSION) was called from RX@0x4001f28d[libcose.so]0x1f28d
JNIEnv->GetStaticFieldID(android/os/Build$VERSION.SDKLjava/lang/String;) => 0xf76a772 was called from RX@0x4001f2b1[libcose.so]0x1f2b1
[18:17:18 052]  WARN [com.github.unidbg.linux.android.dvm.jni.ProxyJni] (ProxyJni:698) - getStaticObjectField
java.lang.ClassNotFoundException: android.os.Build$VERSION
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:636)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:182)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:519)
    at com.github.unidbg.linux.android.dvm.jni.ProxyClassLoader.loadClass(ProxyClassLoader.java:22)
    at com.github.unidbg.linux.android.dvm.jni.ProxyJni.getStaticObjectField(ProxyJni.java:693)
    at com.github.unidbg.linux.android.dvm.DvmField.getStaticObjectField(DvmField.java:39)
    at com.github.unidbg.linux.android.dvm.DalvikVM$142.handle(DalvikVM.java:2268)
    at com.github.unidbg.linux.ARM32SyscallHandler.hook(ARM32SyscallHandler.java:132)
    at com.github.unidbg.arm.backend.UnicornBackend$11.hook(UnicornBackend.java:345)
    at unicorn.Unicorn$NewHook.onInterrupt(Unicorn.java:128)
    at unicorn.Unicorn.emu_start(Native Method)
    at com.github.unidbg.arm.backend.UnicornBackend.emu_start(UnicornBackend.java:376)
    at com.github.unidbg.AbstractEmulator.emulate(AbstractEmulator.java:386)
    at com.github.unidbg.thread.Function32.run(Function32.java:39)
    at com.github.unidbg.thread.MainTask.dispatch(MainTask.java:19)
    at com.github.unidbg.thread.UniThreadDispatcher.run(UniThreadDispatcher.java:172)
    at com.github.unidbg.thread.UniThreadDispatcher.runMainForResult(UniThreadDispatcher.java:96)
    at com.github.unidbg.AbstractEmulator.runMainForResult(AbstractEmulator.java:346)
    at com.github.unidbg.arm.AbstractARMEmulator.eFunc(AbstractARMEmulator.java:229)
    at com.github.unidbg.Module.emulateFunction(Module.java:159)
    at com.github.unidbg.linux.LinuxModule.callFunction(LinuxModule.java:257)
    at com.github.unidbg.linux.LinuxSymbol.call(LinuxSymbol.java:27)
    at com.github.unidbg.linux.android.dvm.DalvikModule.callJNI_OnLoad(DalvikModule.java:33)
    at com.greenpoint.android.Pingan.<init>(Pingan.java:48)
    at com.greenpoint.android.Pingan.main(Pingan.java:60)
[18:17:18 054]  WARN [com.github.unidbg.linux.ARM32SyscallHandler] (ARM32SyscallHandler:530) - handleInterrupt intno=2, NR=-404617804, svcNumber=0x18d, PC=unidbg@0xfffe0964, LR=RX@0x4001f3cb[libcose.so]0x1f3cb, syscall=null
java.lang.UnsupportedOperationException: android/os/Build$VERSION->SDK:Ljava/lang/String;
    at com.github.unidbg.linux.android.dvm.JniFunction.getStaticObjectField(JniFunction.java:337)
    at com.github.unidbg.linux.android.dvm.JniFunction.getStaticObjectField(JniFunction.java:332)
    at com.github.unidbg.linux.android.dvm.jni.ProxyJni.getStaticObjectField(ProxyJni.java:701)
    at com.github.unidbg.linux.android.dvm.DvmField.getStaticObjectField(DvmField.java:39)
    at com.github.unidbg.linux.android.dvm.DalvikVM$142.handle(DalvikVM.java:2268)
    at com.github.unidbg.linux.ARM32SyscallHandler.hook(ARM32SyscallHandler.java:132)
    at com.github.unidbg.arm.backend.UnicornBackend$11.hook(UnicornBackend.java:345)
    at unicorn.Unicorn$NewHook.onInterrupt(Unicorn.java:128)
    at unicorn.Unicorn.emu_start(Native Method)
    at com.github.unidbg.arm.backend.UnicornBackend.emu_start(UnicornBackend.java:376)
    at com.github.unidbg.AbstractEmulator.emulate(AbstractEmulator.java:386)
    at com.github.unidbg.thread.Function32.run(Function32.java:39)
    at com.github.unidbg.thread.MainTask.dispatch(MainTask.java:19)
    at com.github.unidbg.thread.UniThreadDispatcher.run(UniThreadDispatcher.java:172)
    at com.github.unidbg.thread.UniThreadDispatcher.runMainForResult(UniThreadDispatcher.java:96)
    at com.github.unidbg.AbstractEmulator.runMainForResult(AbstractEmulator.java:346)
    at com.github.unidbg.arm.AbstractARMEmulator.eFunc(AbstractARMEmulator.java:229)
    at com.github.unidbg.Module.emulateFunction(Module.java:159)
    at com.github.unidbg.linux.LinuxModule.callFunction(LinuxModule.java:257)
    at com.github.unidbg.linux.LinuxSymbol.call(LinuxSymbol.java:27)
    at com.github.unidbg.linux.android.dvm.DalvikModule.callJNI_OnLoad(DalvikModule.java:33)
    at com.greenpoint.android.Pingan.<init>(Pingan.java:48)
    at com.greenpoint.android.Pingan.main(Pingan.java:60)
[18:17:18 055]  WARN [com.github.unidbg.AbstractEmulator] (AbstractEmulator:426) - emulate RX@0x40022e5d[libcose.so]0x22e5d exception sp=unidbg@0xbffff678, msg=android/os/Build$VERSION->SDK:Ljava/lang/String;, offset=16ms
Exception in thread "main" java.lang.IllegalStateException: Illegal JNI version: 0xffffffff
    at com.github.unidbg.linux.android.dvm.BaseVM.checkVersion(BaseVM.java:198)
    at com.github.unidbg.linux.android.dvm.DalvikModule.callJNI_OnLoad(DalvikModule.java:39)
    at com.greenpoint.android.Pingan.<init>(Pingan.java:48)
    at com.greenpoint.android.Pingan.main(Pingan.java:60)

Process finished with exit code 1

工具版本: master

hangaoke1 commented 2 years ago

代码地址

Pr0214 commented 2 years ago

走正常补文件流程

hangaoke1 commented 2 years ago

@Pr0214 大神,能请教下需要补充什么文件吗

Pr0214 commented 2 years ago

@Pr0214 大神,能请教下需要补充什么文件吗

https://blog.csdn.net/qq_38851536