xposed hook 静态函数_浅谈 Xposed 新概念【模块作用域】
眾所周知,Xposed 是一個系統級別的軟件框架,它與 Cydia Substrate 不同,Xposed 僅可 hook app_process 中的 java 函數,不過對于大部分的 Android 應用來說已經足夠了;
它所提供的 API 可以供模塊開發者在不修改目標應用字節碼的前提下修改目標應用的行為,甚至是將自定義的代碼注入進目標應用中,由目標應用代為執行。
Xposed 模塊開發起來也非常簡單,簡單來說,獲取目標應用的源碼或者反編譯出偽代碼,找到目標方法,將相關邏輯寫入模塊,編譯,完成。
于是,一種新的安全風險也隨之出現了
某“步數模塊”對【桃飽】應用插入淘口令
某“后臺管理模塊”做了一堆根本不應該它去做的功能
......
更有甚者利用【巨信】的公眾號功能,為自己的帖子刷流量
而當你想要禁止掉這種濫用行為的時候,你會發現,也許它根本就沒有申請正常情況下做這些事情需要的權限,更別談禁止了
這是因為它將代碼注入到了【巨信】應用中,所有的工作都是由【巨信】來完成的,如果你使用抓包軟件來抓取流量包的話,你會發現所有的相關流量都是由【巨信】發送和接收的
應該慶幸的是,目前所抓到類似行為的模塊都是使用 java(或 kotlin 等 jvm語言)層來編寫的,反編譯還算比較容易
可是如果模塊使用 native(C/C++)層編寫(據我所知已經有一些模塊使用 native 層來編寫),或者使用了一堆非常惡心人的加固/混淆呢?
要求所有模塊必須開源一定是不可能的事情,第一這會大大打擊模塊開發者的積極性,第二即使開源也不能確保一定是安全的
(更何況某個自詡“安全”的 Xposed 框架商業化分支也還是閉源的,何談模塊開源?)
我相信 Xposed 的作者 rovo89(等一下,Xposed 停更的最后一個版本號是 89,我好像發現了什么zzz)一定也注意到了這個問題,只是因為某些原因最終棄坑掉了整個 Xposed 項目
于是,我們提出了一個新的概念
我將它稱為
【模塊作用域】(Modules Activation Scope)
*它能做什么?
簡單來說,用戶可以自主選擇某個模塊只對某些應用生效(或某個應用只激活某些模塊,這個根據不同 Xposed 框架分支開發者的喜好自由安排)
這樣雖說不可能完全解決 Xposed 模塊濫用行為的安全問題,至少可以防止 Xposed 模塊跨域對非目標應用進行 hook 操作
*如何才能用上這一功能?
當前(截至發稿)已經有好幾種 Xposed 框架分支的開發者響應了這一概念
EdXposed 此功能正在開發中
EdXposed 此功能正在開發中
應用轉生 已發布
用戶需要做的就是等待當前使用的分支更新這一功能
同時,我修改了開源分支 XPatch 的代碼以支持這一功能,高級用戶可以嘗試使用一下
演示視頻:https://www.bilibili.com/video/av80958793
源代碼(已修改):https://github.com/MlgmXyysd/xposed_module_loader
*(DEV)模塊開發者需要特殊適配這一功能嗎?
不需要
為 Xposed 框架分支添加新功能一定應該是建立在兼容原版 API 的基礎上的(當然某個 Xposed 分支妄圖分裂 Xposed 生態從而創建自己由 Xposed API 魔改而來的 TxxCxx API 我是不敢恭維,也不想在這里過多提及)
模塊開發者唯一需要做的就是告知用戶你的模塊 hook 了哪個應用的包名,供用戶來參考
*(DEV)我該如何為我的框架分支添加這一功能?
為單獨的應用存儲模塊列表(推薦使用目標應用包名作為標識符),并設立全局列表(無法讀取當前應用的列表時可讀取全局列表)
具體代碼自行實現
*(DEV)為什么不像 Android 軟件在 Manifest 中聲明權限那樣要求模塊聲明 hook 列表?
在上文中我提到了兼容性
除此之外,要求模塊適配自己的 API 同樣是一種不可能的行為
一味的要求開發者適配自己的 API 會導致對其他 Xposed 框架分支的兼容性下降,或者同時兼容多個分支的難度上升
同時,保留原版 Xposed API 也是對 Xposed 原開發者 rovo89 的一種尊重
換一種問法,框架完全可以做到的事情為什么非要模塊開發者來做呢?
這一概念經過測試完全是可行的(已有經由 XPatch 修改的 demo 測試成功,見上文)
但是,概念也有它本身的一個漏洞,它僅封堵掉了模塊對于跨域應用的濫用行為,并沒有從根本上杜絕濫用行為的發生(如,針對正常的目標應用的濫用行為),用戶在選擇模塊時仍需謹慎
我是 MlgmXyysd,希望更多 Xposed 框架分支可以響應這一概念,同時也希望更多的開發者可以開發出自己的 Xposed 框架開源分支
附件:
目前已知的幾種 Xposed 實現方案的「作者是個人還是公司、是否開源、是否商業化」的總結鑒于阻止運行的前車之鑒「2.3.2之后(不含2.3.2)的阻止運行你敢用嘛?」( From @LetITFlyW ) 如果你沒為服務付錢,那可能你就是產品。免費商業化比收費商業化更可怕。建議各位有使用 Xposed 的需求的朋友在條件適宜的情況下擁抱開源或者雖閉源但非商業化的實現方案。另:在任何情況下均不建議關注「某個 Xposed 實現方案的作者」的「推送過多次廣告文章」的微信公眾號。
總結
以上是生活随笔為你收集整理的xposed hook 静态函数_浅谈 Xposed 新概念【模块作用域】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: string 中的offset_【Jav
- 下一篇: 全国计算机四六级报名时间2015,201