Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

请教如何处理android获取磁盘使用情况函数statfs,模拟返回磁盘空间大小 #76

Open
weechatfly opened this issue Jan 2, 2020 · 3 comments

Comments

@weechatfly
Copy link

这个函数在syscall hook中有处理:
case 266:
u.reg_write(ArmConst.UC_ARM_REG_R0, statfs(emulator));
return;
我想模拟返回磁盘空间大小,该如何处理?谢谢!

@zhkl0228
Copy link
Owner

zhkl0228 commented Jan 2, 2020

暂时先自己改unidbg源码实现

@weechatfly
Copy link
Author

我自己改了一下,会出现错误
[19:36:57 292] DEBUG [cn.banny.unidbg.pointer.UnicornPointer] (UnicornPointer:295) - getString pointer=unicorn@0x4017f430[libnative-lib.so]0x16430, size=7, encoding=UTF-8, ret=/sdcard
[19:36:57 292] ERROR [cn.banny.unidbg.linux.ARMSyscallHandler] (ARMSyscallHandler:1367) - statfs pathPointer=unicorn@0x4017f430[libnative-lib.so]0x16430, buf=unicorn@0x58, path=/sdcard
[19:36:57 293] WARN [cn.banny.unidbg.linux.ARMSyscallHandler] (ARMSyscallHandler:402) - handleInterrupt intno=2, NR=266, svcNumber=0x0, PC=unicorn@0x40046210[libc.so]0x42210, syscall=null
unicorn.UnicornException: Invalid memory write (UC_ERR_WRITE_UNMAPPED)
at unicorn.Unicorn.mem_write(Native Method)
at cn.banny.unidbg.pointer.UnicornPointer.write(UnicornPointer.java:135)
at cn.banny.unidbg.pointer.UnicornPointer.setByte(UnicornPointer.java:315)
at cn.banny.unidbg.linux.ARMSyscallHandler.statfs(ARMSyscallHandler.java:1374)
at cn.banny.unidbg.linux.ARMSyscallHandler.hook(ARMSyscallHandler.java:322)
at unicorn.Unicorn.invokeInterruptCallbacks(Unicorn.java:123)
at unicorn.Unicorn.emu_start(Native Method)
at cn.banny.unidbg.AbstractEmulator.emulate(AbstractEmulator.java:302)
at cn.banny.unidbg.AbstractEmulator.eFunc(AbstractEmulator.java:400)
at cn.banny.unidbg.arm.AbstractARMEmulator.eFunc(AbstractARMEmulator.java:202)
at cn.banny.unidbg.linux.LinuxModule.emulateFunction(LinuxModule.java:203)
at cn.banny.unidbg.linux.android.dvm.DvmClass.callStaticJniMethod(DvmClass.java:209)
at cn.banny.unidbg.android.dx.AndSoTest.testRomxSdk(AndSoTest.java:909)
at [cn.banny.unidbg.android.dx.AndSoTest.main(AndSoTest.java:901)](url)

@weechatfly
Copy link
Author

测试示例:
DvmClass testClass = vm.resolveClass("com/easy/dx/MainActivity");
Number ret = testClass.callStaticJniMethod(emulator,
"stringFromJNI()Ljava/lang/String;");

        long hash = ret.intValue() & 0xffffffffL;
        String result = "";
        StringObject st1 = vm.getObject(hash);
        if(st1!=null)
        {
            result = st1.getValue();
            System.out.println("result: "+result);
        }
        else{
            System.out.println("result null");
        }

libnative-lib.so.zip

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants