android 插件 manifest,Android应用加解密--AndroidManifest文件加解密

本文聚焦Android应用安全,分析部分加固产品加固后APK反编译报错、仅得空AndroidManifest.xml文件的问题。发现是加固产品修改该文件实现加密,利用Android安装不解析无用标签属性、反编译工具解析的漏洞。还给出从Manifest文件入手的解密方法及手动修改步骤,最终成功反编译。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近对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反编译,成功反编译出所有文件!今天先到这,下次再看吧。

xml加密(XML Encryption)是w3c加密xml的标准。这个加密过程包括加密xml文档的元素及其子元素,通过加密,xml的初始内容将被替换,但其xml格式仍然被完好的保留。 介绍 我们有3个加密xml的方法 1、仅仅使用对称加密的方法加密xml 这种加密方法只使用一个密钥,也就是说无论是加密xml还是解密xml都使用一个相同的密钥。因为这个密钥不会在被加密的xml中保存,所以我们需要在加密和解密的过程中加载这个密钥并保护它不被窃取。 2、使用对称加密和非对称加密相结合的方法来加密xml 这种方法需要一个用于加密数据的对称密钥和一个用于保护这个对称密钥的非对称密钥。被加密的对称密钥和被加密的数据一起保存在xml文档中。当用私有非对称密钥解密密钥的时候要用公开非对称密钥对密钥进行加密。 本文就将使用这种方法。想学到其他更多的方法请参看MSDN等到更多的信息。 (译者注:非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey)。公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。) 3、使用X.509加密xml,这种方法是用X.509作为非对称密钥,它由诸如VeriSign之类的第三方提供。 方法 不管xml加密是如何完成的,保存加密数据总是用两种方法之一。 1、加密后所有的元素都被命名为 2、加密后只有数据被替换,而元素名称仍然是可读的,不会发生变化。
<think>好的,我现在需要帮助用户在UniApp的APP端实现播放m3u8格式的视频。首先,根据用户提供的引用内容,我看到引用[1]提到在UniApp中使用video组件直接播放视频流,但可能默认的video组件不支持m3u8。用户也提到了尝试mui-player插件,但可能遇到了问题。接下来,引用[2]提到在H5中使用videojs和videojs-flash来播放m3u8,但UniApp的APP端可能需要不同的方法,因为涉及原生插件。引用[3]是关于抓包和视频解密的,可能对处理加密的m3u8流有帮助,但用户当前的问题主要是播放。 首先,我需要确认UniApp的video组件在APP端是否支持m3u8。查阅UniApp文档发现,原生的video组件在APP端依赖各平台的原生播放器,Android和iOS可能支持不同的格式。例如,Android的原生播放器可能不支持m3u8,而iOS的AVPlayer可能支持。因此,直接使用video组件可能不可靠,需要插件支持。 接下来,用户提到的mui-player插件可能在UniApp中需要配置原生插件。但根据引用[2],H5中使用videojs需要额外的库,但在APP端可能需要使用原生模块。因此,可能需要使用uni-app的native.js或原生插件市场中的插件。 然后,我想到在UniApp插件市场搜索相关插件,比如“m3u8播放器”或“HLS播放”。例如,可能有开发者提供的基于ijkplayer或其他开源库的插件,支持m3u8格式。此外,引用[1]中的示例代码使用了video组件,但需要确认是否在APP端有效,可能需要测试。 另外,用户可能需要集成第三方SDK,比如使用Android的ExoPlayer或iOS的AVPlayer来支持HLS流。这可能需要原生开发,然后封装成UniApp的插件。对于不熟悉原生开发的用户,使用现有的插件会更方便。 此外,引用[3]提到的解密过程可能涉及到处理加密的m3u8流,但用户当前的问题可能只是播放,所以暂时可以忽略解密部分,除非视频流是加密的。 总结可能的解决方案步骤: 1. 测试UniApp原生video组件在APP端是否支持m3u8,可能在不同平台表现不同。 2. 如果原生不支持,寻找UniApp插件市场的第三方插件,如mui-player或其他支持HLS的插件。 3. 使用原生开发封装播放器,可能需要Android和iOS的原生代码集成。 4. 考虑使用WebView嵌入H5的解决方案,如引用[2]中的videojs,但APP端可能性能不佳或兼容性问题。 5. 提供示例代码,指导用户如何集成插件或使用现有方法。 需要验证各步骤的可行性,特别是插件市场的现有资源。例如,检查是否有现成的m3u8播放插件,并查看其文档。如果存在,指导用户安装配置;如果不存在,可能需要原生开发或替代方案。 最后,生成相关问题,帮助用户深入解决可能遇到的其他问题,如性能优化、不同格式支持等。</think>以下是在UniApp中实现APP端播放m3u8视频的解决方案: ### 一、原生video组件测试 UniApp的`video`组件在APP端部分平台支持m3u8格式,但需注意: - **iOS端**:AVPlayer原生支持HLS协议(m3u8) - **Android端**:依赖系统解码能力(Android 4.1+部分支持) ```html <template> <video :src="m3u8Url" controls autoplay></video> </template> <script> export default { data() { return { m3u8Url: "http://example.com/stream.m3u8" } } } </script> ``` 若无法播放,需通过插件扩展支持[^1]。 ### 二、使用插件市场解决方案 1. **安装mui-player插件** -插件市场导入`mui-player`(需HBuilderX 3.2.5+) - 配置原生插件: ```javascript // manifest.json "app-plus": { "plugins": { "MuiPlayer": { "version": "1.0.5", "provider": "DCloud_plugin" } } } ``` 2. **实现代码示例** ```html <template> <view> <mui-player :url="m3u8Url" :autoplay="true"></mui-player> </view> </template> <script> export default { data() { return { m3u8Url: 'http://example.com/stream.m3u8' } } } </script> ``` ### 三、Android端特殊处理 若需增强兼容性,可配置`AndroidManifest.xml`: ```xml <application> <meta-data android:name="android.software.leanback" android:value="true" /> <meta-data android:name="android.webkit.WebView.EnableSafeBrowsing" android:value="true" /> </application> ``` ### 四、加密流处理 若遇到加密m3u8流,需配合解密库使用: ```javascript // 引入crypto-js npm install crypto-js // 解密处理示例 import AES from 'crypto-js/aes'; const decryptedData = AES.decrypt(encryptedStr, '秘钥').toString(); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值