vineeththomasalex/dll-visualizer
GitHub: vineeththomasalex/dll-visualizer
一个在浏览器中本地解析并可视化 Windows PE 二进制文件内存布局、头部字段、导入导出表、PDB 符号和反汇编的纯前端工具。
Stars: 0 | Forks: 0
# DLL 可视化工具
**[在线体验 →](https://vineeththomasalex.github.io/dll-visualizer/)**
透视 Windows 二进制文件。拖入 `.dll`、`.exe` 或 `.sys` 文件,即可获得 Windows 加载器将在内存中构建的精确布局——颜色编码的节区、每一个头部字段的详细解释、按实际用途分组的导入与导出表、资源树以及实时的反汇编。
所有操作均在你的浏览器中本地完成。无上传,无服务器,无遥测。

## 功能介绍
**内存映射** —— 将映像渲染为一个按比例缩放的整体区块。每个节区都是一个根据其虚拟占用空间缩放的条带,数据目录表则作为条纹覆盖层绘制在其上。在*虚拟*布局(加载器构建的结构)和*文件*布局(磁盘上的实际结构)之间切换,以准确查看对齐填充、Authenticode 签名以及任何附加数据所在的具体位置。支持按内容、页面权限或字节熵重新着色,并可筛选出仅可执行、可写、可丢弃或零填充的区域。
**头部解析** —— 详尽解析 DOS 头、Rich 头、COFF 头、可选头、全部 16 个数据目录、加载配置、调试目录、TLS 以及证书表的每一个字段,提供文件偏移量、解码后的值,以及关于加载器如何处理该字段的通俗说明。特征字段和 DllCharacteristics 会逐位进行拆解说明。
**导入与导出** —— 导入表按模块*和*用途(文件 I/O、注册表、网络、加密、进程控制、ETW、NT 原生 API 等)分组,并为每个函数提供 IAT 插槽位置。导出表显示序号、RVA 以及任何转发字符串。延迟加载的模块会被特别标记出来。
**资源** —— 完整的三级“类型 → 名称 → 语言”树,以及一个经过正确解析的 `VS_VERSIONINFO` 块。
**符号** —— 拖入匹配的 `.pdb` 文件,应用会在浏览器中直接解析 MSF 容器、DBI 流和公共符号记录,然后将 PDB 的 GUID 和 Age 与映像的调试目录进行核对,让你确信这些符号确实属于当前版本。同时也支持 Linker `.map` 文件。
**反汇编** —— Capstone 被编译为 WebAssembly 并进行懒加载,从入口点、TLS 回调、导出表以及你的 PDB 符号处开始提取执行。分支目标会标注匹配的名称,并且支持点击以跳转跟踪。
**安全态势** —— 解析 ASLR、DEP、CFG、SafeSEH、高熵 VA、签名以及 W+X 检测,并特别指出存在风险的组合,而不仅仅是列出它们。
**十六进制视图** —— 可视化的十六进制查看器,其偏移量颜色与文件布局映射保持一致,让你始终清楚自己当前处于哪个数据结构中。
## 支持的格式
支持 x86、x64、ARM 和 ARM64 架构的 PE32 和 PE32+ 格式,包括 .NET 程序集(解码 COR20 头和 CLI 元数据流)。支持对 x86、x64、ARM 和 ARM64 映像进行反汇编。
## 本地运行
```
npm install
npm run dev
```
然后打开 http://localhost:5173/dll-visualizer/。
```
npm run build # type-check + production build into dist/
npm run lint # eslint
npm test # playwright end-to-end tests
npm run deploy # publish dist/ to the gh-pages branch
```
### 测试夹具
`npm run fixtures` 会使用 MSVC 构建一个小型原生 DLL(包含其 PDB 和 MAP 文件),并将一个系统 DLL 复制到 `tests/fixtures/` 目录中。该文件夹已被 git 忽略 —— 不会向此代码库提交任何 Windows 系统二进制文件。如果缺少夹具,端到端测试将自动跳过。
## 工作原理
| 模块 | 位置 |
| --- | --- |
| PE / PE32+ 解析器 | `src/pe/parser.ts` |
| 熵分析 | `src/pe/entropy.ts` |
| PDB (MSF) + MAP 读取器 | `src/symbols/pdb.ts` |
| Capstone 封装器 | `src/disasm/disasm.ts` |
| 应用中显示的说明 | `src/knowledge/glossary.ts` |
PE 解析器是完全根据 PE/COFF 规范从零开始编写的 —— 不依赖任何二进制解析库。整个解析过程均采用防御性编程:每个目录都在一个保护块内进行解析,该保护块会记录警告而不是抛出异常,因此即使是截断的或故意篡改的畸形映像,也会尽可能多地渲染出其内容。
## 技术栈
React 19 · TypeScript · Vite · [capstone-wasm](https://github.com/CzBiX/disasm-web) · Playwright
## 许可证
MIT
标签:Mutation, PE文件解析, Wayback Machine, 云安全监控, 云资产清单, 反汇编, 可视化, 浏览器端, 特征检测, 自动化攻击, 逆向工程, 静态分析