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