hankmorgan/UWReverseEngineering
GitHub: hankmorgan/UWReverseEngineering
该项目提供了用于逆向《地下创世纪》1代和2代游戏的 IDA Pro 数据库、反汇编代码及游戏机制文档。
Stars: 24 | Forks: 2
# UWReverseEngineering
用于 UW1/2 逆向工程工作的代码仓库
## 简介
UW.idb 和 UW2.idb 是 [IDA Pro 5 (Free)](https://www.scummvm.org/news/20180331/) 的反编译数据库文件,针对 UW.exe 和 UW2.exe,其中部分代码已识别。
请参阅 ida.asm 获取反汇编的文本版本。
游戏机制正在 `Guide to the Ultima Underworlds.md` 中进行文档化。
## 跟随说明
段使用以下约定命名:
1. 代码段 `segXXX_nnnn`,其中 `XXX` 是代码的原始段号,`nnnn` 是 Dosbox 调试器加载数据的偏移量。
2. 覆盖段,标记为 `ovrXXXX`,在运行时动态加载到不同的偏移量,未重命名。进入这些覆盖段的唯一方法是在正常段中中断,或者在该覆盖段正在修改的内存地址处设置断点。
3. 数据段标记为 `XXXX_dseg_nnn`,其中 `XXXX` 是描述,`nnn` 是该特定数据段中数据的偏移量。使用此配置,Dosbox 通常将主数据段加载到基址 `67d6h`。
例如,如果你想为 `seg040_352B_1AC6` 设置断点,你必须使用命令 `bp 352B:1AC6`。使用带有[此配置文件](https://github.com/user-attachments/files/15995208/dosbox-0.74-debug.-.Copy.txt) 的 Dosbox [0.74-3-debug](https://github.com/user-attachments/files/15995150/dosbox-74-3-debug.zip) 以获得可复现的偏移量。
## 其他说明
有时,当单步进入函数时,代码会切换到 INT21,你不应该单步跳过,而应该单步进入,直到它返回到该函数。
研究文件时要查看的关键变量:
* `CurrObj_dseg_2256` 是当前正在处理的游戏对象。
* `PlayerObject_dseg_828E` 是玩家对象。
IDA Pro 5 在渲染字体时可能会出现问题,导致程序几乎无法使用。在设置中更改字体可以修复此问题。
标签:Dosbox, DOS游戏, IDA Pro, JARM, Ultima Underworld, Wayback Machine, x86汇编, 二进制分析, 云安全运维, 云资产清单, 内存分析, 反汇编, 可执行文件分析, 安全报告生成, 快速连接, 数据库文件, 汇编语言, 游戏分析, 游戏开发, 游戏机制研究, 游戏逆向, 漏洞分析, 自定义密码套件, 调试技术, 路径探测, 逆向工程, 防御加固