【Android 插件化】使用 PluginKiller 帮助应用开发者规避发布的 APK 安装包被作为插件的风险 ( 验证应用是否运行在插件化引擎中 )
文章目錄
- 前言
- 一、應用開發者規避 APK 安裝包被作為插件
- 二、檢測插件化環境
- 1、檢查 AndroidManifest.xml 清單文件
- 2、檢查 運行時 信息
- 3、檢查生成的目錄
- 4、檢查組件
前言
在上一篇博客 【Android 插件化】插件化技術弊端 ( 惡意插件化程序的解決方向 | 常用的插件化虛擬引擎 ) 中 , 介紹了插件化的弊端 , DroidPlugin 和 VirtualApp 被用于制作惡意軟件 , 黑客利用這兩個插件化框架將 APK 文件封裝到虛擬機引擎中 , 冒充被封裝的 APK ;
一、應用開發者規避 APK 安裝包被作為插件
如果被封裝的 APK 應用涉及到用戶注冊 , 登錄 , 付費等信息 ;
用戶在使用黑客制作的 在插件化引擎 作為宿主軟件 , 封裝 APK 應用 , 并插入惡意代碼 , 導致用戶信息泄露 , 嚴重的還會導致用戶金錢損失 ;
作為 APK 開發者的我們 , 必須采取一定的措施 , 避免我們開發的應用被惡意開發者使用 ;
在 ANTI-PLUGIN: DON’T LET YOUR APP PLAY AS AN ANDROID PLUGIN 論文中 , 使用了 PluginKiller , 用于避免自己的應用運行在虛擬化引擎上 , 就是避免自己開發的應用被當做插件 APK 使用 ;
二、檢測插件化環境
PluginKiller 這個庫在 GitHub 上沒有找到 , 這里簡單介紹下 PluginKiller 運行機制 , 自己也可以開發這個依賴庫 ;
1、檢查 AndroidManifest.xml 清單文件
檢查 權限 詳情 , 插件化引擎 如 DroidPlugin 會聲明盡可能多的權限 125125125 個 , 一般插件化引擎宿主應用的權限范圍會大于插件應用的權限 ; 使用 PackageManager 獲取應用權限 , 然后訪問這些權限 , 如果訪問插件應用沒有的權限可以訪問 , 說明當前運行在插件化引擎中 ;
檢查 包名 是否注冊到系統中 , 應用安裝后 , 會自動在 /data/data 創建對應包名的目錄 , 如果沒有 , 說明當前運行在插件化引擎中 ;
檢查 組件 名稱 , 宿主應用中 , 如果要啟動 Activity , 涉及到 AMS 調用 , AMS 接收的 Activity 必須是在清單文件中注冊過得組件 ; AMS 切換到主線程 ActivityThread 后會使用 hook 技術將 在清單文件中注冊過得 " 樁 " Activity 替換為 插件 Activity ; 調用 ActivityManager.getRunningServices 獲取的組件是 " 樁 " 組件 , 不是插件中的組件 , 二者有區別的 ;
2、檢查 運行時 信息
應用運行時會有一個 PID 和 UID ;
- PID 是 Process ID , 進程 ID ;
- UID 是 User ID , 用戶 ID , 應用安裝時自動分配的 , 如果應用不卸載 , 會一直保持該 UID ;
插件化引擎中運行的 APK 插件 , 其 UID 都是宿主應用的 UID ;
插件化引擎創建一個進程 , 運行 APK 插件 , 此時就會有兩個進程 , 宿主進程 和 插件進程 , 兩個進程 PID 不同 , 但是 UID 相同 ; 如果出現該特征 , 就可以確定該應用運行在插件化引擎中 ;
3、檢查生成的目錄
檢查生成的文件 : 應用安裝后 , 會在 /data/data/ 目錄下生成對應包名的目錄 , 檢查該目錄是否存在 ;
4、檢查組件
在 AndroidManifest.xml 定義一個靜態廣播 , 靜態廣播是在應用安裝時進行注冊的 , 插件應用沒有安裝 , 因此想靜態廣播發送數據 , 肯定無法接收到 ;
運行時修改組件的 enable 屬性 , DroidPlugin 無法在運行時實例化 enable = false 的組件 , 在組件注冊時設置 false , 然后運行時修改成 true ;
參考博客 : 反插件化:你的應用不是一個插件
參考文獻 : ANTI-PLUGIN: DON’T LET YOUR APP PLAY AS AN ANDROID PLUGIN
總結
以上是生活随笔為你收集整理的【Android 插件化】使用 PluginKiller 帮助应用开发者规避发布的 APK 安装包被作为插件的风险 ( 验证应用是否运行在插件化引擎中 )的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【错误记录】MAC 存储空间 “其它“
- 下一篇: 【错误记录】无法打开 “xxx“ , 因