Elias010-01/win103-byteexact

GitHub: Elias010-01/win103-byteexact

将 Windows 1.03 全部 92 个可执行文件逆向为可重新编译的汇编源码,经 1985 年原版工具链验证达到逐字节精确一致。

Stars: 3 | Forks: 0

# win103-byteexact ![Elias 的 Windows 启动画面在 DOSBox-X 中运行](https://static.pigsec.cn/wp-content/uploads/repos/cas/1d/1d9c7aeeb04fe05937a8572cd57655e951f998c9173d69b26b5d971d65cac4a7.png) *`elias-windows` mod 正在 DOSBox-X 中启动。修改后的启动画面,保留了原始的 Microsoft logo,底部有诚恳的免责声明行。这是 mod 系统通过重新构建的二进制文件生成的结果。(详情请见 [`screenshots/`](screenshots/)。)* 🇬🇧 [English](#english) · 🇪🇸 [Español](#español) · ⚖️ [法律声明](LEGAL.md) · 📜 [历史](STORY.md) · 🙏 [致谢](CREDITS.md) ## 已验证的成就 | 指标 | 结果 | |---|---| | **从源码重新构建并逐字节验证一致的软盘集二进制文件总数** | **92 / 92** | | ↳ NE `.EXE` / `.DRV` 模块 (KERNEL, GDI, USER, 驱动程序, 应用, …) | 69 | | ↳ `.FON` 位图字体模块 (HELVA…D, COURA…D, TMSRA…D, 等) | 18 | | ↳ Loader + DOS 兼容性 (`WIN.COM`, `WIN100.BIN`, `WIN100.OVL`, `WINOLDAP.MOD`, `WINOLDAP.GRB`) | 5 | | 通过 MASM 4.00 重新汇编验证字节完全一致的函数 | **8,555 / 8,555** | | ↳ 其中使用 `db` 回退的部分 (Capstone 无法解码该指令) | **164 (1.9 %)** | | 已验证的可执行代码字节 | **986,658 / 986,658 (100%)** | | 达到 100% 函数级覆盖率的含代码 NE 模块 | **68 / 68** | | 通过 MASM 4.00 验证的额外代码二进制文件 (flat-COM / 单段 NE) | **3 / 3** (`WIN.COM`, `WIN100.BIN`, `WINOLDAP.MOD`) | | 工具链 | DOSBox-X 下运行的原版 Microsoft **MASM 4.00** + **LINK 3.51** | | **逆向工程的 Splash logo 位图** (v13.1) | `WIN.COM @ 0x099D-0x1308` — 536×36 px CGA mode 6, 交叉存储体 (bank-interleaved) — 可通过 `bootstrap/blibbet_mod.py` **完全编辑** | | **端到端 mod SDK** (v13.1) | 在 MS Paint 中编辑 `.bmp` → 补丁 IMG → 使用**一条** Python 命令 (`bootstrap/launch_elias_win103.py`) 运行 DOSBox-X | 原始 Windows 1.03 软盘上发布的每一个可执行代码字节,均已验证与真正的 1985 年版 Microsoft MASM 4.00 汇编器输出字节完全一致。两个互补的验证器在 DOSBox-X 下运行原始工具链,并将汇编输出与正式发布的二进制文件进行对比: - `bootstrap/analyze/pass24_batch_masm_verify.py` — 针对 68 个包含代码的 NE 模块进行函数级验证 (8,555 个函数, 986,658 字节)。 - `bootstrap/analyze/verify_flat_com_via_masm.py` — 针对 boot loader `WIN.COM` (4,873 B), `WIN100.BIN` (31,103 B 代码段) 和 `WINOLDAP.MOD` (16,310 + 1,200 B 段) 进行段级验证。配合 `--with-link`,它还会运行 LINK 3.51 + `bootstrap/py_exe2bin.py` (纯 Python 实现的 `EXE2BIN.EXE` 等价物),以展示完整的历史 `MASM → LINK → EXE2BIN → COM` 链条。 - `bootstrap/disasm_to_masm.py` — 迭代地将 `WIN.COM` 的 Capstone 反汇编结果转换为带有**真实指令** (89 % 真实助记符, 11 % `db` 回退) 和**逆向工程的语义标签** (`win_main`, `msg_dos_prompts`, `msg_when_ready`, …) 的 MASM 4.00 源码,并能通过原始工具链逐字节精确重新汇编。自适应批处理回退在 3 次迭代 (~30 秒) 内收敛。输出:`src/WIN/seg1_real.asm`。 - `bootstrap/validate_py_exe2bin.py` — 使用开源的 MS-DOS 2.0 源码 (github.com/microsoft/MS-DOS) 和我们自己的 MASM 4.0 + LINK 3.51 构建 **真正的 Microsoft `EXE2BIN.EXE`** (1,649 B),然后在一个测试 EXE 上 (5 个合成文件 + `WINC.EXE`) 运行它和 `py_exe2bin.exe_to_com()`;所有 6 个测试都产生了字节完全一致的输出,从而针对 1983 年的原版实用程序验证了我们的纯 Python 实现。 此外,**软盘集上的每一个其他二进制文件** — boot loader、字体资源文件、DOS 应用兼容性模块、图形资源 — 都被引入了相同的源码管线 (`src//`),并且 `bootstrap/build_from_source.py` 将它们全部 92 个文件重新构建得与原版逐字节一致。 ## 快速开始 ### 前置条件 - **操作系统**: Windows 10/11 且带有 [WSL2](https://learn.microsoft.com/en-us/windows/wsl/install) (推荐使用 Ubuntu),或任何 Linux 发行版,或 macOS - **Python**: 3.10 或更高版本 - **工具**: `mtools` (用于读/写软盘镜像), `git` - **用于测试结果**: [DOSBox-X](https://dosbox-x.com/) ### 1. 克隆仓库 ``` git clone https://github.com/Elias010-01/win103-byteexact.git cd win103-byteexact ``` ### 2. 安装 Python 依赖 ``` pip install -r requirements.txt ``` 这会安装 `capstone` (反汇编器) 和 `keystone-engine` (汇编器,仅 在您需要修改指令时用到)。 ### 3. 准备您自己的 Windows 1.03 二进制文件 Windows 1.03 发行于**多张 5.25 英寸软盘** (通常是 4 张磁盘:SETUP, BUILD, UTILITY 和 FONT)。将所有磁盘中的**每一个二进制文件**复制到 `original/` 中: ``` original/ ├── KERNEL.EXE # 69 NE modules: kernel, GDI, USER, drivers, apps ├── GDI.EXE ├── USER.EXE ├── WIN.COM # boot loader (flat .COM) ├── WIN100.BIN # second-stage loader (NE) ├── WIN100.OVL # real-mode loader/overlay (extracted by SETUP) ├── HELVA.FON # 18 .FON bitmap font modules ├── TMSRA.FON ├── ... ├── WINOLDAP.MOD # DOS-app compatibility module (NE) ├── WINOLDAP.GRB # DOS-app graphics resource (flat blob) └── ... # 92 files total across the disk set ``` `bootstrap/survey_pipeline_gap.py` 会审查 `original/` 中的内容,并 报告哪些文件 (如果有的话) 尚未整合到 `src/` 中。全新解压后, 预期的输出应为 **92 IN PIPELINE / 0 PARTIAL / 0 OUT OF PIPELINE**。 如果您有原始磁盘的 `.IMG` / `.IMA` 镜像文件,请使用 `mtools` 解压: ``` for img in disk1.img disk2.img disk3.img disk4.img; do for ext in EXE DRV COM FON BIN OVL MOD GRB; do mcopy -i "$img" "::*.${ext}" original/ 2>/dev/null || true done done ``` ### 4. 重新生成人类可读的汇编源码 ``` python bootstrap/extract_segments.py # split NE binaries into segments python bootstrap/decompile_segment.py # disassemble to human-readable .asm ``` 您现在拥有了 `src//seg*.asm` — 这是可编辑的汇编代码,原始 字节已作为注释保留。 ### 5. 重新构建逐字节精确的二进制文件 ``` python bootstrap/build_from_source.py ``` 这将重新生成 **所有 92 个** 与原始文件逐字节完全一致的二进制文件 (69 个 NE `.EXE`/`.DRV`, 18 个 `.FON` 字体, `WIN.COM`, `WIN100.BIN`, `WIN100.OVL`, `WINOLDAP.MOD`, `WINOLDAP.GRB`)。输出会存放在 `built/` 中。脚本会报告 每个模块的 SHA-256 匹配情况,并以 `=== 92/92 modulos byte-exact desde fuente ===` 结束。 ### 6. (可选) 生成语义文档 ``` python bootstrap/analyze/pass1_patterns.py python bootstrap/analyze/pass1b_discover.py python bootstrap/analyze/pass2_callgraph.py python bootstrap/analyze/pass3_describe.py python bootstrap/analyze/pass4_annotate.py python bootstrap/analyze/pass5_index.py python bootstrap/analyze/pass6_visualize.py python bootstrap/analyze/pass7_enrich_deps.py ``` 这会生成包含 75+ 篇 Markdown 文档的 `docs/analysis/` 目录 (每个模块一篇,外加索引),以及位于 `docs/analysis/callgraph.html` 的交互式 HTML 调用图。 ### 7. (可选) 运行逐字节精确验证管线 这是产生 **8,555 / 8,555 字节完全一致匹配** 的步骤。它需要 DOSBox-X 以及安装在 `vendor/masm400/` 下的原版 Microsoft MASM 4.00。验证器会使用 1985 年的原版工具链重新汇编每一个发现的函数,并与发布版的字节进行对比。 ``` # Discovery passes: 构建候选函数集 python bootstrap/analyze/pass23_find_ministubs.py python bootstrap/analyze/pass25_universal_extract.py # NE exports python bootstrap/analyze/pass27_internal_funcs.py # internal call targets python bootstrap/analyze/pass30_full_segment.py # full-segment candidates # 验证器本身(并行 + 缓存,首次运行需要数小时) python bootstrap/analyze/pass24_batch_masm_verify.py # 覆盖率和最终报告 python bootstrap/analyze/pass26_module_coverage.py python bootstrap/analyze/pass28_final_report.py ``` 完成后,`state/analyze/pass28/REPORT.md` 会显示每个模块及总体的 字节覆盖率 — 预期结果为 **所有 68 个包含代码的模块均达到 100 %**, 且全部 986,658 个代码字节均已验证。 ### 8. (可选) 应用一个 mod ``` python bootstrap/mod_system.py list # list available mods python bootstrap/mod_system.py apply elias-windows # apply a mod python bootstrap/mod_system.py revert # undo ``` 示例 `elias-windows` mod (见上面的截图) 替换了启动 文本、版本标签和版权信息。修改后的二进制文件会存放在 `mods//built/` 中。 ### 9. (可选) 在 DOSBox-X 中启动它 将生成的二进制文件复制到 Windows 1.03 软盘镜像中并运行: ``` bash bootstrap/deploy-to-img.sh # copies built/ into the floppy image # 然后启动 DOSBox-X,并将生成的 .img 挂载为 A: ``` ### 10. (可选, **v13.1 新增**) 编辑启动画面 logo 启动画面上巨大的 "MICROSOFT" Blibbet logo 是一个存储在 `WIN.COM` 偏移量 `0x099D` 处的 CGA-mode-6 1bpp 位图 (文件最后 2412 字节),采用 CGA 交叉存储体布局 (18 偶数行 + 18 奇数行, 对应 `B800:0000` / `B800:2000` VRAM)。 完整的 **Logo Mod SDK** 让您可以使用一条命令在 MS Paint 中编辑它,并输出在 DOSBox-X 中运行的结果: ``` # 1. 从你的合法 WIN.COM 中导出可编辑的 1bpp BMP (536x36) python bootstrap/blibbet_mod.py export # -> mod/blibbet/blibbet_logo.bmp(在 MS Paint 中打开,编辑,Ctrl+S) # 2. 往返健全性检查(导出+重新导入 == byte-exact 原件) python bootstrap/blibbet_mod.py roundtrip # 3. 端到端构建与启动: # 使用 smart_build 重新构建 MSDOS.EXE,patch WIN.COM(你的 logo + # 文本修改),patch WIN100.OVL,通过纯 Python 将所有 3 个文件注入 FAT12 映像 # (不需要 mtools),启动 DOSBox-X python bootstrap/launch_elias_win103.py ``` 关于发现过程及格式的完整技术说明:[`docs/BLIBBET_LOGO.md`](docs/BLIBBET_LOGO.md)。 SDK 工作流及 Paint 编辑参考:[`mod/blibbet/README.md`](mod/blibbet/README.md)。 ## 快速开始 (Español) ### 要求 - **SO**: Windows 10/11 con WSL2 (Ubuntu), Linux, o macOS - **Python** 3.10+ - **Herramientas**: `mtools`, `git` - **Para probar el resultado**: [DOSBox-X](https://dosbox-x.com/) ### 步骤 ``` # 1. 克隆 git clone https://github.com/Elias010-01/win103-byteexact.git cd win103-byteexact # 2. Python 依赖项 (capstone + keystone) pip install -r requirements.txt # 3. 在 original/ 目录中提供你的合法二进制文件 # (KERNEL.EXE, GDI.EXE, USER.EXE, WIN.COM, ... 69 个文件) # 4. 重新生成可编辑的 assembly 源代码 python bootstrap/extract_segments.py python bootstrap/decompile_segment.py # 5. 重新构建 byte-exact 二进制文件 (92/92) python bootstrap/build_from_source.py # 默认通过 Python 解析器(快速)。若要使用 # 真实的 MASM 4.00 进行严格验证:python bootstrap/build_from_source.py --mode=masm # 6. (可选)语义化文档记录(passes 1–7) python bootstrap/analyze/pass1_patterns.py python bootstrap/analyze/pass1b_discover.py python bootstrap/analyze/pass2_callgraph.py python bootstrap/analyze/pass3_describe.py python bootstrap/analyze/pass4_annotate.py python bootstrap/analyze/pass5_index.py python bootstrap/analyze/pass6_visualize.py python bootstrap/analyze/pass7_enrich_deps.py # 7. (可选)使用 MASM 4.00 逐个函数进行 byte-exact 验证 # (passes 23–30,需要在 vendor/ 目录中安装 DOSBox-X + MASM 4.00) python bootstrap/analyze/pass23_find_ministubs.py # descubrir funciones python bootstrap/analyze/pass25_universal_extract.py # exports NE python bootstrap/analyze/pass27_internal_funcs.py # funciones internas python bootstrap/analyze/pass30_full_segment.py # segmentos completos python bootstrap/analyze/pass24_batch_masm_verify.py # verificador principal python bootstrap/analyze/pass26_module_coverage.py # cobertura por módulo python bootstrap/analyze/pass28_final_report.py # reporte final # 8. (可选)应用示例 mod python bootstrap/mod_system.py apply elias-windows ``` Más detalles más abajo en [English](#english) / [Español](#español). ## English ### 这是什么 这个仓库包含了**完整的管线**,用于获取 Microsoft Windows 1.03 (1985, 分布在多张软盘上) 的**全部 92 个原始 二进制文件** — 包含 69 个 NE `.EXE`/`.DRV` 模块、18 个 `.FON` 位图字体、boot loader `WIN.COM`、二级 loader 及 overlay `WIN100.BIN`/`WIN100.OVL`, 以及 DOS 应用兼容组件 `WINOLDAP.MOD`/`WINOLDAP.GRB` — 并从 **人类可读、可编辑的汇编源码**中将它们每一个重新生成**逐字节完全一致**的文件,且每一个函数都 自动生成了文档。 它还包含一个 **mod 系统**,允许您生成修改版的 Windows 1.03 (更改启动画面、菜单标签、版本号等),并干净利落地 应用/还原这些更改。 这些二进制文件本身 (`.EXE` / `.DRV`) 并**没有**在这个 仓库中重新分发 — 它们是 Microsoft Corporation 的财产。您需要将自己合法的 Windows 1.03 副本放入 `original/` 中,管线会从那里重新生成一切。 ### 您将获得什么 - **92 / 92 二进制文件**已从 `src//` 重新构建并与原版逐字节一致 (69 个 NE `.EXE`/`.DRV` + 18 个 `.FON` + 5 个 loader/兼容性模块: `WIN.COM`, `WIN100.BIN`, `WIN100.OVL`, `WINOLDAP.MOD`, `WINOLDAP.GRB`)。默认通过 Python 解析器 (`parse_db_bytes`);使用 `--mode=masm` 可启用 MASM 4.00 路径。 - **8,555 / 8,555 函数**通过在 DOSBox-X 下使用 MASM 4.00 重新汇编验证字节完全一致 (其中 164 个使用 `db` 回退,因为 Capstone 无法 解码原始指令,但 MASM 仍能产生逐字节精确的输出) - **986,658 / 986,658 代码字节**已验证 — 占据软盘上发布的所有可执行代码的 100 % - **68 / 68 个包含代码的模块**达到了 100% 的级字节覆盖率 - **符号调用图**包含 5,104 条模块内边和 5,143 条模块间边 - 所有模块依赖关系的**交互式 HTML 可视化** - 带有 `apply` / `revert` 功能及示例 mod 的**Mod 系统** - **75+ Markdown 文档**自动生成,每个模块一篇,外加索引 - `bootstrap/analyze/` 下的**可复现验证管线** (阶段 1–7 用于生成文档,阶段 23–30 用于逐字节精确验证) ### 诚恳的事实 - **基础重构大约在一夜之间完成** (~24 小时的专注 工作),随后使用原版 1985 年 Microsoft MASM 4.00 工具链进行了广泛的验证 - **作者**: Elias,16 岁 - **AI 辅助**: 程度很高。管线脚本、解析器、启发式算法、 文档生成器以及整体架构均是与 大型语言模型合作编写的。战略决策、 实验性的死胡同、mod 设计和验证均由人类主导。 - **原创性**: *管线*属于原创作品。*Windows 1.03 二进制文件* 属于 Microsoft。*函数名*来自公开的 NE 导出表。 *函数描述*是启发式的,由我们的脚本生成 — 它们是尽力而为的结果,并非权威文档。 - **状态**: 这是研究/教育性质的工作。作者是一名 探索逆向工程的未成年人。无商业意图。对 Microsoft IP 不主张任何所有权。 ### 为什么这很重要 到目前为止,还没有任何公开项目能够制作出完整、可编辑且可重新编译的 Windows 1.x 版本。最接近的尝试 (`starfrost013/modern-personality-windows`, 见 [CREDITS](CREDITS.md)) 已处于搁置状态,并明确表示“目前尚无法重新构建”。 针对老旧主机游戏 (SM64, Zelda OOT, Pokemon Red) 存在反编译社区, 但对于早期的 Microsoft Windows 却没有类似的东西。 这个项目并不宣称是“反编译为 C 代码” — Windows 1.03 本身 主要是用汇编语言编写的。这是一个更强有力且更精确的声明: **微软在 1985 年原始软盘上发布的每一字节的执行代码, 都已验证与本仓库源码通过正版 微软 MASM 4.00 汇编器生成的输出字节完全一致**,期间 不信任任何中间步骤。1985 年的原版工具链 在 DOSBox-X 下运行,其 `.LST` 列表文件被解析为这 986,658 个代码字节中每一个的权威真实来源 (ground truth)。 该方法:**反汇编为可读的汇编代码,并在注释中保留原始字节 作为权威依据**,然后通过使用原始 Microsoft 工具链重新汇编 并逐字节比较来证明正确性。人类 (和 AI) 可以阅读、记录和修改汇编代码,而验证器将捕获 任何单字节粒度上的差异。 ## Español ### 这是什么 Este repositorio contiene el **pipeline completo** para coger **los 92 ficheros originales** de Microsoft Windows 1.03 (1985, distribuidos en varios disquetes) — los 69 módulos NE `.EXE`/`.DRV`, 18 fuentes `.FON`, el loader `WIN.COM`, el loader de segunda etapa y overlay `WIN100.BIN`/`WIN100.OVL`, y el par de compatibilidad DOS `WINOLDAP.MOD`/`WINOLDAP.GRB` — y regenerar cada uno **byte-exacto** desde **código fuente assembly humano-legible y editable**, con cada función documentada automáticamente. También incluye un **sistema de mods** que permite producir versiones modificadas de Windows 1.03 (cambiar splash screen, etiquetas de menús, número de versión, etc.) y aplicar / revertir esos cambios limpiamente. Los binarios `.EXE` / `.DRV` **no se redistribuyen** en este repo — son propiedad de Microsoft Corporation. Tú aportas tu copia legal de Windows 1.03 a `original/`, y el pipeline regenera todo lo demás. ### 你有什么 - **92 / 92 binarios** reconstruidos byte-idénticos a los originales desde `src//` (69 NE `.EXE`/`.DRV` + 18 `.FON` + 5 loader/compat: `WIN.COM`, `WIN100.BIN`, `WIN100.OVL`, `WINOLDAP.MOD`, `WINOLDAP.GRB`). Por defecto via parser Python (`parse_db_bytes`); path MASM 4.00 disponible con `--mode=masm`. - **8.555 / 8.555 funciones** verificadas byte-idénticas con reensamblado MASM 4.00 bajo DOSBox-X (164 usan fallback `db` porque Capstone no pudo decodificar la instrucción original, pero MASM sigue produciendo output byte-exacto) - **986.658 / 986.658 bytes de código** verificados — el 100 % del código ejecutable que viajó en los disquetes - **68 / 68 módulos con código** al 100 % de cobertura byte-exacta a nivel de función - **Call graph simbólico** con 5.104 aristas intra-módulo + 5.143 inter-módulo - **Visualización HTML interactiva** de todas las dependencias entre módulos - **Sistema de mods** con `apply` / `revert` y mods de ejemplo - **75+ documentos Markdown** auto-generados, uno por módulo + índices - **Pipeline de verificación reproducible** en `bootstrap/analyze/` (pasadas 1–7 para documentación, 23–30 para verificación byte-exacta) ### 诚实的事实 - **Reconstrucción base en aproximadamente una noche** (~24 horas de trabajo enfocado), seguida de verificación extendida con el toolchain original Microsoft MASM 4.00 de 1985 - **Autor**: Elías, 16 años - **Ayuda de IA**: intensa. Los scripts del pipeline, parsers, heurísticas, generadores de documentación y arquitectura general fueron escritos en colaboración con LLMs. Las decisiones estratégicas, callejones sin salida experimentales, diseño de mods y verificación fueron míos. - **Originalidad**: el *pipeline* es trabajo original. Los *binarios de Windows 1.03* son de Microsoft. Los *nombres de funciones* vienen de las tablas de exports públicas del formato NE. Las *descripciones de funciones* son heurísticas, generadas por nuestros scripts — son best-effort, no documentación autoritativa. - **Estado**: trabajo de investigación / educativo. El autor es menor de edad explorando ingeniería inversa. Sin intención comercial. Sin reclamo alguno de propiedad sobre IP de Microsoft. ### 为什么重要 Hasta ahora ningún proyecto público había producido una forma completa editable + recompilable de Windows 1.x. El intento más cercano (`starfrost013/modern-personality-windows`, ver [CREDITS](CREDITS.md)) está en pausa y explícitamente dice "not rebuildable yet". Existen comunidades de decomp para juegos antiguos (SM64, Zelda OOT, Pokémon Red), pero no había equivalente para Microsoft Windows temprano. Este proyecto no pretende ser una "decompilación a C" — Windows 1.03 fue escrito mayormente en assembly. Lo que reclamamos es algo más fuerte y más preciso: **cada uno de los bytes de código ejecutable que Microsoft entregó en los disquetes originales de 1985 ha sido verificado byte-idéntico a lo que produce el ensamblador genuino Microsoft MASM 4.00 desde el source de este repo**, sin confianza en ningún paso intermedio. El toolchain original de 1985 corre bajo DOSBox-X y sus `.LST` se parsean como ground truth autoritativo para cada uno de los 986.658 bytes. El enfoque: **desensamblar a assembly legible con los bytes raw preservados como comentarios autoritativos**, y luego probar la corrección reensamblando con el toolchain original de Microsoft y comparando byte por byte. Humanos (y la IA) pueden leer, documentar y modificar el assembly, y el verificador caza cualquier divergencia con granularidad de un solo byte. ## 快速开始 ### 1. 提供你的 Windows 1.03 二进制文件 Coloca **los 92 binarios** originales en `original/` (todos los `.EXE`, `.DRV`, `.FON`, `WIN.COM`, `WIN100.BIN`, `WIN100.OVL`, `WINOLDAP.MOD`, `WINOLDAP.GRB` del juego de disquetes): ``` original/ ├── KERNEL.EXE ├── GDI.EXE ├── USER.EXE ├── PAINT.EXE ├── WIN.COM ├── WIN100.BIN ├── WIN100.OVL ├── HELVA.FON ├── ... (92 archivos) ``` ### 2. 重新生成源代码 ``` python bootstrap/extract_segments.py # extrae segmentos NE python bootstrap/decompile_segment.py # desensambla a .asm legible python bootstrap/build_from_source.py # reconstruye .EXE byte-exact ``` Resultado: **92/92 binarios** en `built/` byte-idénticos a los de `original/`. ### 3. 语义化文档记录 ``` python bootstrap/analyze/pass1_patterns.py python bootstrap/analyze/pass1b_discover.py python bootstrap/analyze/pass2_callgraph.py python bootstrap/analyze/pass3_describe.py python bootstrap/analyze/pass4_annotate.py python bootstrap/analyze/pass5_index.py python bootstrap/analyze/pass6_visualize.py python bootstrap/analyze/pass7_enrich_deps.py ``` Resultado: `docs/analysis/` con 75+ documentos Markdown + `callgraph.html` interactivo. ### 4. 使用 MASM 4.00 进行 byte-exact 验证 Esta es la fase que produce el **8.555 / 8.555 byte-idéntico**. Requiere DOSBox-X + Microsoft MASM 4.00 instalado en `vendor/masm400/`. ``` python bootstrap/analyze/pass23_find_ministubs.py # descubrir funciones python bootstrap/analyze/pass25_universal_extract.py # exports NE python bootstrap/analyze/pass27_internal_funcs.py # funciones internas python bootstrap/analyze/pass30_full_segment.py # segmentos completos python bootstrap/analyze/pass24_batch_masm_verify.py # verificador principal python bootstrap/analyze/pass26_module_coverage.py # cobertura por módulo python bootstrap/analyze/pass28_final_report.py # reporte final ``` Resultado: `state/analyze/pass28/REPORT.md` con **100 % de cobertura byte-exacta** sobre los 986.658 bytes de código y los 68 módulos con código. ### 5. 应用一个 mod ``` python bootstrap/mod_system.py list # lista mods python bootstrap/mod_system.py apply elias-windows # aplica mod python bootstrap/mod_system.py revert # revierte ``` ## 仓库结构 ``` win103-byteexact/ ├── bootstrap/ Scripts del pipeline (Python + bash) │ └── analyze/ Pipeline de analisis semantico (7 passes) ├── src/ .asm humano-legibles con bytes en comentarios │ ├── KERNEL/seg1.asm KERNEL.def layout.json │ ├── GDI/ ... 69 NE .EXE/.DRV ... │ ├── USER/ │ ├── HELVA/ ... 18 .FON fonts ... │ ├── WIN/ WIN.COM (flat .COM loader) │ ├── WIN100/ WIN100.BIN (NE) │ ├── WIN100_OVL/ WIN100.OVL (flat overlay) │ ├── WINOLDAP/ WINOLDAP.MOD (NE DOS-app compat) │ └── WINOLDAP_GRB/ WINOLDAP.GRB (graphics resource) ├── mods/ Mods del usuario │ ├── elias-windows/ Mi mod showcase (splash + menus + about) │ └── win104/ Ejemplo: cambia version 1.03 -> 1.04 ├── docs/analysis/ Documentacion auto-generada (Markdown + HTML) │ ├── INDEX.md Portada │ ├── callgraph.html Grafo interactivo │ └── .md 69 docs, uno por modulo ├── README.md Este archivo ├── STORY.md La historia del proyecto (bilingue) ├── CREDITS.md Reconocimientos ├── LEGAL.md Disclaimer legal └── LICENSE MIT para nuestros scripts ``` ## 免责声明 这是一个个人的研究/教育项目。Microsoft Windows 1.03 是 Microsoft Corporation 的注册商标。本项目未与 Microsoft 有关联,也未获得其认可或赞助。 函数描述是通过启发式方法生成的,可能不正确。 这不是权威文档。 完整的法律声明请参见 [LEGAL.md](LEGAL.md)。 ## C-Port 准备状态 (v16.3) 所有 7 个分析阶段已完成: | 阶段 | 状态 | 详情 | |-------|--------|---------| | 函数边界 | 完成 | 92 个模块中的 3,954 个函数 | | DB 分类 | 完成 | 114,431 行 db 已分类 | | API/INT 文档 | 完成 | 21,198 个调用已记录 | | 控制流分析 | 完成 | 7,624 个循环, 9,320 个 if/else | | 结构映射 | 完成 | 104,001 次 BP 相对访问 | | 模块文档 | 完成 | 92 份模块报告 + 92 个 README | | C 脚手架 | 完成 | 92/92 个模块带有 C 存根 | | 构建验证 | 完成 | 92/92 逐字节精确, 50/50 测试 | ### DB 到助记符的转换 | 指标 | 之前 | 之后 | 增量 | |--------|--------|-------|-------| | DB 行数 | 114,431 | 92,745 | -21,686 | | 助记符覆盖率 | 79.5% | 83.4% | +3.9% | **关键发现**:MASM 4.0 使用了现代汇编器 (NASM, Keystone) 无法重现的替代 x86 opcode。示例:在 MASM 中 `mov bp, sp` = `8B EC`,而在 NASM 中为 `89 E5`。剩余的 92,745 行 db 需要手动处理或使用兼容 MASM 4.0 的汇编器。详见 `docs/analysis/DB_CONVERSION_STATUS.md`。 ### DB 行数明细 | 类别 | 数量 | 百分比 | |----------|-------|------------| | CODE (MASM opcode 替代) | 92,745 | 81.1% | | PADDING | 5,949 | 5.2% | | DATA (字符串, 表格) | 1,498 | 1.3% | | UNKNOWN | 6,084 | 5.3% | | CONVERTED 转换为助记符 | 21,686 | 18.9% | ### 分析输出 - `docs/analysis/modules/*.md` - 92 份各模块报告 - `docs/analysis/MASTER_REPORT.md` - 全局摘要 - `docs/analysis/DB_CONVERSION_STATUS.md` - DB 转换分析 - `state/analyze/pass31/` 到 `pass34/` - 原始数据 - `c_decomp//.c` - 所有 92 个模块的 C 脚手架
标签:SOC Prime, Windows 1.03, 云资产清单, 历史软件, 安全报告生成, 开发工具, 开源重构, 汇编, 逆向工具, 逆向工程