进击的Android Hook 注入术《一》
生活随笔
收集整理的這篇文章主要介紹了
进击的Android Hook 注入术《一》
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
目錄(?)[-]
寫(xiě)在前面
這個(gè)系列本來(lái)是在公司的一個(gè)分享,內(nèi)容比較多,所以就把這個(gè)PPT重新組織整理成博客,希望對(duì)大家學(xué)習(xí)有所幫助。我會(huì)先以一個(gè)”短信攔截“作為例子,拋出問(wèn)題,并提出了一種基于”注入“的技術(shù)方案達(dá)到提高攔截優(yōu)先級(jí),接著再重點(diǎn)講解注入的技術(shù)細(xì)節(jié)。最后,我會(huì)跟大家分享一個(gè)我業(yè)余時(shí)間開(kāi)發(fā)注入框架——AIM(Android IPC Manager)。當(dāng)然了,這個(gè)框架跟目前的XPosed、CydiaStructe的側(cè)重點(diǎn)不太一樣。
短信攔截
場(chǎng)景
如果某款安全支付類應(yīng)用和一個(gè)未知木馬安裝在同一臺(tái)手機(jī),木馬會(huì)截獲所有的驗(yàn)證碼短信。
問(wèn)題
有什么辦法可以保證安全支付類的應(yīng)用可以比木馬更優(yōu)先截獲到驗(yàn)證碼短信呢?
解決方案
其實(shí)這類優(yōu)先級(jí)搶占問(wèn)題,做短信功能開(kāi)發(fā)的朋友,都應(yīng)該比較清楚,因?yàn)槔习宥缄P(guān)注的就是這個(gè)了,呵呵。一般的可行方案如下:- 提高BroadcastReceiver的優(yōu)先級(jí);
- 采用動(dòng)態(tài)的方式注冊(cè)BroadcastReceiver;
- 注冊(cè)時(shí)間要越早越好;
- 監(jiān)聽(tīng)Android的開(kāi)機(jī)廣播事件BOOT_COMPLETED,提早注冊(cè)時(shí)間;
- 啟動(dòng)后,開(kāi)啟一個(gè)Service,并在里面以動(dòng)態(tài)的注冊(cè)BroadcastReceiver;
- 注冊(cè)的優(yōu)先級(jí)調(diào)整至最高——Integer.MAX_VALUE;
問(wèn)題來(lái)了
通過(guò)上面這個(gè)方案,是可以解決部分問(wèn)題了,但這種方式完全沒(méi)有技術(shù)含量,對(duì)處于技術(shù)第一線的黑客們根本不是問(wèn)題,他們不但也采用了相同的技術(shù),而且做得更好,在”注冊(cè)時(shí)間越早越好“這一點(diǎn)上,他們添加幾個(gè)額外的觸發(fā)點(diǎn),分別如下:- WIFI_STATE_CHANED
- CONNECTIVITY_CHANGE
- ACCESS_NETWORK_STATE
- ACCESS_WIFI_STATE
基本思路
既然廣播發(fā)送之后,我們有可能處于后次序。那是否有辦法,可以在廣播發(fā)送之前,做一下順序調(diào)整呢?我們知道,Android的廣播發(fā)送,都是由ActivityManagerService(AMS)做路由轉(zhuǎn)發(fā)的,所以AMS里肯定保存了各個(gè)BroadcastReceiver的信息以及次序,我們?nèi)绻修k法可以進(jìn)入到AMS里頭,再通過(guò)一些反射的技巧,是否就可以在每次發(fā)送廣播之前,調(diào)整廣播的發(fā)送順序呢?這個(gè)就是我要跟大家分享的技術(shù)方案——通過(guò)注入實(shí)現(xiàn)短信的絕對(duì)優(yōu)先攔截。技術(shù)的基本思路是這樣的,我們先注入到系統(tǒng)進(jìn)程——system_process,然后截獲AMS的broadcastIntent方法,加插我們的調(diào)整邏輯。
《二》里我會(huì)著重介紹注入的技術(shù)原理,然后通過(guò)一系列的DEMO講解這個(gè)方案所涉及到的技術(shù)點(diǎn)。
原文地址:?http://blog.csdn.net/l173864930/article/details/38455951
總結(jié)
以上是生活随笔為你收集整理的进击的Android Hook 注入术《一》的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Android Hook Java的的一
- 下一篇: 进击的Android Hook 注入术《