首页
社区
课程
招聘
[求助]android APIhook
发表于: 2013-4-19 16:45 9500

[求助]android APIhook

2013-4-19 16:45
9500
我按照论坛上的文章实现了android ioctl的拦截,但是我又遇到了一些比较棘手的问题,看学论坛上高手云聚,希望能得到大神们的帮助。
1.现在拦截的函数是ioctl(通过修改.got表实现的),但是我不知道按照同样的方法能否实现对类(class)的方法的的拦截不呢?
2.在自己的注入的新函数中,我的到了ioctl的参数信息,但是我不知道如何将这些信息传递出去,因为我要根据另一个程序收集的信息确定是否拦截该通信。还是有什么更好的解决方案?

http://bbs.pediy.com/showthread.php?t=157419

[峰会]看雪.第八届安全开发者峰会10月23日上海龙之梦大酒店举办!

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 30
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
我想请教下怎么样修改.GOT表拦截ioctl呢?
2013-5-29 09:19
0
雪    币: 5
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
首先每个so都有自己的got表(elf规范),如果要拦截icotl,需要找到目标进程空间中调用icotl的那个模块(好像是libbinder.so),修改这个模块的got表中icotl的地址即可。
查询got表一种方法是静态分析模块的got表位置与大小,再加上该模块在目标进程空间中起始位置,即是需要修改的got表的内存地址,结合大小进行遍历即可找到icotl函数的地址。
2013-6-1 10:20
0
雪    币: 181
活跃值: (45)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
稍微说说吧 自己的理解。

我估计拦截类成员函数貌似不行吧,这个不懂,不敢乱讲。

我说说你第二个问题:
拦截到ioctl后,要根据不同的情况做不同的分析;比如如果ioctl是binder通信,那么ioctl的第二个参数大多数为BINDER_WRITE_READ,第3哥参数就指向一个结构体,结构体中包含了读\写缓冲区地址,你再往下分析即可。

不过在android下ioctl基本上都是binder通信。

希望对lz有帮助。
2013-6-29 17:04
0
雪    币: 14
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
楼主,可不可以给我一份拦截的源代码,我看的有点费劲啊,邮箱337182118@qq.com
2013-7-9 14:23
0
游客
登录 | 注册 方可回帖
返回
//