Skip to content

运行无返回值,vm.loadLibrary执行失败,无报错 #749

@cure888

Description

@cure888

问题: github下载的代码,无任何修改,运行部分案例无结果

  1. 环境:
    unidbg: 0.9.8(无任何改动)
    jdk: 1.8.0_462
    idea: 2020.3.4 idea64.exe(破解版)
    maven: 3.8.4
    操作系统: windows 11
Image ps: 环境变量已配置 Image
  1. 运行案例
    SignUtil TTEncrypt 等几个官方案例
Image

打叉都是运行 无返回值,无任何报错 的,打勾就是没问题的,半勾这个32位没问题,64位也无返回值无报错
具体如下图所示:
Image

3.部分DEBUG日志
在配置文件中把所有日志级别都改成DEBUG
输出的日志大多为如下
[17:29:17 752] DEBUG [com.github.unidbg.linux.AndroidElfLoader] (AndroidElfLoader:199) - resolveSymbols[libdl.so]memcpy symbol resolved to libc.so [17:29:17 752] DEBUG [com.github.unidbg.linux.AndroidElfLoader] (AndroidElfLoader:199) - resolveSymbols[libdl.so]__cxa_begin_cleanup symbol resolved to libc++.so [17:29:17 753] DEBUG [com.github.unidbg.linux.AndroidElfLoader] (AndroidElfLoader:199) - resolveSymbols[libdl.so]__cxa_type_match symbol resolved to 0 [17:29:17 753] DEBUG [com.github.unidbg.linux.AndroidElfLoader] (AndroidElfLoader:199) - resolveSymbols[libc.so]__cxa_call_unexpected symbol resolved to libc++.so [17:29:17 753] DEBUG [com.github.unidbg.linux.AndroidElfLoader] (AndroidElfLoader:199) - resolveSymbols[libc.so]__cxa_begin_cleanup symbol resolved to libc++.so [17:29:17 753] DEBUG [com.github.unidbg.linux.AndroidElfLoader] (AndroidElfLoader:199) - resolveSymbols[libc.so]__cxa_type_match symbol resolved to 0 [17:29:17 753] DEBUG [com.github.unidbg.linux.AndroidElfLoader] (AndroidElfLoader:199) - resolveSymbols[libm.so]__cxa_call_unexpected symbol resolved to libc++.so [17:29:17 753] DEBUG [com.github.unidbg.linux.AndroidElfLoader] (AndroidElfLoader:199) - resolveSymbols[libm.so]__cxa_begin_cleanup symbol resolved to libc++.so [17:29:17 753] DEBUG [com.github.unidbg.linux.AndroidElfLoader] (AndroidElfLoader:199) - resolveSymbols[libm.so]__cxa_type_match symbol resolved to 0 [17:29:17 753] DEBUG [com.github.unidbg.linux.AndroidElfLoader] (AndroidElfLoader:199) - resolveSymbols[libsignutil.so]__cxa_call_unexpected symbol resolved to libc++.so [17:29:17 753] DEBUG [com.github.unidbg.linux.AndroidElfLoader] (AndroidElfLoader:199) - resolveSymbols[libsignutil.so]__cxa_begin_cleanup symbol resolved to libc++.so [17:29:17 753] DEBUG [com.github.unidbg.linux.AndroidElfLoader] (AndroidElfLoader:199) - resolveSymbols[libsignutil.so]__cxa_type_match symbol resolved to 0 [17:29:17 753] DEBUG [com.github.unidbg.linux.AbsoluteInitFunction] (AbsoluteInitFunction:50) - [libc.so]CallInitFunction: RX@0x120bb68d[libc.so]0x1668d [17:29:17 756] DEBUG [com.github.unidbg.thread.UniThreadDispatcher] (UniThreadDispatcher:95) - runMainForResult main=Runnable|Function32 address=0x120bb68d, arguments=[] [17:29:17 757] DEBUG [com.github.unidbg.thread.UniThreadDispatcher] (UniThreadDispatcher:134) - Start dispatch task=Runnable|Function32 address=0x120bb68d, arguments=[] [17:29:17 757] DEBUG [com.github.unidbg.AbstractEmulator] (AbstractEmulator:364) - emulate RX@0x120bb68d[libc.so]0x1668d started sp=unidbg@0xe4fff720

  1. 问题定位
    加载so就会中断运行
    DalvikModule dm = vm.loadLibrary(new File("unidbg-android/src/test/resources/example_binaries/armeabi-v7a/libsignutil.so"), true);
    断点定位
    com.github.unidbg.linux.LinuxModule.callInitFunction(Emulator<?> emulator, boolean mustCallInit)
    这个方法中的initAddress = initFunction.call(emulator);中的问题
    一直追踪,最后定位在 com.github.unidbg.AbstractEmulator.emulate(long begin, long until) 方法中的backend.emu_start(begin, until, 0, 0);
    emu_start是unicorn中的navtive方法,每次运行到这就被中断了,无任何报错,如果把这里注释最后会出现在类里面找不到方法的情况

感觉像是我电脑环境的原因,但是该配置的都已经配置了

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions