unidbg icon indicating copy to clipboard operation
unidbg copied to clipboard

最新代码:java.lang.ClassNotFoundException: android.content.Context

Open nantian-dog opened this issue 4 years ago • 12 comments

下载最新的unidbg代码,由于so里面调用了java类,所以自行创建了对应的java类,然后加上: vm.setDvmClassFactory(new ProxyClassFactory()); 出现如下错误: [20:04:31 497] WARN [com.github.unidbg.linux.android.dvm.jni.ProxyJni] (ProxyJni:296) - callObjectMethod java.lang.ClassNotFoundException: android.content.Context at java.net.URLClassLoader.findClass(URLClassLoader.java:382) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) at com.github.unidbg.linux.android.dvm.jni.ProxyClassLoader.loadClass(ProxyClassLoader.java:23) at com.github.unidbg.linux.android.dvm.jni.ProxyJni.callObjectMethod(ProxyJni.java:287) at com.github.unidbg.linux.android.dvm.DvmMethod.callObjectMethod(DvmMethod.java:70) at com.github.unidbg.linux.android.dvm.DalvikVM$20.handle(DalvikVM.java:372) at com.github.unidbg.linux.ARM32SyscallHandler.hook(ARM32SyscallHandler.java:103) at com.github.unidbg.arm.backend.UnicornBackend$6.hook(UnicornBackend.java:271) at unicorn.Unicorn$NewHook.onInterrupt(Unicorn.java:128) at unicorn.Unicorn.emu_start(Native Method) at com.github.unidbg.arm.backend.UnicornBackend.emu_start(UnicornBackend.java:296) at com.github.unidbg.AbstractEmulator.emulate(AbstractEmulator.java:382) at com.github.unidbg.AbstractEmulator.eFunc(AbstractEmulator.java:471) at com.github.unidbg.arm.AbstractARMEmulator.eFunc(AbstractARMEmulator.java:215) at com.github.unidbg.Module.emulateFunction(Module.java:154) at com.github.unidbg.linux.android.dvm.DvmObject.callJniMethod(DvmObject.java:128) at com.github.unidbg.linux.android.dvm.DvmClass.callStaticJniMethodObject(DvmClass.java:277) at com.bytedance.frameworks.core.encrypt.Candy.getCandyDataWithKeyForJava(Candy.java:92) at com.bytedance.frameworks.core.encrypt.Candy.main(Candy.java:108) [20:04:31 500] WARN [com.github.unidbg.linux.ARM32SyscallHandler] (ARM32SyscallHandler:446) - handleInterrupt intno=2, NR=-1073744072, svcNumber=0x113, PC=unidbg@0xfffe01c4, syscall=null java.lang.UnsupportedOperationException: android/content/Context->getPackageManager()Landroid/content/pm/PackageManager; at com.github.unidbg.linux.android.dvm.JniFunction.callObjectMethod(JniFunction.java:192) at com.github.unidbg.linux.android.dvm.jni.ProxyJni.callObjectMethod(ProxyJni.java:298) at com.github.unidbg.linux.android.dvm.DvmMethod.callObjectMethod(DvmMethod.java:70) at com.github.unidbg.linux.android.dvm.DalvikVM$20.handle(DalvikVM.java:372) at com.github.unidbg.linux.ARM32SyscallHandler.hook(ARM32SyscallHandler.java:103) at com.github.unidbg.arm.backend.UnicornBackend$6.hook(UnicornBackend.java:271) at unicorn.Unicorn$NewHook.onInterrupt(Unicorn.java:128) at unicorn.Unicorn.emu_start(Native Method) at com.github.unidbg.arm.backend.UnicornBackend.emu_start(UnicornBackend.java:296) at com.github.unidbg.AbstractEmulator.emulate(AbstractEmulator.java:382) at com.github.unidbg.AbstractEmulator.eFunc(AbstractEmulator.java:471) at com.github.unidbg.arm.AbstractARMEmulator.eFunc(AbstractARMEmulator.java:215) at com.github.unidbg.Module.emulateFunction(Module.java:154) at com.github.unidbg.linux.android.dvm.DvmObject.callJniMethod(DvmObject.java:128) at com.github.unidbg.linux.android.dvm.DvmClass.callStaticJniMethodObject(DvmClass.java:277) 请问如何解决这个问题,有点茫然 @zhkl0228

nantian-dog avatar Nov 30 '20 12:11 nantian-dog

使用ProxyClassFactory会自动反射调用java类,提示不存在的创建同样包名的类

zhkl0228 avatar Nov 30 '20 16:11 zhkl0228

使用ProxyClassFactory会自动反射调用java类,提示不存在的创建同样包名的类 这个我看其他的issue提到过,但是android.content.Context自己创建不知道该怎么写,如果是将安卓Context类源码全部复制过来好像也不太现实...

nantian-dog avatar Nov 30 '20 18:11 nantian-dog

@zhkl0228 可否提供一个自己创建android.content.Context的例子

nantian-dog avatar Nov 30 '20 18:11 nantian-dog

创建最简单的空白类,后续运行缺啥补啥

On Tue, Dec 1, 2020 at 02:47 nantian-dog [email protected] wrote:

@zhkl0228 https://github.com/zhkl0228 可否提供一个自己创建android.content.Context的例子

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/zhkl0228/unidbg/issues/211#issuecomment-735971670, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAKSR76ONQV665NMCOIID4LSSPSFFANCNFSM4UHPT4QA .

zhkl0228 avatar Nov 30 '20 20:11 zhkl0228

@zhkl0228 我创建了android.content.Context里面有一个函数是getPackageManager,所以我又创建了android.content.pm.PackageManager空白类,代码如下: `package android.content;

import android.content.pm.PackageManager;

public class Context { public Object getPackageManager(){ return new PackageManager(); } } package android.content.pm;

public class PackageManager { } 现在是报了这么一个错:[22:02:19 747] WARN [com.github.unidbg.linux.ARM32SyscallHandler] (ARM32SyscallHandler:446) - handleInterrupt intno=2, NR=-1073744072, svcNumber=0x113, PC=unidbg@0xfffe01c4, syscall=null java.lang.IllegalStateException: obj is null: android.content.Context@55e4af at com.github.unidbg.linux.android.dvm.jni.ProxyJni.callObjectMethod(ProxyJni.java:291) at com.github.unidbg.linux.android.dvm.DvmMethod.callObjectMethod(DvmMethod.java:70) at com.github.unidbg.linux.android.dvm.DalvikVM$20.handle(DalvikVM.java:372) at com.github.unidbg.linux.ARM32SyscallHandler.hook(ARM32SyscallHandler.java:103) at com.github.unidbg.arm.backend.UnicornBackend$6.hook(UnicornBackend.java:271) at unicorn.Unicorn$NewHook.onInterrupt(Unicorn.java:128) at unicorn.Unicorn.emu_start(Native Method) at com.github.unidbg.arm.backend.UnicornBackend.emu_start(UnicornBackend.java:296) at com.github.unidbg.AbstractEmulator.emulate(AbstractEmulator.java:382) at com.github.unidbg.AbstractEmulator.eFunc(AbstractEmulator.java:471) at com.github.unidbg.arm.AbstractARMEmulator.eFunc(AbstractARMEmulator.java:215) at com.github.unidbg.Module.emulateFunction(Module.java:154) at com.github.unidbg.linux.android.dvm.DvmObject.callJniMethod(DvmObject.java:128) at com.github.unidbg.linux.android.dvm.DvmClass.callStaticJniMethodObject(DvmClass.java:277) at com.bytedance.frameworks.core.encrypt.Candy.getCandyDataWithKeyForJava(Candy.java:94) at com.bytedance.frameworks.core.encrypt.Candy.main(Candy.java:110) [22:02:19 751] WARN [com.github.unidbg.AbstractEmulator] (AbstractEmulator:401) - emulate RX@0x400071c5[libmtguard.so]0x71c5 exception sp=unidbg@0xbffff668, msg=obj is null: android.content.Context@55e4af, offset=22ms ` 不知道应该怎么往下了

nantian-dog avatar Dec 01 '20 14:12 nantian-dog

context为null

On Tue, Dec 1, 2020 at 22:06 nantian-dog [email protected] wrote:

@zhkl0228 https://github.com/zhkl0228

我创建了android.content.Context里面有一个函数是getPackageManager,所以我又创建了android.content.pm.PackageManager空白类,代码如下: `package android.content;

import android.content.pm.PackageManager;

public class Context { public Object getPackageManager(){ return new PackageManager(); } } package android.content.pm;

public class PackageManager { } 现在是报了这么一个错:[22:02:19 747] WARN [com.github.unidbg.linux.ARM32SyscallHandler] (ARM32SyscallHandler:446) - handleInterrupt intno=2, NR=-1073744072, svcNumber=0x113, PC=unidbg@0xfffe01c4, syscall=null java.lang.IllegalStateException: obj is null: android.content.Context@55e4af at com.github.unidbg.linux.android.dvm.jni.ProxyJni.callObjectMethod(ProxyJni.java:291) at com.github.unidbg.linux.android.dvm.DvmMethod.callObjectMethod(DvmMethod.java:70) at com.github.unidbg.linux.android.dvm.DalvikVM$20.handle(DalvikVM.java:372) at com.github.unidbg.linux.ARM32SyscallHandler.hook(ARM32SyscallHandler.java:103) at com.github.unidbg.arm.backend.UnicornBackend$6.hook(UnicornBackend.java:271) at unicorn.Unicorn$NewHook.onInterrupt(Unicorn.java:128) at unicorn.Unicorn.emu_start(Native Method) at com.github.unidbg.arm.backend.UnicornBackend.emu_start(UnicornBackend.java:296) at com.github.unidbg.AbstractEmulator.emulate(AbstractEmulator.java:382) at com.github.unidbg.AbstractEmulator.eFunc(AbstractEmulator.java:471) at com.github.unidbg.arm.AbstractARMEmulator.eFunc(AbstractARMEmulator.java:215) at com.github.unidbg.Module.emulateFunction(Module.java:154) at com.github.unidbg.linux.android.dvm.DvmObject.callJniMethod(DvmObject.java:128) at com.github.unidbg.linux.android.dvm.DvmClass.callStaticJniMethodObject(DvmClass.java:277) at com.bytedance.frameworks.core.encrypt.Candy.getCandyDataWithKeyForJava(Candy.java:94) at com.bytedance.frameworks.core.encrypt.Candy.main(Candy.java:110) [22:02:19 751] WARN [com.github.unidbg.AbstractEmulator] (AbstractEmulator:401) - emulate RX@0x400071c5[libmtguard.so]0x71c5 exception sp=unidbg@0xbffff668, msg=obj is null: android.content.Context@55e4af, offset=22ms ` 不知道应该怎么往下了

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/zhkl0228/unidbg/issues/211#issuecomment-736573263, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAKSR7YAOMWWHDTHGJIM6HLSSTZ7XANCNFSM4UHPT4QA .

zhkl0228 avatar Dec 01 '20 14:12 zhkl0228

@zhkl0228 我上传了下工程,麻烦给具体怎么写,或者能不能直接帮构建下缺失的类,摸索了一天是在找不到方法 百度网盘分享链接:https://pan.baidu.com/s/1a-uTuuKTqyXGqbbUeQn6hA 提取码:8d91

nantian-dog avatar Dec 01 '20 14:12 nantian-dog

@zhkl0228 我上传了下工程,麻烦给具体怎么写,或者能不能直接帮构建下缺失的类,摸索了一天是在找不到方法 百度网盘分享链接:https://pan.baidu.com/s/1a-uTuuKTqyXGqbbUeQn6hA 提取码:8d91

hello,解决了吗,我也遇到这个问题,求指教

Gordon0918 avatar Jan 15 '21 09:01 Gordon0918

com.bytedance.frameworks.core.encrypt.Candy.getCandyDataWithKeyForJava(Candy.java:94) 这里的调用代码发来看下

zhkl0228 avatar Jan 15 '21 10:01 zhkl0228

@zhkl0228 我上传百度云,地址: https://pan.baidu.com/s/1kppFBZFM6-Nvk1bwqv7Kag 提取码:8o9c

谢谢帮忙看看!

nantian-dog avatar Jan 23 '21 07:01 nantian-dog

@nantian-dog 题主我和你看的是同个so,我直接传入的DvmObject contexts =vm.resolveClass("android/content/Context").newObject(null),但是调用一直返回null,不知道是哪里缺了什么,可以留个联系方式一起交流下吗,十分感谢!!!

sulxin avatar Mar 29 '21 07:03 sulxin

解决了吗?我也遇到Context传参到so里的问题,弄了一整天不知道怎么补这个环境

hmlyn avatar Jan 15 '24 13:01 hmlyn