注意,此方法只试用于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);
}
文章讲述了在使用Unidbg时遇到关于context继承错误的问题,原因在于传入了错误的Application或Context。作者提供了修复示例,强调了Application需正确继承自ContextWrapper,以确保methodId的正确性。

2311

被折叠的 条评论
为什么被折叠?



