🤖 Obfu[DE]scate:Android APK 的反混淆与对比工具。📱
Obfu[DE]scate 是一个 Python 工具,旨在简化对两个版本 Android APK 进行反混淆和对比的过程——即使函数名已被混淆重命名。通过模糊对比逻辑,Obfu[DE]scate 可以识别函数之间的相似性,帮助您发现 APK 版本之间的变更。
Obfu[DE]scate 的安装非常简单!请按照以下步骤操作:
pip install -r REQUIREMENTS.txt
Obfu[DE]scate 已在 Windows 11 上测试过,但也应能在其他系统上运行。
Obfu[DE]scate 提供多个命令行选项来自定义其行为:
要对比两个 APK 文件,只需使用以下命令运行 Obfu[DE]scate:
python ObfuDeScate.py -a1 "old_example.apk" -a2 "new_example.apk" -cp "com.example.path"
在上述示例中,Obfu[DE]scate 将审查 old_example.apk 中位于类路径 com.example.path 的所有函数,并与 new_example.apk 中同一类路径下的所有函数进行对比。
Obfu[DE]scate 生成两个输出文件:一个以换行符分隔的映射文件,以及一个交互式 HTML 文件。这些输出文件包括:
com.chess.play.ObserveGameHelperImpl.d -> com.chess.play.ObserveGameHelperImpl.a 。
Obfu[DE]scate 是一个开源项目,欢迎社区贡献力量。如果您想为 Obfu[DE]scate 做出贡献,请遵循以下指南:
Obfu[DE]scate 遵循贡献者公约行为准则。请在为 Obfu[DE]scate 贡献时查看并遵守该行为准则。
如果您遇到错误或有新功能建议,请在 GitHub 仓库中创建一个 issue。请尽可能提供详细信息,包括重现该问题的步骤或对提议功能的清晰描述。您的反馈非常有价值,将有助于改进 Obfu[DE]scate,让每个人受益。
此工具离不开 APKTool!其次,本 README 中的许多示例以 Chess.com 应用为基础,可在此处查看。
| 简写 | 参数 | 描述 | 是否必需 |
|---|
| -a1 | apk_file_path_1 | 原始 APK 的路径。这是第二个 APK 将与之对比的 APK(例如旧版本的 APK) | 是 |
| -a2 | apk_file_path_2 | 较新 APK 的路径。输出将显示 APK 1 与该 APK 之间的变更。 | 是 |
| -cp | class_path | 用于筛选审查函数的反向域名路径(例如提供 com.example.class 将仅对比此路径上的函数)。 | 否 |
| -o | output_dir | 保存输出映射、HTML 及反编译 APK 的目录。 | 否 |
| -apktool | apk_tool_path | 如果 APKTool 不在 PATH 中,使用此参数告知 ObfuDeScate APKTool 所在位置。 | 否 |