工具
Katalina Dalvik 字节码模拟器
用 Python 编写的 Dalvik 字节码模拟器,README 将其比作面向 Dalvik 的 Unicorn:它解析 DEX 文件并逐条指令执行方法,用 Python 模拟实现替代 String、StringBuilder、Base64、ArrayList、AES Cipher 及部分反射等常见 Java 与 Android API。它可针对 Android 入口点、名称匹配的方法或带指定参数的单个方法运行,记录代码构造或解密出的字符串,并可输出为 JSON,有助于还原应用和恶意软件中被混淆的字符串。
- 目标
- 应用
- 类别
- Android 工具
- 关联
- 基础工具
- 来源复核于
使用条件与局限
- 没有发布版本或标签。开发集中在 2023 年 5 月至 12 月;所审阅的 main 分支提交 f8e27b9(2026-10-01)合并了一个外部贡献的修复,使 String.valueOf 的模拟实现按被调用重载的描述符分派。
- 需要 Python 3.10+ 以及 requirements.txt 中固定版本的依赖,包括 kaitaistruct 0.10 和 pycryptodome 3.18.0。main.py 的 -xe 执行 Android 入口点,-xm 执行名称匹配的方法,-x 以参数执行一个完整限定名的方法,-dl 跳过名称含指定词的方法,-j 输出 JSON。执行入口点和名称匹配时,每个方法都受 SIGALRM 时间限制,因此 README 称 Windows 支持可能有问题,建议使用 WSL。
- 输入是取自分析者已有 APK 的单个 classes.dex。README 称大多数指令、同类与静态方法调用以及 String 和 Base64 API 可用,迭代器、数组 API 和跨类实例调用部分可用,MultiDex 和 I/O 不可用。没有模拟实现的框架行为不会被复现,AES 模拟也只先后尝试 ECB 和零 IV 的 CBC 模式,因此还原出的字符串需要对照代码核实。仓库没有测试或持续集成。
- 采用 MIT 许可。首次提交曾包含一批 DEX 样本,其中许多以 Android 恶意软件家族命名,一个月后被删除;所审阅的代码树只有 Python 源码,本条目也不链接任何样本。未提及使用 REA,本次审阅未运行任何 DEX 文件。
关于此条目
说明已依据一手来源复核;这不代表已运行验证、经过安全审计或确认兼容。
一手来源
- README.md GitHub · huuck/Katalina · 修订 f8e27b9
- main.py GitHub · huuck/Katalina · 修订 f8e27b9
- mocks.py GitHub · huuck/Katalina · 修订 f8e27b9
- requirements.txt GitHub · huuck/Katalina · 修订 f8e27b9
- LICENSE GitHub · huuck/Katalina · 修订 f8e27b9
- https://github.com/huuck/Katalina/pull/6