反编译apk遇到的问题


下面的记录是在我敲入以下命令后遇到的错误:(相信学习逆向的同学一定不会生疏:)

apktool b -f E:\decode -o E:\Decompile.apk 
  1. 回编译出现文件名或扩展名太长错误
    解决方案:减少apktool.yml文件中doNotCompress不加密的文件

  2. 回编译出现“class not find brut.androidlib.meta.MetaInfo”
    解决方案:删除apktool.yml文件中的第一行代码【!!brut.androidlib.meta.MetaInfo】

  3. aapt处理时提示“First type is not attr!”
    解决方案:aapt版本出现问题,替换当前最新的版本,别忘记apktool中还有aapt版本

  4. apktool反编译的时候出现警告【counld not write to 文件路径】
    解决方案:配置apktool相对路径

  5. 对于回编译的时候出现方法数超出限制
    解决方案:尝试将smali中的文件转移到其他smali_classes路径下(smali_classes2,smali_classes3…等等)

  6. 出现【java.lang.UnsupportedClassVersionError】
    解决方案:调整java与javac的版本匹配

  7. 回编译出现系统资源找不到
    解决方案:更新android.jar到最新的系统框架

  8. 出现一些适配res目录中属性找不到或报错的情况
    解决方案:可以暂时删除当前属性,或把整个适配文件也删除

  9. 有些包直接修改了包名后,出现找不到R文件的情况
    解决方案:需要再一次编译R文件后再回编译

  10. 出现回编译前后包体大小发生重大变化
    解决方案:调整apktool.yml中doNotCompress文件集合,使得有些文件需要压缩

  11. 回编译的时候,日志显示不是PNG图片
    解决方案:找到相应的图片,用图片工具重新转换PNG格式

  12. 回编译出现找不到complieSdkVersion、compileSdkVersionCodename
    解决方案:更新android.jar最新版本

  13. 编译出现【java.lang.UnsupportedClassVersionError】
    解决方案:当前电脑的jdk版本过低

  14. 编译后包体出现微信闪退
    解决方案:需要再微信activity中加入configChanges="screenSize"

  15. 运行包体崩溃,日志显示:【java.lang.NoSuchMethodError:NO static method checkSelfPermission】
    解决方案:更新support-V4包

  16. 运行包体崩溃,日志不明显
    解决方案:查看新加入的sdk是否存在so库,如果有,请保持和母包同样的环境目录,如果没有,再查看是否时jar冲突

  17. 运行包体,支付闪退
    解决方案:删除manifest中对应支付组件样式资源

  18. 出现MalformedByteSequenceException:2字节的UTF-8序列的字节2无效
    解决方案:Manifest文件中存在中文字符,出现乱码

  19. icon不对
    解决方案:替换所有涉及icon的目录下的资源

  20. 反编译失败,出现serializeToResValuesXml
    解决方案:修改apktool命令 带上-r

  21. 回编译报错,出现找不到的资源
    解决方案:删除找不到的资源的索引信息

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

  23. 方法个数过多(超过65535)
    “Exception in thread "main" org.jf.util.ExceptionWithContext: Unsigned short value out of range: 71412”,需要将多余的smali文件,移到smali_classes2,smali_classes3…等等,目前最多支持5个,应该够用了。


解决方案:QuickSdk一游戏母包如何解决方法数超限

23、可以正常构建,运行在设备上会出现各种类文件缺失
一般是smail文件过多导致自动删减了部分代码有关,建议分dex包处理或者耐心点,缺失哪个文件补哪个。

注意:
1、编译和回编译最好使用同一个apktool操作
2、apktool中记得需要及时更新Android框架版本
3、apktoo2.1一下默认对assets下加密的,高于2.1版本默认时不加密的,需要自己手动加密,具体需要加密的文件后缀参考apktool源码中说明信息
4、出现aapt版本也需要升级,注意要考虑aapt2的影响
5、打包过程注意jar冲突
6、打包后运行不正常,排查母包是否限制包名,签名
7、出现其他异常编译或回编译异常的情况,可以尝试更换apktool版本

大部分内容转自这篇blog:聚合sdk打包问题处理
一小部分是自己补充,后面遇到问题会陆续更新,就当记录和共享~

共勉

你可能感兴趣的:(反编译apk遇到的问题)