各位看官請注意,這篇博客相對來說比較久了蓝撇,我只是在遷移之前寫過的文章果复,如果您能發(fā)現(xiàn)文中有問題,請留言告訴我渤昌,我來改正虽抄,謝謝走搁。
近期在搞信息安全大賽,我們的作品是要基于xposed來做鉤子迈窟,所以就研究了一下這個技術(shù)私植。但是真心感覺這個坑很多啊。车酣。我是搞了半天才把框架搭建起來能夠使用曲稼。寫下來,各位后來的童鞋少走點坑吧湖员。哈哈贫悄。
入門涉及到的東西如下:
- xposed installer apk
- xposed framework zip
- xposed develop jar
- genymotion虛擬機(jī)(如果你是用真機(jī)測試,我這篇文章可能并不適合你)
- Android Studio(同樣娘摔,我的項目是在AS中開發(fā)的窄坦,eclipse怎么樣我并不知道。凳寺。鸭津。原諒我沒用過eclipse。肠缨。)
- 還有另外的我參考的學(xué)習(xí)的項目逆趋,我也會放上來,鏈接放在了最后晒奕。
入門的文章這里都有闻书。。
- http://www.vkyii.com/2015/09/09/install-xposed-in-genymotion-android.html
- http://my.oschina.net/wisedream/blog/471292?fromerr=rNPFQidG
其基本的思路都差不多吴汪。惠窄。我就直白的說一些坑吧。
首先我解釋一下上面列出來的東西都是干什么用的吧:
- xposed installer apk 用來在我們的手機(jī)上管理支持xposed的應(yīng)用的(這里官方叫module漾橙,其實現(xiàn)在有很多這種應(yīng)用的杆融,例如這個Xposed Macro Expand應(yīng)用)
- xposed framework zip 這個是在手機(jī)上裝好第一個后要安裝的刷機(jī)包。霜运。這個是xposed運行的基礎(chǔ)脾歇。這個刷機(jī)包對android的版本很是敏感啊。淘捡。我刷了好多次都沒有成功藕各。。焦除。
- xposed develop jar 這個是開發(fā)者包激况,是需要放到工程中去的,這里也有坑,后面說乌逐。
- genymotion虛擬機(jī) 我是在虛擬機(jī)上開發(fā)的竭讳,因為不想去刷真機(jī),畢竟有風(fēng)險浙踢。但是在虛擬機(jī)上刷xposed develop jar 包的時候也是有坑的绢慢。后面說。
- Android Studio就不說了洛波。主要就是包的位置的問題
坑 No1
這個xposed在虛擬機(jī)上怎么都刷不了啊胰舆。。蹬挤。重啟無數(shù)次缚窿,然而還是不行。最后的解決辦法是用的這個xposed框架焰扳。然后配的是genymotion中的nexus 4 android版本4.3的設(shè)備滨攻,這樣就可以安裝成功了。還是很方便的蓝翰。。女嘲。因為不需要自己去下載xposed framework zip包(這個包下載起來也是非常麻煩畜份。。我在forum.xda-developers網(wǎng)站上找了好半天啊欣尼。爆雹。。)
坑 No2
assets/xposed_init文件一定要放在正確的位置愕鼓,不然會報找不到我們的Hook類的錯钙态,這個正確的位置應(yīng)該是這個樣子的:坑No3
同理這里的這個XposedBridgeApi-54.jar開發(fā)包也一定要放對位置:看上圖吧。除此之外菇晃,這里的這個XposedBridgeApi-54.jar是不能使用compile來引用的册倒,應(yīng)該是使用provided,所以gradle文件中應(yīng)該如下圖:
java.lang.IllegalAccessError: Class ref in pre-verified class resolved to unexpected implementation
這個錯也是很坑爹的磺送,在logcat日志中必須要看全局的日志才能看到(不加過濾)驻子,我是偶然看到的,為后面定位錯誤提供了思路估灿。
我是根據(jù)rovo大神的入門案例看的崇呵,看一下我實現(xiàn)的效果吧(注意看時間那里),這個其實是使用框架的findAndHookMethod
方法來截獲了Android系統(tǒng)源碼的com.android.systemui.statusbar.policy.Clock類
的updateClock
方法馅袁,對顯示的時間做出了修改而已:
好了域慷,暫時還沒發(fā)現(xiàn)有其他的坑,后面如有發(fā)現(xiàn)新的坑,我會加上來犹褒。
最后用到的資源抵窒,都在這里了。本人新手化漆,如果有什么理解不對的地方估脆,還望指教。