首页
社区
课程
招聘
[分享]基于xposed的关机窃听的demo
发表于: 2014-11-13 13:30 25684

[分享]基于xposed的关机窃听的demo

2014-11-13 13:30
25684

上个月的geekpwn中天才少年flanker做了个关机窃听的演示,感觉很高大上。后来flanker在微博中也透露了基本思路,但是没有放出writeup,伤心,不过还是要感谢flanker的思路。为了能追逐天才少年的步伐,自己最近写了个xposed模块,实现了geekpwn中演示的部分功能,供大家拿去玩耍吧。
PS:碰巧与天才少年的ID相似,我想我们的id都来自Su27吧。哈哈

没什么好写的,说一下大致的hook流程吧

1、hook关机时的提示按钮
 就是点“关机”按钮后弹出来的那个提示框中的“确定”按钮。
这是一个AlertDialog,所以hook住它的setPositiveButton函数,将参数中的onClickListener对象替换掉。
在自定义的onClickListener中实现,播放关机动画,设置屏幕超时等功能。
播放关机动画的地方有点问题,执行一次关机动画命令bootanimation只能播放大概5s钟就停了,为了播放的长一点,播放了两次,然后屏幕超时,自动熄屏。为了标明当前处在“假关机”状态,将状态写入了文件/data/local/tmp/1024.hack中,这应该是最简单的方法了吧,有人说还可以通过broadcast或者service来完成进程间通信,没有测试。

2、hook电源服务,防止屏幕亮起
hook住PowerManagerService中的setScreenStateLocked方法,阻止点亮屏幕。

3、处理电源按键
在“假关机”状态中处理电源按键,如果检测到长按,执行reboot命令重启手机,清除1024.hack中的假关机标志。

4、hook来电
hook 住CallNotifier中的handleMessage方法,如果检测到新的来电,直接调用PhoneUtils中的answerCall方法,就可以接通电话。

      没了,就实现了这么点东西。其中会有不少bug,尤其是在全局的标志文件1024.hack上。不知道天才flanker是怎么实现的。我自己也是想拿来玩玩的,也并没有像把它写成真正有攻击性的木马,毕竟那也是需要深厚功力的。另外,对于TK在微博中提到的那些细节点(参考教主微博f4cK9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6W2K9h3u0G2i4K6u0W2j5$3!0E0i4K6u0r3x3e0b7H3x3e0f1J5y4K6f1#2x3#2)9J5c8V1u0K6P5h3N6Z5K9Y4A6B7h3W2)9K6c8Y4u0W2k6W2)9K6c8q4)9J5y4Y4c8&6M7r3g2Q4x3@1c8U0L8$3#2E0k6h3&6@1i4@1g2r3i4@1u0o6i4K6R3&6i4@1g2r3i4@1u0o6i4K6S2o6i4@1f1@1i4@1t1^5i4@1q4m8i4@1f1@1i4@1u0m8i4@1u0m8i4@1f1#2i4K6S2r3i4@1q4m8i4@1f1#2i4K6S2q4i4@1u0n7i4@1f1$3i4K6R3K6i4@1t1K6i4@1f1@1i4@1u0m8i4K6R3$3i4@1f1@1i4@1t1^5i4K6R3H3i4@1f1@1i4@1t1^5i4K6S2n7i4@1f1&6i4K6R3J5i4@1p5K6i4@1f1@1i4@1t1^5i4@1q4m8i4@1f1J5i4K6R3H3i4K6W2o6i4@1f1$3i4K6R3J5i4@1p5^5i4@1f1$3i4K6S2n7i4@1p5^5i4@1f1$3i4K6R3&6i4K6V1K6i4@1f1%4i4K6W2m8i4K6R3@1i4@1f1%4i4K6V1@1i4@1t1#2i4@1f1^5i4@1q4r3i4K6W2p5i4@1f1#2i4@1t1%4i4@1t1J5i4@1f1#2i4K6R3#2i4@1t1K6i4@1f1$3i4K6W2o6i4@1u0m8i4@1f1J5i4K6R3H3i4K6W2p5i4@1g2r3i4@1u0o6i4K6S2o6i4@1f1$3i4K6R3K6i4@1t1K6i4@1f1%4i4K6V1@1i4@1p5^5i4@1f1^5i4@1u0p5i4@1q4o6i4@1f1$3i4K6S2q4i4@1p5#2i4@1f1%4i4K6W2m8i4K6R3@1i4@1f1$3i4K6V1$3i4@1t1&6i4@1f1$3i4@1t1K6i4K6V1#2i4@1f1#2i4@1q4q4i4K6W2q4i4@1f1%4i4K6S2q4i4@1t1H3i4@1g2r3i4@1u0o6i4K6S2o6i4@1f1#2i4K6V1H3i4K6S2q4i4@1f1$3i4K6W2p5i4@1p5#2i4@1f1%4i4K6W2o6i4K6S2n7i4@1f1@1i4@1u0m8i4K6R3$3i4@1f1%4i4K6R3J5i4@1t1&6i4@1f1^5i4@1t1#2i4K6R3@1i4@1f1$3i4K6V1$3i4K6V1&6i4@1g2r3i4@1u0o6i4K6S2o6i4@1f1#2i4@1p5#2i4@1u0p5i4@1f1#2i4K6R3K6i4K6S2r3i4@1f1$3i4K6V1^5i4@1q4r3i4@1f1$3i4@1t1J5i4@1p5I4i4@1f1$3i4K6W2o6i4K6R3&6i4@1f1$3i4K6V1$3i4@1t1&6i4@1f1$3i4@1t1K6i4K6V1#2i4@1f1^5i4K6R3K6i4@1u0p5i4@1f1#2i4@1q4q4i4K6W2q4i4@1f1$3i4K6V1%4i4@1t1$3i4@1f1%4i4K6W2m8i4K6R3@1i4@1f1^5i4@1u0p5i4@1q4o6i4@1f1$3i4K6S2q4i4@1p5#2i4@1f1@1i4@1t1^5i4K6R3H3i4@1f1@1i4@1t1^5i4@1q4m8i4@1f1^5i4@1u0r3i4K6W2n7i4@1f1$3i4K6W2p5i4@1p5#2i4@1f1%4i4K6W2m8i4K6R3@1i4@1f1$3i4K6W2p5i4@1p5#2i4@1f1%4i4K6V1@1i4@1t1#2i4@1f1K6i4K6R3H3i4K6R3J5i4@1f1@1i4@1t1^5i4K6S2p5i4@1f1%4i4K6W2r3i4@1p5#2i4@1f1&6i4K6R3I4i4K6V1K6i4@1f1#2i4K6V1H3i4K6R3@1i4@1f1@1i4@1u0p5i4K6S2p5i4@1f1#2i4@1p5@1i4@1p5%4i4@1f1%4i4K6R3&6i4K6W2n7i4@1f1$3i4K6W2o6i4K6R3&6i4@1f1@1i4@1u0n7i4K6R3H3i4@1f1@1i4@1t1&6i4K6R3^5i4@1f1$3i4K6R3K6i4@1t1K6i4@1f1$3i4@1t1K6i4K6V1#2i4@1g2r3i4@1u0o6i4K6S2o6i4@1f1$3i4K6W2o6i4K6R3&6i4@1f1%4i4K6W2m8i4K6R3@1i4@1f1^5i4@1q4r3i4K6W2p5i4@1f1#2i4K6S2r3i4@1q4r3i4@1f1@1i4@1u0n7i4@1p5#2i4@1f1%4i4K6R3J5i4@1t1&6i4@1f1$3i4K6S2n7i4@1p5^5i4@1f1@1i4@1t1^5i4K6R3H3i4@1f1@1i4@1t1^5i4K6S2n7i4@1f1#2i4@1t1H3i4K6S2r3i4@1f1#2i4@1u0o6i4K6W2r3i4@1f1K6i4K6R3H3i4K6R3J5

-----------------------------------
代码可以参考@monsterok牛的,我就不持续性丢人了。


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 3
支持
分享
最新回复 (18)
雪    币: 292
活跃值: (153)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
2
膜拜楼下
2014-11-13 13:34
0
雪    币: 603
活跃值: (40)
能力值: ( LV9,RANK:140 )
在线值:
发帖
回帖
粉丝
3
昨天刚好也发了个类似的。
6ffK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6E0L8$3&6K6N6r3g2J5M7$3u0Q4x3V1k6Z5K9h3A6S2j5$3E0m8L8X3c8J5L8$3W2V1f1r3!0%4k6i4u0a6k6X3j5`.
2014-11-13 14:17
0
雪    币: 44
活跃值: (15)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
4
膜拜楼上
2014-11-13 14:24
0
雪    币: 97
活跃值: (98)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
5
同膜拜。代码要不要写的这么漂亮。
2014-11-13 15:09
0
雪    币: 0
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
为何这么6
2014-11-13 23:11
0
雪    币: 253
活跃值: (51)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
感觉不出在实际应用场景中能经得起考验的实际意义,不用喷我,觉得这思路太小儿科了。如果有这权限,不想让它关机呢。
2014-11-14 09:06
0
雪    币: 148
活跃值: (298)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
其实没啥意思,geohot才是天才少年,擦
2014-11-14 09:09
0
雪    币: 433
活跃值: (1895)
能力值: ( LV17,RANK:1820 )
在线值:
发帖
回帖
粉丝
9
同膜拜楼上……
2014-11-14 12:55
0
雪    币: 131
活跃值: (98)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
10
不错不错
2014-11-14 19:13
0
雪    币: 215
活跃值: (51)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
11
其实不需要hook来电短信什么的. 在假关机的时候 直接强转为飞行模式,短信蓝牙WIFI都会挂掉呢!然后开机再上传!
2014-11-15 09:13
0
雪    币: 8
活跃值: (56)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
思路是差不多的,关于flag的问题,注意到注入到system_process之后,PowerManagerService这些模块是共享一个进程内存空间的,所以直接可以用一个class field来作为flag来代表当前状态,我看monster的代码里也是这么实现的。当然Phone进程和system_process不在一起,这个就不能这么做了。

看了下monster的代码,风格不错,有几个小问题
1. 没有处理震动事件
2. gotoSleep在一些机型上会有一闪而过的动画效果,和正常关机屏幕直接黑屏有区别。最好先写brightness标志位
3. 没有处理LED指示灯
4. “关机”之后再”开机“需要对电源按键的时间做判断,检测用户是否在意图开机,否则对用户来说就是按了很久却没有反应,比较可疑。

另外像楼上所说的,geohot才是真正的天才少年,我们都还要学习,哈哈
2014-11-15 13:41
0
雪    币: 8
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
感谢分享!
2014-11-16 21:11
0
雪    币: 107
活跃值: (434)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
看来以后还是要拔电池...

天才骚年能在不带电池的情况下实施监听吗?嘿嘿..

and...用Apple的高富帅貌似暂时不用担心这些问题呢..哈哈
2014-11-18 14:03
0
雪    币: 213
活跃值: (147)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
原来我们都被骗了。。。
2014-11-18 21:16
0
雪    币: 84
活跃值: (18)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
学习了。谢谢楼主!
2014-11-21 09:05
0
雪    币: 878
活跃值: (496)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
17
xposed对于某些方法不起效果
2014-11-26 22:05
0
雪    币: 1
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
膜拜……
2014-11-27 00:02
0
雪    币: 1885
活跃值: (722)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
学习ing,都是牛人
2014-11-27 09:48
0
游客
登录 | 注册 方可回帖
返回