Wirmaple73/Restruct

GitHub: Wirmaple73/Restruct

Restruct 是一个自动为结构体字段之间生成填充字节的小脚本,帮助逆向工程师根据自定义偏移量快速重建准确的 struct 定义。

Stars: 0 | Forks: 0

奉主之名

## 🔢🔧 重构 这是一个为那些(主要是逆向工程师)需要在他们的 struct 中使用自定义 offset 的人设计的小脚本。与其手动编写填充字节(这既繁琐又容易出错),不如让 Restruct 自动为您完成! [![MIT 许可证](https://img.shields.io/badge/license-MIT-forestgreen)](LICENSE) ## ⬇ 安装说明 确保已安装 Python `3.8` 或更高版本。现在,你可以下载此仓库,或者在终端中运行以下命令: ``` git clone https://github.com/Wirmaple73/Restruct.git cd Restruct ``` ## ▶ 用法 以下步骤假设您已经完成了上面的安装指南。 1. 在 `input.txt` 中声明您选择的 class 或 struct: ``` struct Character { int Handle; // size: 4, offset: 0x0 char* Name; // size: 4, offset: 0x4 float Health; // size: 4, offset: 0x64 bool IsInvulnerable; // size: 1, offset: 0xEA double Coords[3]; // size: 24, offset: 0xF2 Vehicle* CurrentVehicle; // size: 4, offset: 0x11A }; ``` **注意:** * 混合使用十进制和十六进制数字是可以的。除非以 `0x` 开头,否则所有数字都会被解释为十进制。 * 在指定字段属性时,您也可以使用 `=` 来代替 `:`。 * 在每个字段声明之后,您**必须**像上面展示的那样显式指定其 `size` 和 `offset` 属性。您可以按任意顺序编写这些属性。 * 空格和缩进无关紧要。 * 不支持诸如 `typedef struct { ... }` 或 `struct __declspec(...)` 之类不太常见的声明。唯一支持的声明是 `struct Name` 和 `class Name`。 2. 现在只需运行 `run.bat`。将会在同一目录下生成一个名为 `Output.txt` 的新文件,如下所示: ``` struct Character { int Handle; char* Name; char Padding1[0x5C]; float Health; char Padding2[0x84]; bool IsInvulnerable; char Padding3[0x5]; double Coords[3]; char Padding4[0x10]; Vehicle* CurrentVehicle; }; ``` 3. ??? 4. 盈利!!1 **注意:** 您可以通过改为运行 `python main.py path/to/input.txt path/to/output.txt` 来根据需要配置输入和输出文件。 ## 💬 反馈与贡献 欢迎随时[报告 Bug 并请求新功能](https://github.com/Wirmaple73/Restruct/issues)。也非常欢迎您的贡献。如果您觉得这个脚本很酷,请随手点个 star!
标签:C/C++, Python, SOC Prime, 事务性I/O, 云资产清单, 代码生成, 开发工具, 无后门, 渗透测试工具, 结构体对齐, 逆向工具, 逆向工程