记录黑客技术中优秀的内容,传播黑客文化,分享黑客技术精华

drozer app.package.manifest 有时候完全错误的 bug

2020-10-06 22:00

平时经常用 drozer dump manifest,感觉稍微有点难用,直到某次批量 dump,发现很多 manifest 连 hash 都一样,发现 drozer 抽风了,本文记录一下。

一、触发方式

在小米手机上,运行 run app.package.manifest com.miui.notes ,发现返回的是 com.xiaomi.micloud.sdk 的 manifest。

当然在其他手机上也有类似的现象,我就不列举了,批量 dump 就会发现的。

二、代码溯源

app.package.manifest 功能本质上是一个 drozer module,它位于 drozer/modules/app/package.py

这个 getAndroidManifest 在 drozer/modules/common/assets.py

加载一个 java 文件,在手机上运行后获取返回的字符串。

 

因此,我们将这个过程移植到手机上,即可进行测试。

三、代码测试

编写如下的 java 代码进行模拟:

打印输出仍然是错误的,说明是openXmlResourceParser 的问题。

跟进一步,发现openXmlResourceParser(String)会调用openXmlResourceParser(0, String),第一个参数零表示 cookie,最终调用到 native 方法。

在AssetManager 里搜cookie 的代码,大致猜测出这个 cookie 表示下标,为零时表示随意选择一个 ApkAsset,而 AssetManager 里有 ApkAssets[] 结构体,很可能是相关的,编写如下代码进行验证。

 

当包名是 com.miui.notes 和 自己时,日志分别为:

 

差别仅在于最后那一项,com.miui.notes 会依赖 RtMiCloudSDK.apk,也就是出错的那一项,而我们的 apk 是没有它的。

将正确的值传递给 openXmlResourceParser ,发现返回是正确的,至此,破案了,是 openXmlResourceParser 发生了非预期的现象。

四、解决方案

由于相关 API 都是 hide 的,写代码不方便,在此我还是建议别用这个工具了,还是用我写的 ShrinkApkAnalyzer 吧。


=============================================================
随着访客的增多,LeadroyaL在本站流量的开支越来越多了,曾经1元能用1个月,现在1元只能用3天。如果觉得本文帮到了你,希望能够为服务器的流量稍微打赏一点,谢谢!

知识来源: https://www.leadroyal.cn/?p=1187

阅读:19679 | 评论:0 | 标签:app

想收藏或者和大家分享这篇好文章→复制链接地址

“drozer app.package.manifest 有时候完全错误的 bug”共有0条留言

发表评论

姓名:

邮箱:

网址:

验证码:

公告

❤人人都能成为掌握黑客技术的英雄❤

ADS

标签云