反編譯apk遇到的問題


下面的記錄是在我敲入以下命令后遇到的錯誤:(相信學(xué)習(xí)逆向的同學(xué)一定不會生疏:)

apktool b -f E:\decode -o E:\Decompile.apk 
  1. 回編譯出現(xiàn)文件名或擴展名太長錯誤
    解決方案:減少apktool.yml文件中doNotCompress不加密的文件

  2. 回編譯出現(xiàn)“class not find brut.androidlib.meta.MetaInfo”
    解決方案:刪除apktool.yml文件中的第一行代碼【!!brut.androidlib.meta.MetaInfo】

  3. aapt處理時提示“First type is not attr!”
    解決方案:aapt版本出現(xiàn)問題,替換當(dāng)前最新的版本,別忘記apktool中還有aapt版本

  4. apktool反編譯的時候出現(xiàn)警告【counld not write to 文件路徑】
    解決方案:配置apktool相對路徑

  5. 對于回編譯的時候出現(xiàn)方法數(shù)超出限制
    解決方案:嘗試將smali中的文件轉(zhuǎn)移到其他smali_classes路徑下(smali_classes2,smali_classes3…等等)

  6. 出現(xiàn)【java.lang.UnsupportedClassVersionError】
    解決方案:調(diào)整java與javac的版本匹配

  7. 回編譯出現(xiàn)系統(tǒng)資源找不到
    解決方案:更新android.jar到最新的系統(tǒng)框架

  8. 出現(xiàn)一些適配res目錄中屬性找不到或報錯的情況
    解決方案:可以暫時刪除當(dāng)前屬性,或把整個適配文件也刪除

  9. 有些包直接修改了包名后,出現(xiàn)找不到R文件的情況
    解決方案:需要再一次編譯R文件后再回編譯

  10. 出現(xiàn)回編譯前后包體大小發(fā)生重大變化
    解決方案:調(diào)整apktool.yml中doNotCompress文件集合,使得有些文件需要壓縮

  11. 回編譯的時候,日志顯示不是PNG圖片
    解決方案:找到相應(yīng)的圖片,用圖片工具重新轉(zhuǎn)換PNG格式

  12. 回編譯出現(xiàn)找不到complieSdkVersion、compileSdkVersionCodename
    解決方案:更新android.jar最新版本

  13. 編譯出現(xiàn)【java.lang.UnsupportedClassVersionError】
    解決方案:當(dāng)前電腦的jdk版本過低

  14. 編譯后包體出現(xiàn)微信閃退
    解決方案:需要再微信activity中加入configChanges="screenSize"

  15. 運行包體崩潰,日志顯示:【java.lang.NoSuchMethodError:NO static method checkSelfPermission】
    解決方案:更新support-V4包

  16. 運行包體崩潰,日志不明顯
    解決方案:查看新加入的sdk是否存在so庫,如果有,請保持和母包同樣的環(huán)境目錄,如果沒有,再查看是否時jar沖突

  17. 運行包體,支付閃退
    解決方案:刪除manifest中對應(yīng)支付組件樣式資源

  18. 出現(xiàn)MalformedByteSequenceException:2字節(jié)的UTF-8序列的字節(jié)2無效
    解決方案:Manifest文件中存在中文字符,出現(xiàn)亂碼

  19. icon不對
    解決方案:替換所有涉及icon的目錄下的資源

  20. 反編譯失敗,出現(xiàn)serializeToResValuesXml
    解決方案:修改apktool命令 帶上-r

  21. 回編譯報錯,出現(xiàn)找不到的資源
    解決方案:刪除找不到的資源的索引信息

  22. R文件各種找不到
    需要將apktool和aapt工具同步升級到最新版本。

  23. 方法個數(shù)過多(超過65535)
    “Exception in thread "main" org.jf.util.ExceptionWithContext: Unsigned short value out of range: 71412”,需要將多余的smali文件,移到smali_classes2,smali_classes3…等等,目前最多支持5個,應(yīng)該夠用了。


解決方案:QuickSdk一游戲母包如何解決方法數(shù)超限

23、可以正常構(gòu)建,運行在設(shè)備上會出現(xiàn)各種類文件缺失
一般是smail文件過多導(dǎo)致自動刪減了部分代碼有關(guān),建議分dex包處理或者耐心點,缺失哪個文件補哪個。

注意:
1、編譯和回編譯最好使用同一個apktool操作
2、apktool中記得需要及時更新Android框架版本
3、apktoo2.1一下默認(rèn)對assets下加密的,高于2.1版本默認(rèn)時不加密的,需要自己手動加密,具體需要加密的文件后綴參考apktool源碼中說明信息
4、出現(xiàn)aapt版本也需要升級,注意要考慮aapt2的影響
5、打包過程注意jar沖突
6、打包后運行不正常,排查母包是否限制包名,簽名
7、出現(xiàn)其他異常編譯或回編譯異常的情況,可以嘗試更換apktool版本

大部分內(nèi)容轉(zhuǎn)自這篇blog:聚合sdk打包問題處理
一小部分是自己補充,后面遇到問題會陸續(xù)更新,就當(dāng)記錄和共享~

共勉

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容