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

这个环境怎么补啊,android/content/pm/Signature->toChars()[C #606

Open van416 opened 4 months ago

van416 commented 4 months ago

这个环境怎么补啊,android/content/pm/Signature->toChars()[C 这个环境怎么补啊,好像没有返回chatarray的对象,我按照下面的方式补会报错。 [10:35:53 743] WARN [com.github.unidbg.linux.ARM64SyscallHandler] (ARM64SyscallHandler:371) - handleInterrupt intno=2, NR=-128144, svcNumber=0x1ae, PC=unidbg@0xfffe0b74, LR=RX@0x4040792c[libEncoder.so]0x792c, syscall=null

@Override
public DvmObject<?> callObjectMethodV(BaseVM vm, DvmObject<?> dvmObject, String signature, VaList vaList) {
    if ("android/content/Context->getBaseContext()Landroid/content/Context;".equals(signature)) {
        return dvmObject;
    } else if ("android/content/Context->getPackageName()Ljava/lang/String;".equals(signature)) {
        return new StringObject(vm, "xxx");
    } else if ("android/content/pm/Signature->toChars()[C".equals(signature)) {
        String signatureStr = "30820xxx30";
        char[] chars = signatureStr.toCharArray();
        DvmObject<?>[] charObjects = new DvmObject<?>[chars.length];
        for (int i = 0; i < chars.length; i++) {
            charObjects[i] = DvmInteger.valueOf(vm, chars[i]);
        }
        return new ArrayObject(charObjects);
    }
    return super.callObjectMethodV(vm, dvmObject, signature, vaList);
}