yetmorecode/ghidra-lx-loader
GitHub: yetmorecode/ghidra-lx-loader
为 Ghidra 提供 LX/LE 可执行文件格式支持的加载扩展,实现对 OS/2、DOS4GW 及 VxD 等遗留二进制的逆向分析。
Stars: 78 | Forks: 13
# LX/LE 可执行文件格式的终极 Ghidra Loader
从[发布页面](https://github.com/yetmorecode/ghidra-lx-loader/releases)下载与您的 Ghidra 版本相匹配的 zip 文件,并通过 `File > Install extensions...` 进行安装
## 功能
* 支持多种格式的 LE/LX 文件:
* OS/2 LX 风格
* MSDOS DOS/16 LE 风格
* MSDOS DOS/4 LE 风格
* DOS32A sb.exe 解绑定的 LE/LX 风格
* Windows Virtual Device Driver (VxD)
* 完整的 page-map 和 fixup (重定位) 支持
* 带有注释的完全类型化的 executable headers(以及其他映像数据)
或者,您可以为每个文件单独指定各种选项:
* 手动覆盖 object 基地址和 segment selector(适合与调试器 / DOSBox 同步)
* 将各种映像数据映射到 overlay:
* 映射 MZ Header
* 映射 LX Header
* 映射 LX Loader Section
* 映射 LX Fixup Section(完全类型化!)
* 映射 LX Data Section(即未修改的 page 数据)
* 为内存中的每个 fixup 创建标签
* 为内存中的每个 page 起始处创建标签
* 记录 fixup 统计信息 / 记录单个 fixup 类型
## 测试环境
* F1 Manager Professional (F1.exe - DOS/4GW LE): https://www.mobygames.com/game/dos/f1-manager-professional
* The Elder Scrolls Redguard (RGFX.exe - DOS/4GW LE): https://en.wikipedia.org/wiki/The_Elder_Scrolls_Adventures:_Redguard
* X-Com: Apocalypse (UFO2P.EXE - DOS/16 LE 及解绑定的 LE 风格)
* 使用 Open Watcom 编译的各种文件 (DOS32A LE)
* 随机的 VxD 文件
## 额外信息



## 手动覆盖基地址和 segment selector
可以指示 loader 手动覆盖 executable 的 object 的基地址和 selector。我用这个功能是为了向 Ghidra 提供与在 dosbox debugger 中发现的相同的内存布局和 segment selector。作为回报,我可以使用在 Ghidra 中找到的相同地址,在 debugger 等工具中设置断点。
要覆盖基地址,只需在字段中输入以逗号分隔的十六进制值列表:
Loader 将相应地调整位置(以及 fixup!):

## 资源
* https://ghidra-sre.org/
* https://moddingwiki.shikadi.net/wiki/Linear_Executable_(LX/LE)_Format
* https://github.com/yetmorecode/dos32a/blob/master/src/dos32a/loader.asm
* https://github.com/open-watcom/open-watcom-v2/blob/master/bld/watcom/h/exeflat.h
## 反馈
如果您有任何反馈,请不要犹豫,直接提一个 issue。即使您在使用 loader 时没有遇到任何问题,我也很乐意听到您的使用感受 :)
标签:DOS4GW, Ghidra插件, JS文件枚举, LX/LE格式, OS/2, VxD, 云资产清单, 可执行文件解析, 域名枚举, 逆向工程