zhkl0228 / unidbg

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

最新版代码32位好像不支持Unicorn2Factory? #619

Open hjb1991 opened 3 months ago

hjb1991 commented 3 months ago

仅初始化时就会报错,64位正常,切到一个较老的版本时又能用了 ,出错在enableVFP()这一步,跟so应该无关,因为仅在执行emulator的初始化就会开始报错 emulator = AndroidEmulatorBuilder.for32Bit() .setProcessName("com.dragon.read") .addBackendFactory(new Unicorn2Factory(false)) // .addBackendFactory(new DynarmicFactory(false)) .setRootDir(rootDir) .build();

Exception in thread "main" com.github.unidbg.arm.backend.BackendException: unicorn.UnicornException: Invalid argument (UC_ERR_ARG) at com.github.unidbg.arm.backend.Unicorn2Backend.reg_write(Unicorn2Backend.java:111) at com.github.unidbg.arm.backend.Unicorn2Backend.enableVFP(Unicorn2Backend.java:53) at com.github.unidbg.arm.AbstractARMEmulator.(AbstractARMEmulator.java:84) at com.github.unidbg.linux.android.AndroidARMEmulator.(AndroidARMEmulator.java:35) at com.github.unidbg.linux.android.AndroidEmulatorBuilder.build(AndroidEmulatorBuilder.java:22) at com.github.unidbg.linux.android.AndroidEmulatorBuilder.build(AndroidEmulatorBuilder.java:6) at com.ss.fanqie.FanqieRead_32.(FanqieRead_32.java:48) at com.ss.fanqie.FanqieRead_32.main(FanqieRead_32.java:265) Caused by: unicorn.UnicornException: Invalid argument (UC_ERR_ARG)

magbone commented 4 weeks ago

我也遇到同样的问题,从仓库中clone最新代码,并在测试文件夹中新建android虚拟环境时遇到这个问题,由于apk时32位的所以创建32位的环境代码如下:

emulator = AndroidEmulatorBuilder
                .for32Bit()
                .addBackendFactory(new Unicorn2Factory(true))
                .setProcessName(packageName)
                .build();

64位可以正常通过但是apk里so的文件路径不对,是64位的找不到。