注意,此方法只试用于application/context继承错误
原issue献上:https://github.com/zhkl0228/unidbg/issues/279
导致问题出现的原因:补环境返回的类,或者传入参数里,给了一个错误的Application或者Context,导致methodId为空。
正确的代码:明确继承关系,Application要继承自contextWrapper,contextWrapper要继承自context。
示例:
@Override
public DvmObject<?> callStaticObjectMethod(BaseVM vm, DvmClass dvmClass, String signature, VarArg varArg) {
switch (signature) {
case "android/app/ActivityThread->currentApplication()Landroid/app/Application;":
DvmClass cContext = vm.resolveClass("android/content/Context");
DvmClass cContextWrapper = vm.resolveClass("android/content/ContextWrapper", cContext);
return vm.resolveClass("android/app/Application", cContextWrapper).newObject(null);
}
throw new UnsupportedOperationException(signature);
}