xposed模塊開發入門與實踐技巧
Xposed框架是一款可以在不修改APK的情況下影響程序運行(修改系統)的框架服務,可謂喜歡搗鼓的人的必備神器。而且使用上也極為簡單,下面我就來看看如何在Android Studio上開發xposed模塊。
環境設置就不再贅述了,需要以下前提準備工作。
一、創建xposed模塊
1、新建Android工程
其實就是一路next,選擇Empty Activity,創建工程完成後等待gradle載入完畢。
2、導入XposedBridgeApi jar包
導入完成後,修改下app/build.gradle中的依賴聲明。將XposedBridgeApi的依賴由implementation改成provided。改完後記得sync一下gradle。
3、修改AndroidManifest
xposedmodule: 表示這是一個xposed模塊xposeddescription: 描述該模塊的用途,可以引用string.xml中的字元串xposedminversion:要求支持的Xposed Framework最低版本
4、模塊實現
創建一個或者幾個類,並實現IXposedHookLoadPackage,IXposedHookZygoteInit或者其他IXposedMod的子介面。
XposedBridge.log會將日誌輸出到logcat,並寫入日誌文件也可以用 android.util.Log輸出到logcat。
5、聲明xposed入口
到這裡,這個簡單的模塊就算開發完了。雖然沒有界面,沒有任何實際的功能,但這也是一個確確實實的xposed模塊。可以被安裝到設備上,也可以被xposed installer檢測到。
二、實踐技巧
前面只是簡單的搭出了框子,並沒有任何實際功能,接下來我們往裡添加一些內容。
技巧1:檢測模塊是否啟動
如果你使用過xposed插件,那麼一定有概率碰上模塊未啟動的情況,即便是你已經勾選激活該模塊。那麼有沒有什麼方法來分辨模塊是否真的啟動了呢?當然有,而且很簡單。原理就是:
在MainActivity實現一個boolean方法,然後用xposed hook自己Activity里的函數。能hook成功,自然代表模塊成功啟動了,反之亦然。
hook自己
這樣,如果模塊成功激活,就會在啟動app的時候彈一個模塊已啟動的toast,如果沒有啟動則會彈模塊未啟動的toast。
技巧2:hook帶殼應用
隨著人們安全意識越來越高,很多應用開發者都選擇給應用加殼來保護自己。從最開始簡單的dex加密到現在的onCreate函數虛擬化技術,逆向的難度也越來越高。如何脫殼和修復onCreate函數不是本文的所要講的內容。
這裡以去年某款答題app為例子講解,我們期望獲得答題的題目和選項。
拿到app反編譯,明顯發現使用了某廠商的加密技術。第一步是脫殼,然後拿到smali後開始分析(這裡我們不去修復onCreate方法)。
我們通過socket中的關鍵詞showQuestion欄位,最終在Lcom/chongdingdahui/app/socket/MessageManager$7類裡面發現了處理數據的代碼。
找到了關鍵的方法,接下來便是如何hook帶殼的應用。如果直接hook的話,會發現找不到目標class,所以我們這裡可以採用四哥的方法。
這樣就能得到題目和答案了。因為目前答題類應用早已規範化了,所以展示的代碼僅供方法參考,並不能實際應用,但原理都是一樣的。


※Android開發學習-Day17-19 多線程&Service
TAG:TesterJohn |