-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Open
Description
代码如下:
package com.test;
import com.github.unidbg.AndroidEmulator;
import com.github.unidbg.Emulator;
import com.github.unidbg.Module;
import com.github.unidbg.arm.backend.DynarmicFactory;
import com.github.unidbg.file.FileResult;
import com.github.unidbg.file.IOResolver;
import com.github.unidbg.linux.android.AndroidEmulatorBuilder;
import com.github.unidbg.linux.android.AndroidResolver;
import com.github.unidbg.linux.android.dvm.*;
import com.github.unidbg.linux.android.dvm.jni.ProxyDvmObject;
import com.github.unidbg.memory.Memory;
import com.github.unidbg.virtualmodule.android.AndroidModule;
import com.github.unidbg.virtualmodule.android.JniGraphics;
import java.io.File;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
public class ConvertLib extends AbstractJni implements IOResolver {
private static AndroidEmulator emulator;
private static VM vm;
public static DvmClass JNICLibrary;
public static int input;
public static String result;
private final Module module;
private final Module netsecMOdule = null;
final String PACKAGE_NAME = "com.t.app.main";
private static final String APK_PATH = "D:\\Download\\t3.2.5.apk";
private static final String LIB_PATH = "D:\\Download\\libconvert.so";
public ConvertLib() {
emulator = AndroidEmulatorBuilder.for64Bit()
.setProcessName(PACKAGE_NAME)
.build();
final Memory memory = emulator.getMemory();
memory.setLibraryResolver(new AndroidResolver(23));
vm = emulator.createDalvikVM(new File(APK_PATH));
vm.setJni(this);
vm.setVerbose(true);
new JniGraphics(emulator, vm).register(memory);
// DalvikModule dm0 = vm.loadLibrary(new File(LIB_PATH_NE), true);
emulator.getMemory().setLibraryResolver(new AndroidResolver(23));
DalvikModule dm = vm.loadLibrary(new File(LIB_PATH), false);
dm.callJNI_OnLoad(emulator);
module = dm.getModule();
new AndroidModule(emulator, vm).register(memory);
JNICLibrary = vm.resolveClass("com.t.libconvert.ConvertLib");
}
public void sign() {
DvmObject<?> result = JNICLibrary.callStaticJniMethodObject(emulator, "getA(Ljava/lang/String;I)Ljava/lang/String;");
System.out.println(result.getValue().toString()); // getStringB()Ljava/lang/String;
}
@Override
public FileResult resolve(Emulator emulator, String pathname, int i) {
System.out.println(pathname);
return null;
}
public static void main(String[] args) {
ConvertLib convertLib = new ConvertLib();
convertLib.sign();
}
}
Metadata
Metadata
Assignees
Labels
No labels