首页
社区
课程
招聘
[原创]Android下通过root实现对system_server中binder的ioctl调用拦截
发表于: 2012-10-18 13:53 223545

[原创]Android下通过root实现对system_server中binder的ioctl调用拦截

2012-10-18 13:53
223545
收藏
免费 6
支持
分享
最新回复 (48)
雪    币: 30
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
26
楼主,你好,我想问下在注入程序中,如何获取已经注入到目标进程中的new_ioctl的地址?
2013-5-29 14:30
0
雪    币: 5
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
27
常用的两种方法:
1、shellcode中直接:uint32_t addr = (uint32_t)new_ioctl;
2、如果注入目标进程的是so,可以静态分析new_ioctl在so中的偏移地址,加上该so在目标进程内存空间的起始位置即是函数地址
2013-6-1 10:09
0
雪    币: 5
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
28
#include <fcntl.h>
int open(const char *pathname, int oflag, ... );
2013-6-1 10:12
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
29
代码都是一些片断,新手理解起来还是有一定难度。
不知道LZ如果方便的话,可不可以把完整代码整理一下,发个压缩包出来呢。(当然,去掉商业部分(如果有的话))
2013-6-18 20:09
0
雪    币: 270
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
30
mark一记
2013-6-19 09:06
0
雪    币: 158
活跃值: (196)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
31
露珠啊,来份完整的呗。新手困难,
2013-6-28 09:29
0
雪    币: 39
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
32
好文章啊!
2013-12-19 16:02
0
雪    币: 269
活跃值: (25)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
33
支持科普~~
2013-12-19 17:00
0
雪    币: 39
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
34
LZ你好,我自己写了一个测试的小例子,但是修改了函数地址后系统报段错误,这个要如何解决呢 ?
2013-12-26 20:44
0
雪    币: 30
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
35
您好,我是小白,想问下,您提到的“每个被加载的模块,无论是可执行程序还是共享库,均有自己独立的PLT和GOT表。所以拦截这个模块的对外调用的GOT,不影响其他模块”
注入时不是改的是磁盘文件中的.so么?如果把注入程序设为开机启动,然后重启下设备,会不会影响到其它模块?
2014-4-5 17:46
0
雪    币: 0
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
36
觉得楼主这样直接去改so文件可能不太合理,got表是数据段的东西,在它被装载时地址需要被动态链接器重新计算的,楼主这样子直接把隶属于System_server进程的ioctl和new_ioctl的地址写进文件会不会产生问题?
2014-4-8 21:58
0
雪    币: 216
活跃值: (53)
能力值: ( LV2,RANK:140 )
在线值:
发帖
回帖
粉丝
37
楼上两位,不是直接改磁盘上的so文件内容,而是改so文件载入内存后内存映像中的内容。进程重启或设备重启后改动就没了。
2014-5-24 23:48
0
雪    币: 30
活跃值: (572)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
38
mark, 用得着。谢谢
2014-5-25 01:58
0
雪    币: 23
活跃值: (13)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
39
请问 ioctl中的数据如何解析 发送bc命令后收到br 回复 cmd BINDER_WRITE_READ 是 servicemanger ,如何提前获读到的数据了
2014-8-14 19:36
0
雪    币: 23
活跃值: (13)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
40
我也不清楚这个该如何去解析
2014-8-14 19:54
0
雪    币: 5
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
41
楼主您好,看了您的代码我有个疑问:
在3.2一开始的部分
// 将新旧ioctl地址写入Andorid的Property供外界使用
    int do_hook(void * param)
    {
        old_ioctl = ioctl;
        ……

old_ioctl = ioctl;这一句,ioctl是什么东西呢?难道就是ioctl函数的原地址?那么这个原地址是怎么获取到的呢?
谢谢!
2015-1-10 22:51
0
雪    币: 216
活跃值: (53)
能力值: ( LV2,RANK:140 )
在线值:
发帖
回帖
粉丝
42
楼上,这句的确就是使用的原ioctl的地址。C里头的函数名就代表函数入口地址,而这地址的确定是由链接器与运行期加载器共同确定的。
2015-1-11 22:06
0
雪    币: 21
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
43
将注入也放到init.rc里  重启的话就会再执行咯
2015-1-12 09:58
0
雪    币: 1
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
44
我把我们的inject 程序写在了另外一个apk程序中,我想知道它如何以root权限attach上其他的程序,谁能说说么。
2015-7-14 20:45
0
雪    币: 21
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
45
求楼主的联系方式
2015-7-18 16:41
0
雪    币: 7
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
46
在最新的5.0设备中为什么获取到的ioctl的request参数永远不等于BINDER_WRITE_READ呢,求明白人解答一下.
2015-11-4 08:39
0
雪    币: 2044
活跃值: (237)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
47
Mark...
2015-11-24 23:48
0
雪    币: 602
活跃值: (45)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
48
好文,mark Android下通过root实现对system_server中binder的ioctl调用拦截
2015-11-25 03:56
0
雪    币: 970
活跃值: (1264)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
49
略屌 略屌 ~ 读了好几遍,才读懂。。。。。
2016-1-26 15:35
0
游客
登录 | 注册 方可回帖
返回
//