日韩精品无码观看视频免费_欧美交换配乱吟粗大_亚洲AV成人无码久久WWW_少妇高潮惨叫久久久久久 色影院不卡中文一区二区_欧洲亚洲色视频综合在线_国产69永久免费视频_AV午夜片在线观看

揭秘:Android木馬如何實(shí)現(xiàn)用戶定位技術(shù)

來(lái)自:米么信息科技
時(shí)間:2016-07-10 15:33:52
分享:
米么信息 米么信息 米么信息
揭秘:Android木馬如何實(shí)現(xiàn)用戶定位技術(shù),這幾年安卓系統(tǒng)的普及速度可謂迅猛,一時(shí)間各式各樣的設(shè)備都承載著安卓系統(tǒng),手機(jī)、平板、機(jī)頂盒等都忠實(shí)地成為了安卓系統(tǒng)的用戶。由于安卓系統(tǒng)在移動(dòng)設(shè)備上的使用率最高,而移動(dòng)設(shè)備上存儲(chǔ)的數(shù)據(jù)往往涉及到個(gè)人隱私,如手機(jī)通訊錄、短信內(nèi)容、拍攝照片、閱讀書目、保存文檔等,有時(shí)更會(huì)涉及到經(jīng)濟(jì)利益,這誘惑著一些利益集團(tuán)開(kāi)始制作基于安卓系統(tǒng)的遠(yuǎn)程控制程序,即安卓系統(tǒng)木馬。

這幾年安卓系統(tǒng)的普及速度可謂迅猛,一時(shí)間各式各樣的設(shè)備都承載著安卓系統(tǒng),手機(jī)、平板、機(jī)頂盒等都忠實(shí)地成為了安卓系統(tǒng)的用戶。由于安卓系統(tǒng)在移動(dòng)設(shè)備上的使用率最高,而移動(dòng)設(shè)備上存儲(chǔ)的數(shù)據(jù)往往涉及到個(gè)人隱私,如手機(jī)通訊錄、短信內(nèi)容、拍攝照片、閱讀書目、保存文檔等,有時(shí)更會(huì)涉及到經(jīng)濟(jì)利益,這誘惑著一些利益集團(tuán)開(kāi)始制作基于安卓系統(tǒng)的遠(yuǎn)程控制程序,即安卓系統(tǒng)木馬。

首個(gè)安卓系統(tǒng)木馬應(yīng)屬2010年出現(xiàn)的“ Trojan-SMS.AndroidOS.FakePlayer.a ”,這是一個(gè)以扣取用戶手機(jī)話費(fèi)為目的的盈利性安卓系統(tǒng)木馬。隨著需要的發(fā)展,單純的盈利性木馬已經(jīng)不是重點(diǎn),用戶的隱私數(shù)據(jù)才是核心, 尤其是具有用戶行為監(jiān)視性的木馬最受關(guān)注。所謂“用戶行為監(jiān)視性的木馬”就是指該類安卓木馬能夠監(jiān)視用戶的所在、所說(shuō)、所做。

所在”即用戶所處位置在哪里;“所說(shuō)”即通話內(nèi)容,聊天內(nèi)容;“所做”即在操作什么程序,在干什么活動(dòng)。

這一類的木馬由于涉及到用戶核心利益,往往經(jīng)濟(jì)價(jià)值較大,多用于私人偵探、商業(yè)竊密等領(lǐng)域,平時(shí)很難見(jiàn)到,更不要說(shuō)了解其核心代碼、實(shí)現(xiàn)機(jī)制。為此,本文將逐步向讀者揭秘這些高級(jí)安卓木馬的核心實(shí)現(xiàn)技術(shù),幫助大家更好地了解這些木馬實(shí)現(xiàn)技術(shù),從而做好對(duì)個(gè)人隱私的保護(hù),防范該類木馬的入侵。本文旨在討論技術(shù),凡利用本文技術(shù)進(jìn)行違法活動(dòng)的作者與雜志概不負(fù)責(zé)。

如何實(shí)現(xiàn)定位

如果你利用百度搜索安卓定位原理,會(huì)發(fā)現(xiàn)百度給出的解釋不外乎是利用GPS或者手機(jī)基站定位,甚至結(jié)合Wi-Fi信號(hào)。原理不錯(cuò),但這只是原理,要想具體實(shí)現(xiàn)定位可是有一定難度的。以手機(jī)基站定位為例,現(xiàn)在傳統(tǒng)的實(shí)現(xiàn)方式是利用AndroidSDK中的API(TelephonyManager)獲得MCC、MNC、LAC、CID等信息,然后通過(guò)Google的API獲得所在位置的經(jīng)緯度,最后再通過(guò)GoogleMap的API獲得實(shí)際的地理位置。這其中:

MCC即MobileCountryCode,移動(dòng)國(guó)家代碼(中國(guó)的為460);

MNC,MobileNetworkCode,移動(dòng)網(wǎng)絡(luò)號(hào)碼(中國(guó)移動(dòng)為00,中國(guó)聯(lián)通為01);

LAC,LocationAreaCode,位置區(qū)域碼;

CID,CellIdentity,基站編號(hào),是個(gè)16位的數(shù)據(jù)(范圍是0到65535)。

由于谷歌存儲(chǔ)了MCC、MNC、LAC、CID等信息,一旦我們能夠獲取當(dāng)前移動(dòng)設(shè)備所在基站的這些數(shù)據(jù),就可以通過(guò)向谷歌的“ https://www.google.com/loc/json ”網(wǎng)址發(fā)送查詢數(shù)據(jù)獲取基站所在經(jīng)緯度。

得到經(jīng)緯度后,我們將其轉(zhuǎn)換為實(shí)際地址,這需要向谷歌的“ https://maps.google.cn/maps/geo?key=abcdefg&q= ”發(fā)送經(jīng)緯度數(shù)據(jù),最終獲得移動(dòng)設(shè)備所在實(shí)際地址。這樣的實(shí)現(xiàn)代碼在網(wǎng)上很多,你會(huì)發(fā)現(xiàn)它們都不好使了,為什么呢?因?yàn)椤?nbsp;https://www.weixianmanbu.com/ ”這個(gè)網(wǎng)址現(xiàn)在已經(jīng)不能訪問(wèn)了。這個(gè)可悲的消息使得我們意識(shí)到必須采用一種相對(duì)穩(wěn)妥的方法來(lái)實(shí)現(xiàn)移動(dòng)設(shè)備定位。在對(duì)某個(gè)安卓木馬程序做逆向分析時(shí),發(fā)現(xiàn)一種新的基于手機(jī)基站定位實(shí)現(xiàn)技術(shù)。當(dāng)然在這之前,細(xì)心的讀者會(huì)發(fā)現(xiàn)為什么我們一直在詳細(xì)講解基于手機(jī)基站的定位實(shí)現(xiàn),而不采用最為常用的GPS。

因?yàn)槭謾C(jī)這樣的移動(dòng)設(shè)備一旦進(jìn)入到房屋內(nèi)等封閉場(chǎng)所,GPS信號(hào)就衰減為0,不足以實(shí)現(xiàn)定位,而手機(jī)信號(hào)多半都是存在的,所以基于手機(jī)基站的定位方式更為穩(wěn)妥,這就是為什么很多高級(jí)安卓木馬會(huì)采用該方式實(shí)現(xiàn)定位的原因。 言歸正傳,我們發(fā)現(xiàn)的這個(gè)安卓木馬采用了基于百度提供的定位SDK。根據(jù)百度官方的解釋:百度Android定位SDK支持Android1.5以及以上設(shè)備,提供定位功能,通過(guò)GPS、網(wǎng)絡(luò)定位(WIFI、基站)混合定位模式,返回當(dāng)前所處的位置信息。

反地理編碼功能:

解析當(dāng)前所處的位置坐標(biāo),獲得詳細(xì)的地址描述信息。如此豐富的技術(shù)支持,難怪該安卓木馬會(huì)采用這個(gè)SDK。

百度Android定位SDK的使用非常簡(jiǎn)單,首先在百度的官網(wǎng)下載最新的庫(kù)文件,將liblocSDK.so文件拷貝到libs/armeabi目錄下,將locSDK.jar文件拷貝到工程根目錄下,并在工程屬性->JavaBuildPath->Libraries中選擇AddJARs,選定locSDK.jar,確定后返回,就可以在程序中使用百度Android定位SDK了。在代碼實(shí)現(xiàn)時(shí),首先需要初始化LocationClient類,其代碼如下:

publicLocationClientmLocationClient=null;    
publicBDLocationListenermyListener=newMyLocationListener();   
publicvoidonCreate(){  
mLocationClient=newLocationClient(this)    
//聲明LocationClient類  //注冊(cè)監(jiān)聽(tīng)函數(shù)  mLocationClient.registerLocationListener(myListener);   
}

接著實(shí)現(xiàn)BDLocationListener接口。BDLocationListener接口有一個(gè)方法,作用是接收異步返回的定位結(jié)果,參數(shù)是BDLocation類型參數(shù)。其代碼如下:

publicclassMyLocationListennerimplementsBDLocationListener{@OverridepublicvoidonReceiveLocation(BDLocationlocation){if(location==null)return; 
StringBuffersb=newStringBuffer(256);
sb.append("time:");
sb.append(location.getTime());
sb.append("/nerrorcode:");
sb.append(location.getLocType());
sb.append("/nlatitude:");
sb.append(location.getLatitude());
sb.append("/nlontitude:");
sb.append(location.getLongitude());
sb.append("/nradius:");
sb.append(location.getRadius());   
if(location.getLocType()==BDLocation.TypeGpsLocation){   
sb.append("/nspeed:");
sb.append(location.getSpeed());
sb.append("/nsatellite:");
sb.append(location.getSatelliteNumber());
}elseif(location.getLocType()==BDLocation.TypeNetWorkLocation){ 
sb.append("/naddr:");
sb.append(location.getAddrStr());
}
logMsg(sb.toString()); 
}
}

接著設(shè)置參數(shù)。設(shè)置定位參數(shù)包括定位模式(單次定位,定時(shí)定位),返回坐標(biāo)類型,是否打開(kāi)GPS等。實(shí)現(xiàn)代碼如下:

LocationClientOptionoption=newLocationClientOption();
option.setOpenGps(true);
option.setAddrType("detail");
option.setCoorType("gcj02");
option.setScanSpan(5000);
mLocClient.setLocOption(option);

最后,發(fā)起定位請(qǐng)求。請(qǐng)求過(guò)程是異步的,定位結(jié)果在上面的監(jiān)聽(tīng)函數(shù)中獲取,代碼如下:

if(mLocClient!=null&&mLocClient.isStarted())
mLocClient.requestLocation();elseLog.d("LocSDK_2.0_Demo1","locClientisnullornotstarted");

實(shí)際測(cè)試效果如圖1所示。從圖中可以看出,演示程序準(zhǔn)確定位到了我此刻手機(jī)所在的位置,定位精度在百米內(nèi)。木馬程序一旦使用了這樣的技術(shù),完全可以實(shí)現(xiàn)對(duì)用戶所在的監(jiān)視,你此刻是不是有一種毛骨悚然的感覺(jué)呢?


米么信息 米么信息 米么信息
分享文章至