首页
论坛
专栏
课程

[求助]Cydia Substrate Hook Android libdvm.so 问题

AAAyangcheng 2019-1-11 15:48 281
最近了解到dalvik调用方法的过程,其中调用Java普通方法的话必定会经过  libdvm.so 中的 dvmCallMethodV 这个函数
所以我就想要 hoook dvmCallMethodV 这个方法,希望能得到方法调用顺序
hook确实成功了,能在控制台打印一些client init 等类的初始化方法.这些方法会经过  dvmCallMethodV
但是其他的方法打印不出来.
比如说,我点击按钮调用了 doSomething() 这个方法  这个方法的调用并没有经过dvmCallMethodV
是不是因为 JIT 的原因,或者说  doSomething() 这个方法根本就不会经过  dvmCallMethodV()这个方法呢,还是说我Hook的目标有问题?
请问有研究过的大神吗?


[推荐]看雪企服平台,提供APP等级保护加固等安全服务!

最新回复 (3)
deff 2019-1-11 16:10
2

1

dvmCallMethod, dvmCallMethodA, dvmCallMethodV,dvmInvokeMethod,均是可以处理的,可以参考看雪这篇文:https://bbs.pediy.com/thread-192803.htm
AAAyangcheng 2019-1-11 18:21
3

0

我去测试了一下 ,结果如下(依然不理想)
hook dvmCallMethodA 没有任何方法经过此函数
hook dvmCallMethodV 类的初始化函数经过,比如说 init client 等函数,但是 自定义的方法不会经过,比如说 doSomething()
hook dvmInvokeMethod 在java层通过反射调用的函数会经过,比如 method.invoke(obj,args) 直接调用的方法不会经过,比如 MainActivity.doSomething().

dvmCallMethod 暂时没有测试,主要是不会写hook代码.

这个问题卡了我好多天了,苦恼.
junkboy 2019-1-14 14:46
4

0

同…    看源码也没看出来原因
返回