1 前言
最近在對ROM定制進行了預演垫挨,整個過程挺好玩的,這里分享一下康谆。
目前遇到需求主要有:
- 修改系統(tǒng)交互
- 普通應用修改為系統(tǒng)應用
- 普通應用繞權(quán)限檢驗
2 工具介紹:
adb: 不解釋
adb shell dumpsys activity | findstr "mFocusedActivity" //獲取當前activity名稱
adb logcat |tee log.log //將日志打印到文件
adb logcat |grep AppOps //打印指點TAG的日志
adb push E:\apk\ /sdcard/ //將文件導入sdcardapktool: 查看apk的資源 xml等文件
apktool.bat d -f release.apk -o releasedex2jar: 將dex轉(zhuǎn)成jar文件
dex2jar.bat classes.dexjd-gui.exe: 查看jar
baksmali: 把dex文件轉(zhuǎn)換成smali文件的工具(dex文件無法修改,要想修改源碼定页,必須把把dex文件轉(zhuǎn)換成smali文件)
java -jar baksmali-2.0.3.jar -x classes.dexsmali: 把smali文件轉(zhuǎn)換成為dex文件的工具(修改完smali文件踢械,自然需要把它還原到最初的dex文件)
java -jar smali-2.0.3.jar -o classes.dex outsignapk.jar: 對apk進行簽名(沒經(jīng)過簽名的包最終會安裝失敗酗电,提示“解析程序包出現(xiàn)問題”)
java -jar signapk.jar platform.x509.pem platform.pk8 HelloWorld.apk Signed.apkjanus.py: 利用漏洞Janus允許惡意攻擊者任意修改Android應用中的代碼,而不會影響其簽名
python janus.py classes.dex app-debug.apk out.apkfindApkByActivity.py: 將遍歷目前下的apk,尋找包含目標Activity找對應包名
3 修改系統(tǒng)交互
要明確一點内列,手機上看到的任何一個界面(撥號界面撵术、設(shè)置界面),實際上都是對于的ROM包上的一個apk德绿,因此如果修改這些界面或交互荷荤,實際上就是修改對應的apk。
3.1 根據(jù)Activity尋找對應的apk包名
通過adb命令移稳,得知待修改界面的Activity名稱
adb shell dumpsys activity | findstr "mFocusedActivity"通過findApkByActivity.py:腳本尋找對應包名
將ROM下的apk拷到某目錄下蕴纳,執(zhí)行該腳本 。
腳本的本質(zhì)是利用apktool.bat將apk反編譯个粱,然后讀取AndroidManifest是否包含目標Activity關(guān)鍵字古毛。
3.2 修改apk
- apk的后綴改完zip后,打開得到class.dex都许;
- 使用baksmali稻薇,將class.dex換成smali文件, 修改對應smali源碼
這個雖然是簡單的一句修改源碼胶征,但怎么改是個藝術(shù)活塞椎; - 使用smali,把已修改smali文件轉(zhuǎn)換成為dex文件的睛低;
- 修改完的class.dex重新添加到替換原apk的class.dex案狠;
3.3 安裝apk
核心破壞
由于篡改了apk的文件,正常按照時會報錯钱雷,我們需要把android校驗的相關(guān)代碼去掉骂铁。
目前使用幸運修改器修改,當然也可以通過自己修改源碼實現(xiàn)罩抗。替換apk
在有root權(quán)限的情況下拉庵,將修改好的dex和apk,替換 system/priv-app以及 data/dalvik-cache,重啟即可套蒂。
3.4 結(jié)語
上述方案的簡單的可以總結(jié)為:先對ROM進行核心破壞钞支,破壞其對apk安裝時的簽名校驗,然后可以盡情的篡改安裝系統(tǒng)apk操刀。
以上方案在HM NOTE 1TEL(MIUI9.2烁挟、Android4.4.4)測試生效,是在手機獲取root權(quán)限后馍刮,進行篡改操作信夫。其實也可以直接修改rom包。
3.5 實用資料
- Android安全講座第八層[二] 替換已經(jīng)安裝后的應用的dex文件
- [原創(chuàng)]安天移動安全:Janus高危漏洞深度分析
- apk解包+修改源碼+重新打包
- APK反編譯
- MIUI ROM修改教程Ⅰ【破解安卓核心,通殺所有簽名應用】
4 普通應用修改為系統(tǒng)應用
4.1 步驟
- Apk安裝正常 静稻;
- 將apk文件移動到system/app目錄警没;
- 對應so的文件移動到system/lib目錄;
- 重啟手機振湾;
4.2 坑
由于需要吧so文件都移動到system/lib杀迹,所以如果你的應用里的so如果與系統(tǒng)的重名,那么就需要修改自己app的so名稱押搪。
4.3 實用資料
5 普通應用繞權(quán)限檢驗
碎碎念
實現(xiàn)這個功能树酪,最先想到的是修改源碼AppOpsServie的checkOp方法,不過經(jīng)過調(diào)試大州,發(fā)現(xiàn)apk校驗權(quán)限時续语,并不會走這個方法(android 4.4)。
然而厦画,在將應用轉(zhuǎn)成系統(tǒng)應用后疮茄,應用自動獲取該有的權(quán)限,完美根暑!
不過其它版本的需要額外預研力试!