AFCaternos/Rhino-Smali-Deobfuscator

GitHub: AFCaternos/Rhino-Smali-Deobfuscator

一款基于 JavaScript 编写的 Android Smali 代码还原工具,专门用于解码和还原 Mozilla Rhino 引擎加密内嵌的 JavaScript 源码。

Stars: 0 | Forks: 0

# Rhino Smali Deobfuscator 🔓 ## 项目概述 Rhino Smali Deobfuscator 是专门用于解析与还原 Android Smali 文件中由 Mozilla Rhino 引擎生成的加密 JavaScript 代码的工具。通过定位 Smali 字节码中的 `getEncodedSource` 方法,抽取字符数据并逆向映射 Rhino Token 字节码,将二进制编码恢复为结构清晰的标准 JavaScript 源代码,同时支持对原 Smali 文件进行重构与保存。 ## 核心功能 * **Smali 字节码解析**:定位包含 `getEncodedSource` 方法的 Smali 代码段,提取内部的加密字符串数据。 * **Rhino Token 还原**:支持 Rhino 语法树中的表达式、流程控制语句、逻辑运算符、三元运算符、变长数值类型,包含 Short、Long 与 IEEE 754 Double 浮点数,以及字符串常量的映射与重构。 * **转义格式转换**:包含完整的 Smali 字符转义解包与 JavaScript 格式化能力,保障字符解析过程的准确度。 * **导出与重构**:提供独立 JavaScript 文件的导出保存功能,同时重新转义生成可运行的目标 Smali 文件。 ## 工作原理 项目处理逻辑分为三个步骤: 1. **提取阶段**:读取目标 Smali 文件,搜索 `getEncodedSource` 方法声明,提取包含加密源文本的 `const-string` 字节码序列。 2. **解码阶段**:将 Smali 规范的 Unicode 转义序列还原为原始字节数据,按位解析 Rhino 语法树 Token,重构 JavaScript 逻辑结构。 3. **生成阶段**:将格式化完毕的 JavaScript 导出保存,同时将转换后的代码重新替换写入 Smali 文件中。 ## 环境要求 * Node.js 14.0.0 及以上版本 ## 使用指南 运行命令行工具时,传入待处理的 Smali 文件名称。未指定目标文件名时,默认生成后缀为 `_deobf.smali` 的重构文件。 ### 命令语法 node deobf.js <输入文件.smali> [输出文件.smali] ### 执行示例 node deobf.js TargetClass.smali TargetClass_deobf.smali 执行后将在当前目录下生成以下文件: * `TargetClass.js`:从 Smali 中提取并还原的标准 JavaScript 源代码文件。 * `TargetClass_deobf.smali`:完成替换的重构 Smali 字节码文件。
标签:Android安全, CMS安全, JavaScript, MITM代理, Smali解析, 代码解密, 数据可视化, 自定义脚本, 逆向分析