Android应用加解密--AndroidManifest文件加解密

本文探讨了Android应用加固技术,特别是针对AndroidManifest.xml文件的加密方式。当尝试反编译加固后的apk时,由于特定加密机制导致反编译失败。分析指出,这是利用Android安装时不解析无用标签属性的特性来实现的加密。解密方法涉及删除Application标签下的特定属性,并调整XML文件的相关长度和计数。通过手动修改,可以成功解密并使用apktool反编译出完整文件。

最近对Android应用安全这一块比较关注,所以了解了一些apk加固产品。发现部分加固产品加固后的apk在反编译时会报错,反编译的结果只得到一个空的AndroidManifest.xml文件。针对此现象分析和查找一些资料,发现此情况是因为加固产品对AndroidManifest.xml文件作了一些修改从而实现apk加密。所以写此稿作分析记录,若有新发现则更新。


1.问题:

在反编译某加固产品加固后的apk时出现报错如下:

W: Could not decode attr value, using undecoded value instead: ns=android, name=
qihoo, value=0x00000016

2.直接从apk压缩包中拖出AndroidManifest文件并用AXMLPrinter2.jar工具对其进行格式转换发现Application标签中存在一个这样子的属性:

android:qihoo="activity"
由于android命名空间中并没有qihoo这个属性,所以猜测是加固产品对manifest文件做了手脚。


3.查阅资料发现此种加密是利用了某个漏洞。即Android在安装运行apk时并不会对无用的标签属性进行解析。但是进行反编译时apktool却会对每一个标签属性进行解析,所以导致无法反编译。在此非常感谢wanchouchou大大的文章http://www.cnblogs.com/wanyuanchun/p/4084292.html


4.解密:既然问题已经找到,那么解密工作就应该从Manifest文件入手。目前发现最全的manifest二进制文件格式如图,是看雪论坛MindMac大大的贴给出的:http://bbs.pediy.com/showthread.php?t=194206


5.非常感谢以上两位大大给出便利。


6.手动解密:

分析文件格式可以知道,解密该manifest文件只要把Application标签下的android:qihoo属性删除即可。所以文件需要修改的地方如下:

  • 删除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

 修改的细节就不说了,修改前后的xml及apk文件下载链接:链接:链接:http://pan.baidu.com/s/1i9d86 密码:exod


7.将修改后的xml文件替换掉原apk的中的xml文件,apktool反编译,成功反编译出所有文件!今天先到这,下次再看吧。


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

番茄大圣

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值