在 APK 信息的對話框中,點擊功能後彈出菜單,除了前面介紹過的 APK 簽名和 XML 翻譯模式外,還可以看到 APK 優化、APK 共存、RES 資源混淆、RES 反資源混淆、去除簽名校驗,後面兩個功能需要開通 VIP 才能使用。
該功能對安裝包内不規範的文件以 APK 模式進行重新打包并 Zipalign 對齊優化,優化後安裝包可能會增大。
在 apk 文件中,像圖片、音頻以及 resources.arsc 等資源文件,都應該以存儲的方式進行打包,同時進行 4K 對齊,這樣有助于提高應用的加載和運行效率。
APK 共存在安卓系統中,包名是每個應用的身份 ID,應用更新後名字、圖片、界面都可以變化,唯獨包名不能變。對于不同的應用,它們的包名不能一樣,否則會被認為是同個應用。
通過這個原理,我們隻需要改變應用的包名,就可以在手機多次安裝同一個應用,而不會出現覆蓋安裝了。APK 共存功能正是幫你自動完成包名的修改。
由于程序的複雜多變,很難有一種方法可以保證應用在修改完包名後還能正常運行,MT 提供了兩種方案進行修改,我稱它們為新版方案和舊版方案。
新版共存方案由 MT 獨創,它通過修改 AndroidManifest.xml 中的包名以及其它一些關鍵信息,還有修改 resources.arsc 中的包名來實現共存,不會修改 dex 和 so 文件,對 apk 的改動最小,成功率也比較高。
如果使用該方案生成的 apk 安裝後無法運行,并且你有一定的技術經驗的話,可以用 getPackageName 為關鍵字搜索代碼,找出導緻出錯的地方手動修複。
舊版方案舊版共存方案使用傳統方式制作共存,它會把 apk 所有的包含包名的數據全部替換成新的包名,包括 arsc、dex、xml、so 文件中的數據。如果使用該方案在處理 dex 文件時報錯,可以先進行 dex 修複并打包回去,最後再進行共存。
補充說明在進行共存前,建議先對 apk 重新簽名然後安裝,測試下是否有防修改的保護。
雖然一個叫新方案一個叫舊方案,但兩者沒有優劣之分,隻是修改方法不同,在一種方案失敗了之後應該嘗試下另一種方案。
不論是新版方案還是舊版方案,都不能保證共存後的應用一定可以運行,如果你了解這方面的技術,可以在失敗後手動修複。
RES 資源混淆RES 資源混淆可以把 apk 中的資源名稱都修改成沒有意義的符号。其中 res/xxxx 文件夾内的資源文件全部轉移到 r 文件夾中,resources.arsc 文件中的條目(Entry)名稱會修改成 MT_Bin。資源混淆還會在一定程度上減小 apk 文件體積,增加反編譯難度。
RES 反資源混淆RES 反資源混淆是資源混淆的一個逆過程,這是一個 VIP 功能。它可以把所有資源文件放回到它們原先所在的 res/xxx 文件夾、還原資源文件名後綴。
該功能無法還原資源文件名,因為原來的文件名被消除了,這是一個不可逆的過程,還原的文件名統一用“類型名 ID”的形式,例如“drawable001F”,resources.arsc 文件中的條目(Entry)名稱也是如此。
具體的效果請自行嘗試。
去除簽名校驗有些應用會對 apk 的簽名身份信息進行校驗,以防止被修改。
使用該功能需要開通 VIP,它的實現原理是對 PackageManager 的 getPackageInfo() 方法進行 hook,修改其返回的 signatures 數據,所以僅适用于通過該方式來進行簽名校驗的應用,如果是通過其它方式進行簽名校驗則無效。
MT 會從 META-INF/XXX.RSA (DSA) 文件中獲取原始簽名數據,所以在使用該功能前請确保被處理的 apk 中的 RSA/DSA 簽名信息文件是未經過修改的。
如果當前處理的文件不是原版 apk,請先将原版安裝包中的 META-INF/XXX.RSA (DSA) 文件添加當前 apk 中。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!