當前位置:
首頁 > 最新 > xposed模塊開發入門與實踐技巧

xposed模塊開發入門與實踐技巧

Xposed框架是一款可以在不修改APK的情況下影響程序運行(修改系統)的框架服務,可謂喜歡搗鼓的人的必備神器。而且使用上也極為簡單,下面我就來看看如何在Android Studio上開發xposed模塊。

環境設置就不再贅述了,需要以下前提準備工作。


一、創建xposed模塊

1、新建Android工程

其實就是一路next,選擇Empty Activity,創建工程完成後等待gradle載入完畢。

2、導入XposedBridgeApi jar包

導入完成後,修改下app/build.gradle中的依賴聲明。將XposedBridgeApi的依賴由implementation改成provided。改完後記得sync一下gradle。


xposedmodule: 表示這是一個xposed模塊xposeddescription: 描述該模塊的用途,可以引用string.xml中的字元串xposedminversion:要求支持的Xposed Framework最低版本

創建一個或者幾個類,並實現IXposedHookLoadPackage,IXposedHookZygoteInit或者其他IXposedMod的子介面。

XposedBridge.log會將日誌輸出到logcat,並寫入日誌文件也可以用 android.util.Log輸出到logcat。


到這裡,這個簡單的模塊就算開發完了。雖然沒有界面,沒有任何實際的功能,但這也是一個確確實實的xposed模塊。可以被安裝到設備上,也可以被xposed installer檢測到。

二、實踐技巧

前面只是簡單的搭出了框子,並沒有任何實際功能,接下來我們往裡添加一些內容。


如果你使用過xposed插件,那麼一定有概率碰上模塊未啟動的情況,即便是你已經勾選激活該模塊。那麼有沒有什麼方法來分辨模塊是否真的啟動了呢?當然有,而且很簡單。原理就是:

在MainActivity實現一個boolean方法,然後用xposed hook自己Activity里的函數。能hook成功,自然代表模塊成功啟動了,反之亦然。

hook自己

這樣,如果模塊成功激活,就會在啟動app的時候彈一個模塊已啟動的toast,如果沒有啟動則會彈模塊未啟動的toast。


隨著人們安全意識越來越高,很多應用開發者都選擇給應用加殼來保護自己。從最開始簡單的dex加密到現在的onCreate函數虛擬化技術,逆向的難度也越來越高。如何脫殼和修復onCreate函數不是本文的所要講的內容。

這裡以去年某款答題app為例子講解,我們期望獲得答題的題目和選項。

拿到app反編譯,明顯發現使用了某廠商的加密技術。第一步是脫殼,然後拿到smali後開始分析(這裡我們不去修復onCreate方法)。

我們通過socket中的關鍵詞showQuestion欄位,最終在Lcom/chongdingdahui/app/socket/MessageManager$7類裡面發現了處理數據的代碼。

找到了關鍵的方法,接下來便是如何hook帶殼的應用。如果直接hook的話,會發現找不到目標class,所以我們這裡可以採用四哥的方法。

這樣就能得到題目和答案了。因為目前答題類應用早已規範化了,所以展示的代碼僅供方法參考,並不能實際應用,但原理都是一樣的。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 TesterJohn 的精彩文章:

Android開發學習-Day17-19 多線程&Service

TAG:TesterJohn |