unidbg
unidbg copied to clipboard
load so crash
java.lang.IllegalStateException: mmap2 MAP_FIXED not found mapped memory: start=0x4000a000 what is mean ?
提供测试代码
package com.sun.jna;
import android.app.VMContant; import com.github.unidbg.; import com.github.unidbg.arm.backend.DynarmicFactory; import com.github.unidbg.arm.context.RegisterContext; import com.github.unidbg.file.FileResult; import com.github.unidbg.file.IOResolver; import com.github.unidbg.file.linux.AndroidFileIO; import com.github.unidbg.hook.hookzz.HookEntryInfo; import com.github.unidbg.hook.hookzz.HookZz; import com.github.unidbg.hook.hookzz.IHookZz; import com.github.unidbg.hook.hookzz.InstrumentCallback; import com.github.unidbg.hook.whale.IWhale; import com.github.unidbg.hook.whale.Whale; import com.github.unidbg.hook.xhook.IxHook; import com.github.unidbg.linux.android.AndroidEmulatorBuilder; import com.github.unidbg.linux.android.AndroidResolver; import com.github.unidbg.linux.android.XHookImpl; import com.github.unidbg.linux.android.dvm.; import com.github.unidbg.linux.android.dvm.jni.ProxyClassFactory; import com.github.unidbg.linux.file.DirectoryFileIO; import com.github.unidbg.linux.file.MapsFileIO; import com.github.unidbg.linux.file.RandomFileIO; import com.github.unidbg.linux.file.SimpleFileIO; import com.github.unidbg.memory.Memory;
import java.io.File; import java.io.IOException;
public class Xiliao extends AbstractJni implements IOResolver {
private static LibraryResolver createLibraryResolver() {
return new AndroidResolver(19);
}
private static AndroidEmulator createARMEmulator() {
return AndroidEmulatorBuilder.for32Bit()
.setProcessName("com.sun.jna")
.addBackendFactory(new DynarmicFactory(true))
.build();
}
private final AndroidEmulator emulator;
private Module module = null;
private DvmClass AesImpl;
private VM vm = null;
private Xiliao() {
emulator = createARMEmulator();
final Memory memory = emulator.getMemory();
memory.setLibraryResolver(createLibraryResolver());
//memory.setLibraryResolver(new AndroidResolver(23)); // 设置系统类库解析
//vm = emulator.createDalvikVM(new File(System.getProperty("user.dir")+"/xiliao.apk"));
vm = emulator.createDalvikVM(null);
vm.setDvmClassFactory(new ProxyClassFactory());
vm.setVerbose(true);
vm.setJni(this);
VMContant.vm = vm;
emulator.getSyscallHandler().setVerbose(true);
//DalvikModule dm = vm.loadLibrary("crypt2", true);
//dm.callJNI_OnLoad(emulator);
//module = dm.getModule();
//DalvikModule dm2 = vm.loadLibrary("sqlite", false);
//DalvikModule dm1 = vm.loadLibrary("RongIMLib", false);
DalvikModule dm2 = vm.loadLibrary(new File("F:\\Temp\\libsqlite.so"), false);
DalvikModule dm1 = vm.loadLibrary(new File("F:\\Temp\\libRongIMLib.so"), false);
//dm1.callJNI_OnLoad(emulator);
//module = dm1.getModule();
emulator.getSyscallHandler().addIOResolver(this);
//AesImpl = vm.resolveClass("com/ehking/crypt/core/cxx/AesImpl");
/* try {
new IMPServer(Xiliao.this);
} catch (Exception e) {
e.printStackTrace();
}*/
}
public static void main(String[] args) throws Exception {
Xiliao test = new Xiliao();
}
@Override
public FileResult resolve(Emulator emulator, String pathname, int oflags) {
System.out.println("resolve file:" + pathname);
return null;
}
}
涉及的so呢
我这边也遇到这个问题了,载入SO会崩溃 libwhitebox.so_0x7e11fe9000_856064_fix.so.zip