gpt4 book ai didi

android - 解压aab resources.pb

转载 作者:行者123 更新时间:2023-11-30 05:01:22 27 4
gpt4 key购买 nike

我计划将 .aab 上传到 Play 商店进行发布,在发布之前,我正在尝试反编译以查看在逆向工程过程中哪些数据可能会暴露给用户。

在 .aab_FILES/base/中,我看到了 assets.pb 和 resources.pb protobuffs - 这些文件可以以某种方式打开吗?因为目前我还没有找到任何方法来泄露他们的内容。

我实际上是在查看 values/strings.xml 的打包位置 - 因为它们从 .aab_FILES/base/res/位置丢失,我想确保我的 map API key (位于 strings.xml 中)不会'不要暴露给用户。

最佳答案

resources.pb是strings数据的序列化,不能直接提取到xml。

有两种方法可以解决这个问题:

将aab转换为apk

使用bundletool将 aab 转换为通用 apk 并从那里读取 xml:

java -jar bundletool-all-1.8.0.jar build-apks --mode=universal --bundle=~/test.aab --output=~/universal.apks

现在可以解压缩 universal.apks 文件。它包含一个 universal.apk 文件,可以像任何 apk 一样从中获取资源。从 apk 获取可读 xml 文件的最简单方法是使用 apktool :

apktool d ~/unzipped_universal_apks/universal.apk -o ~/unzipped_universal

文件夹 ~/unzipped_universal 现在包含已解码的 universal.apk,其中的 xml 资源应该已解码且可读。

直接从protobuf文件中读取protobuf值

为了读取 protobuf 文件,您需要它的方案(或 proto 文件)。aab 的原型(prototype)文件在 aapt2 中存储库: Resources.proto这取决于 Configuration.proto .

这些文件可以用多种编程语言编译成可工作的代码。我将按照描述使用 python 来展示它 here .

首先,应该修改 Resources.proto 以从同一文件夹位置而不是原始文件夹位置导入 Configuration.proto(除非您创建了整个必要的文件夹结构)。

所以,改变:

import "frameworks/base/tools/aapt2/Configuration.proto";

收件人:

import "Configuration.proto";

现在,在终端中运行:

protoc  --python_out=~/proto_output Configuration.proto Resources.proto

在 ~/proto_output 中现在将有 2 个文件:Configuration_pb2.py Resources_pb2.py。这些文件包含用于访问 resources.pb 文件的 protobuf 结构的 python 代码,以及 protobuf 编码的 AndroidManifest.xml。

为了读取 protobuf 文件运行:

from google.protobuf.json_format import MessageToDict
from Resources_pb2 import ResourceTable

res_obj = ResourceTable()
res_pb_file_path = '~/unzipped_app_bundle/base/resources.pb'
with open(res_pb_file_path, 'rb') as f:
content = f.read()
res_obj.ParseFromString(content)

# converting the protobuf object to a nice dictionary representation
res_dict = MessageToDict(res_obj)

关于android - 解压aab resources.pb,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58187246/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com