zx97/unwrap
GitHub: zx97/unwrap
一个用于Oracle PL/SQL代码混淆和去混淆的C++工具。
Stars: 0 | Forks: 0
# PL/SQL Unwrap v3.2.0 -> PL/SQL Unwrap v3.2.0
独立的 C++ 二进制程序,用于**展开**(和**包装**)Oracle PL/SQL 源代码,由 Cameron Marshall 的 [PL/SQL Unwrapper][original] 项目移植而来。
由 **Manuel FLURY** 进行 C++ 端移植。许可协议为 **GNU 通用公共许可证 v3.0**。
## 功能
- V1 展开 — Oracle 8/8i/9i **(移植,未测试**)
- V2 展开 — Oracle 10g+ 至 23ai
- V2 包装 — 将普通 PL/SQL 编码为原生 Oracle 包装格式
- 与 Oracle 19c 原生 `wrap` 工具验证为字节相同
- 支持:TYPE、PRAGMA、RESULT_CACHE、DETERMINISTIC、参数
- 方案限定名称需要 `--compat`(删除前缀)
- **混淆** — 将标识符重命名为非常短的名字,嵌入 AES-256-CBC 加密映射,使用 PBKDF2 密钥派生
- **去混淆** — 从混淆源恢复原始名称
- 自动检测包装部分(混合文件,多个部分)
- 二进制中嵌入许可证和 README
- `-p ` 在展开后自动去混淆
- `--compat` / `-c` 从对象名称中删除方案前缀
## 限制
- 最大输入文件大小:**128 MB**
- V1 解包装器已移植,但缺乏实际验证
- 方案限定对象名称(`schema.func`)产生无效的包装输出;在包装之前使用 `--compat` 删除前缀
- 多对象文件(规范 + 主体)需要在 CREATE 语句之间使用 `//` 分隔符 — 每个单元独立包装
## 使用方法
```
unwrap [options] [-i ] [-o ]
wrap [options] -i [-o ]
```
| 选项 | 描述 |
|----------------------------|-----------------------------------------------|
| `-i`,`--input` | 输入文件(如果管道,则为 stdin) |
| `-o`,`--output` | 输出文件(如果省略,则为 stdout) |
| `--v1` | 强制 V1 解包装器(8/8i/9i — 未测试) |
| `--v2` | 强制 V2 解包装器(10g+) |
| `--wrap` | 包装源(V2 方法) |
| `--obfuscate`,`--obf` | 将标识符重命名为短名字 + 包装 |
| `--deobfuscate`,`--deobf` | 从混淆源恢复原始名称(需要密码) |
| `-p`,`--passphrase` | 混淆/自动去混淆的密码 |
| `--keep-comments` | 保留注释(默认:删除它们) |
| `--compat`,`-c` | 从对象名称中删除方案前缀 |
| `-V`,`--version` | 显示版本和作者 |
| `-l`,`--license` | 显示许可证信息 |
| `--readme` | 显示嵌入的 README |
| `-h`,`--help` | 显示此帮助 |
## Oracle 兼容语法(包装模式)
```
wrap iname=file.sql oname=file.pls keep_comments=yes help=yes
```
在没有参数调用时,如果 stdin 是终端,则显示用法而不是从 stdin 读取。单独的 `-p` 标志在展开后自动触发去混淆。
## 构建
**依赖项:** cmake,zlib,OpenSSL(C++17)。
```
make
make test
make clean
```
根据发行版的安装命令:
- **Debian/Ubuntu:** `apt install build-essential cmake libz-dev libssl-dev`
- **Fedora/RHEL:** `dnf install gcc-c++ cmake zlib-devel openssl-devel`
- **Alpine:** `apk add build-base cmake zlib-dev openssl-dev`
## 原始项目
https://github.com/oddz/PL-SQL-Unwrapper
标签:AES-256-CBC, C++工具, GNU通用公共许可证, Node.js, Oracle数据库, PBKDF2, PL/SQL, 代码优化, 代码封装, 代码混淆, 代码版本控制, 代码管理, 代码解封装, 代码解混淆, 代码转换, 加密, 数据库安全工具, 数据库工具, 数据库开发, 数据库管理, 数据库脚本, 数据库脚本优化, 数据库脚本优化工具, 数据库脚本加密, 数据库脚本加密工具, 数据库脚本审计, 数据库脚本审计工具, 数据库脚本工具, 数据库脚本开发工具, 数据库脚本版本控制, 数据库脚本版本控制工具, 数据库脚本管理, 数据库脚本管理工具, 数据库脚本解密, 数据库脚本解密工具, 数据库脚本转换, 数据库脚本转换工具, 数据管道, 源代码处理, 漏洞扫描器, 软件工具, 软件工程, 软件开发