【发布时间】:2015-03-18 15:27:14
【问题描述】:
在我目前的实现中,我只能拦截一些Class初始化方法的Method_Entry事件,包括:
*.<init> or *.<cinit>
* stands for any Class
所有用Java应用程序编写的方法都不见了。
目前,我已在以下位置插入“fprintf()”:
stack.cpp: dvmCallMethod()
stack.cpp: dvmCallMethodV()
stack.cpp: dvmCallMethodA()
stack.cpp: dvmInvokeMethod()
Interp.cpp: dvmInterpret()
Mterp.cpp: dvmMterpStd()
当 DVM 的这些地方被执行时,我会在我的日志文件中打印一条消息。但是,只有类初始化函数触发了我的 println() 代码。换句话说,应用程序方法的执行似乎并没有经过DVM的上述地方。我不知道 DVM 的哪个部分负责应用程序的方法执行。谁能给我一个线索?
【问题讨论】:
-
请尝试格式化您的问题,这很难阅读。
-
我刚刚重新编辑。你现在可以看到了。你能帮帮我吗?
-
请不要与此问题互动,除非您真正准备好帮助某人试图在虚拟机实现的深处进行修改。如果那不是你,那么你不是观众,不太可能理解这里的问题。
-
我想知道执行应用程序操作码是哪个函数。现在我修改一些cpp来知道是哪个
-
我的代码没有被跳过。我将 dalvik 编译为 libdvm.so ,并在 IDA 中对其进行反汇编,我的代码仍然存在。连我都调试过了。
标签: android virtual-machine dalvik