首页
社区
课程
招聘
[原创]注入安卓进程,并hook java世界的方法
发表于: 2014-3-28 14:16 190706

[原创]注入安卓进程,并hook java世界的方法

2014-3-28 14:16
190706
收藏
免费 7
支持
分享
最新回复 (161)
雪    币: 43
活跃值: (388)
能力值: ( LV9,RANK:140 )
在线值:
发帖
回帖
粉丝
26
HookArtMethod在art.cpp里面,预想中是用来支持art的,现在是不可用的
2014-4-1 15:23
0
雪    币: 43
活跃值: (388)
能力值: ( LV9,RANK:140 )
在线值:
发帖
回帖
粉丝
27
我研究art也有一两个月了,源码也看得差不多了,真没发现能HOOK一个非native java method!
这也是这篇文章的起因,dalvik虽然出来没几年,但也显得老态龙钟了.先不说64位,现在移动处理能力暴涨,但是这个增长趋势也是有个限度的,当不能从硬件上提升体验,那时候就是转向系统的优化,而dalvik就是个瓶颈,纯粹的dalvik是会被抛弃的.但完全的抛弃应该是不会有的,dalvik就是安卓的核心所在,被彻底抛弃那就安卓就不叫安卓了,除非谷歌真的够魄力整个给重做了,况且技术层面上说,art只是dalvik的另外一种实现方式.至于64位在手持设备的意义不是很大,手持设备终将不会成为大数据处理的载体,64位的地址扩展带来的内存容量提升可能比较有意思一点.
2014-4-1 15:39
0
雪    币: 230
活跃值: (106)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
28
看了一遍,好多地方还是没明白,收藏学习了!
2014-4-1 19:48
0
雪    币: 7
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
29
不错的教程  感谢LZ的分享
2014-4-1 21:32
0
雪    币: 1025
活跃值: (3327)
能力值: ( LV11,RANK:190 )
在线值:
发帖
回帖
粉丝
30
标记下,刘明
2014-4-2 10:20
0
雪    币: 181
活跃值: (45)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
31
拜谢!!!!
2014-4-2 11:26
0
雪    币: 181
活跃值: (45)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
32
请教楼主,hook到java方法后,如何在hook中调用原来方法????
2014-4-2 11:51
0
雪    币: 181
活跃值: (45)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
33
lz你好,我想请教一个问题:

你代码中用到的class Method等类和dvXXXX系列函数,是dalivk虚拟机中提供的吧?这些类、方法如何学习?有没有什么资料系统的讲这些接口的(难道这是一套SDK?)?

希望lz有空的时候回复我的问题。拜谢!
2014-4-3 09:15
0
雪    币: 105
活跃值: (486)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
34
非常感谢你的分享
2014-4-3 10:09
0
雪    币: 43
活跃值: (388)
能力值: ( LV9,RANK:140 )
在线值:
发帖
回帖
粉丝
35
这个我也没有找到一个很完美的方法,但是还是有一个方法。就是用“递归”的方式进入原来的方法:先Hook java method,当执行序列到我们注入的代码的时候,先做完你的坏事,然后unhook这个方法,再“递归”调用自身,返回的时候再Hook它。
2014-4-3 13:52
0
雪    币: 43
活跃值: (388)
能力值: ( LV9,RANK:140 )
在线值:
发帖
回帖
粉丝
36
你去下我提供的测试代码就知道我是怎么引用的了,是直接从虚拟机源码里引用的.
至于描述这些方法接口的资料,系统的是没有的,都是网上一些零散的描述.这毕竟只是用于实现系统内部功能的,所以没有什么公开资料,真想学习的话,就去读它的源码和注释,对于开源项目来说,源码和注释是最好的学习资料了.
别看着虚拟机源码有几十兆,它的核心部分没那么庞大.多留意一下,利用一下辅助工具,还是很容易看到你想看到的东西的
2014-4-3 14:07
0
雪    币: 181
活跃值: (45)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
37
感谢,你的代码我已经下载了,我以前都是做的本地层拦截,这块一直想搞没开始,感谢回复,我有问题了再请教你
2014-4-3 17:11
0
雪    币: 5
活跃值: (33)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
38
谢谢分享,很喜欢,收藏了!
2014-4-5 23:07
0
雪    币: 71
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
39
感谢分享 不错不错 收藏了
2014-4-6 15:03
0
雪    币: 181
活跃值: (45)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
40
又来麻烦lz,先拜谢。

我准备学习dalvik虚拟机源码,准备做android java 方法拦截。我想请问一下,我应该看虚拟机源码哪一部分,如何学习,有没有啥比较好的教程之类的,毕竟源码还是很大的-_-!。请lz多多指点,拜谢啊拜谢。

祝工作顺利。
2014-4-8 20:20
0
雪    币: 43
活跃值: (388)
能力值: ( LV9,RANK:140 )
在线值:
发帖
回帖
粉丝
41
大体的方法是:找到切入点,然后顺藤摸瓜!
既然是做方法拦截的话,那就是看dalvik字节码执行的部分,这部分的代码都在/dalvik/vm下,具体的你看下目录结构就清楚了。基本每个文件名都表达了其意义。
2014-4-9 11:36
0
雪    币: 8
活跃值: (56)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
42
不错,学习了
2014-4-9 17:18
0
雪    币: 181
活跃值: (45)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
43
感谢!拜谢!
2014-4-9 18:49
0
雪    币: 7
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
44
看完标题 就猜到 肯定是用反射 在c/c++中调用java,一般软件开发中也会用到这种方法,主要是当处理数据的方法用C/C++完成,需要在java代码中显示进度条之类的操作 却没有数据,于是在C/c++中去反射获取方法,再调用自身的数据去执行相应操作。
2014-4-13 00:32
0
雪    币: 43
活跃值: (388)
能力值: ( LV9,RANK:140 )
在线值:
发帖
回帖
粉丝
45
这篇文章可不是用来介绍jni和反射的,就那点事也不好意思发这里。这篇文章的核心是HOOK,反射只是用来找到相应方法而已,还有一个要点是在没有java主动支持的情况下从native进入java世界,寻找虚拟机的实例也是个难点。
2014-4-13 01:10
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
46
谢谢分享
2014-4-22 10:50
0
雪    币: 43
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
47
表示虚拟机里测试api8,api16均无法通过,process直接stopped的!还有人遇到同样的情况阿??
2014-4-22 11:10
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
48
mark
2014-4-23 00:13
0
雪    币: 4
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
49
这个要mark一下啊。感谢楼主
2014-4-23 11:18
0
雪    币: 132
活跃值: (19)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
50
....无法OPEN DLL~
2014-4-24 14:59
0
游客
登录 | 注册 方可回帖
返回