0.前期準(zhǔn)備
Xposed是一個(gè)已經(jīng)被玩得很熟的套路了,這里不敢說有什么特別的見解,本質(zhì)就是反射。
反射的學(xué)習(xí)
http://www.itdecent.cn/p/9f392c46e670
如果是第一次接觸Xposed,那么你需要一個(gè)裝上Xposed框架的機(jī)器。安裝過程不表,我是直接刷了一個(gè)自帶Xposed框架的第三方Rom。
那么安裝請參考
http://www.itdecent.cn/p/655a07b687ec
如果不想刷機(jī)的,VirtualXposed了解一下
http://xposed.appkg.com/2799.html
掃盲,想吃快餐的
請參考
https://www.52pojie.cn/thread-677215-1-1.html
1.導(dǎo)入jar
請注意不要用compile!不要用compile!不要用compile!


推薦用gradle方式引入
https://github.com/rovo89/XposedBridge/wiki/Using-the-Xposed-Framework-API
如果要本地包的話,放的位置是lib而不是libs

2.注冊到清單
<meta-data
android:name="xposedmodule"
android:value="true"/> <!--表示是xpose模塊,因此xpose框架能識別它-->
<meta-data
android:name="xposeddescription"
android:value="module test"/> <!--對模塊功能的描述信息-->
<meta-data
android:name="xposedminversion"
android:value="54"/><!--jar包的最低版本,包是54,你這里寫30也沒問題的-->
3.新建類,實(shí)現(xiàn)框架接口和方法
此處就貼api吧,
http://api.xposed.info/reference/packages.html
網(wǎng)上太多例子了
see
1.Xposed________給微信加個(gè)按鈕
3.Xposed________給微信步數(shù)加上翅膀
5.Android中Xposed框架篇—利用Xposed框架實(shí)現(xiàn)攔截系統(tǒng)方法
4.注冊指明實(shí)現(xiàn)框架的類
新建asset文件夾,新建一個(gè)無后綴的文件,文件名 xposed_init,并將該類的全包名寫進(jìn)去。
5.打包
因?yàn)閷?shí)際上這些是作為一個(gè)模塊,有點(diǎn)像插件化的意思,
什么打包不會?Build-Generate Signed Apk
6.重啟
Xposed框架監(jiān)聽了使用該接口的模塊,安裝上模塊,就可以在模塊列表里找到它。 adb reboot即可。
難點(diǎn)有幾個(gè):安裝Xposed框架[允悲],因?yàn)檫@個(gè)就是個(gè)門檻,裝上 才能玩。現(xiàn)在有virtualXposed了
再然后是分析需被hook的app,只有分析出需要被hook的點(diǎn),這個(gè)框架才能發(fā)揮出最大的威力,這就引出了另一個(gè)話題,反編譯拿到明文代碼,無論混淆還是加固,你搞不到點(diǎn)子上,hook個(gè)啥?
最后才是寫hook代碼。
附上我的反Xposed學(xué)習(xí)筆記
http://www.itdecent.cn/p/ee0062468251
一定要看的??!
Xposed API文檔
稍晚附上給伸手黨的hook微信步數(shù)的模塊代碼
https://github.com/lamster2018/XposedExample
新增PreferenceFragment設(shè)置倍率
剛好踩了這個(gè)坑
http://www.itdecent.cn/p/c0e9a1baaa05

而更巧的是
MODE_WORLD_READABLE因?yàn)榘踩珕栴}在N之后棄用,否則報(bào)
java.lang.SecurityException: MODE_WORLD_READABLE no longer supported