问题
这两天突然有了做个App的想法,拿了一个apk用apktool来反编译,发现这个apk是被加固的,apk在反编译时会报错,错误提示如下:
W: 无法反编译 attr 值, 使用未反编译的 value 而不是: ns=android, name=qihoo, value=0x00000030而且查看反编译的文件夹,里面只躺了一个AndroidManifest.xml。What?我的res呢?我的lib呢?
AndroidManifest.xml作为apk的入口,肯定是这块出了问题。果不其然,利用AXMLPrinter2.jar对AndroidManifest.xml进行格式转换,局部如下:
<application
...
android:qihoo="activity"
>
...
</application> 额...这个android:qihoo="activity"啥东西。通过各种搜索发现这种加密是利用Android在运行apk时不会对没有用的标签属性进行解析。但apktool在反编译时会对每个标签属性进行解析,所以就会报出上面的错误。
解决方案
1.用AXMLPrinter2.jar对 AndroidManifest.xml进行格式转换;
java -jar AXMLPrinter2.jar AndroidManifest.xml > AndroidManifest2.xml 2.修改下面所列的四个地方:
- 删除application标签下的android:qihoo属性,总大小为1*5*4bytes提交
- 修改XmlContent chunk 中 application start tag chunk的Attribute count 减去1
- 修改application start tag chunk的chunk size 减去0x14
- 修改整个xml的file size 减去0x14
3.保存,将修改的文件放入apk文件夹中;
4.反编译成功,完美!
本文介绍了一种加固的APK在反编译过程中遇到的问题及解决方法。主要针对加固导致的反编译错误进行了详细的分析,并提供了解决方案,包括使用AXMLPrinter2.jar转换AndroidManifest.xml和手动修改XML文件等步骤。
1万+

被折叠的 条评论
为什么被折叠?



