
回复
【本文正在参加 2023「盲盒」+码有奖征文活动】 https://ost.51cto.com/posts/25284
关于作者:I’m westinyang
前段时间,我开发了一个开源的跨平台的hap查看器,支持win、mac、linux,可以解析查看API9+ Stage模型的应用,后续还做了一个android版的(开源地址和软件截图见文章底部)。那今天我们来讲一下核心功能的具体实现原理,以及逆向解析应用名的初步方案是如何形成的。
module.json
的明文的描述文件,这里包含了应用的基本信息,我们只需要通过程序读取并解析json读取需要的值即可,下面给出一些java代码片段我们需要先遍历module.abilities
下所有的Ability信息,优先去找与启动AbilityName
一致的Ability信息,如果找不到默认取第一个,然后再解析子属性中的icon
的相对路径值,前面拼上 resources/base/media/
,后面拼上 .png
就是完整的图标路径了,然后根据此路径读取并加载图片即可。
resources.index
文件中。resources.index
的文件,这个就是应用工程里面所有资源文件最终打包的产物,是用一个名为 restool 的开源工具进行构建的,同时 restool
其实就在sdk安装目录下的toolchains子目录中。apktool
等逆向工具能快速准确地反编译看到明文的资源文件010Editor
分别打开几个应用内的 resources.index
文件,在 十六进制视图
下做一些分析和对比,尝试寻找有是否有一定的规律https://gitee.com/ohos-dev/hap-viewer
https://gitee.com/ohos-dev/hap-viewer-android