如何使用WinDiff浏览和对比Windows源代码中的符号和系统调用信息

关于windiff

WinDiff是一款功能强大的windows二进制源代码安全分析与调试工具,提供开源解决方案,通过Web界面实现其功能。它能够帮助研究人员在不同版本的操作系统中浏览和比较microsoft Windows二进制文件的符号、类型和系统调用信息。WinDiff的二进制源码数据库支持自动更新,以包含来自最新Windows更新升级(包括Insider Preview)的信息。该工具受到了ntdiff项目的启发,并整合了Winbindex项目的部分功能。

工具运行机制

WinDiff由两部分组成:一个用rust编写的CLI工具和一个用typescript和Next.JS框架开发的Web前端。CLI工具负责从配置文件中生成压缩的json数据库,并通过Winbindex查找和下载所需的PE和PDB文件。CLI工具的主要功能是在发布新版本的Windows时,能够轻松地更新和重新生成数据库。其代码位于项目的windiff_CLI目录中。

Web前端则以用户友好的方式展示CLI工具生成的数据。它遵循与ntdiff相同的设计理念,允许用户浏览从特定版本的Microsoft Windows的官方PE和PDB文件中提取的信息,并在不同版本之间进行比较。前端的代码位于项目的windiff_frontend目录中。

同时,该工具还设置了一个gitHub Action计划任务,每天从Winbindex获取新的更新数据,并更新用于生成WinDiff实时版本的配置文件。

工具要求

工具下载

研究人员可以通过以下命令将该项目源码克隆至本地:

git clone https://www.php.cn/link/4e91896d95a8e2468961d0a1cc72b306.git

代码构建

我们可以直接切换到项目目录,并执行“ci/build_frontend.sh”脚本。该脚本能够帮助我们自动化完成实时版本的WinDiff构建,脚本内容如下:

# 解析项目根目录 PROJECT_ROOT=$(git rev-parse --show-toplevel) # 生成数据库 cd "$PROJECT_ROOT/windiff_cli" cargo run --release "$PROJECT_ROOT/ci/db_configuration.json" "$PROJECT_ROOT/windiff_frontend/public/" # 构建前端 cd "$PROJECT_ROOT/windiff_frontend" npm ci npm run build

用于为实时版本WinDiff生成数据的配置文件路径为“ci/db_configuration.json”,但我们可以根据需求对其进行自定义修改和配置。

工具运行截图

如何使用WinDiff浏览和对比Windows源代码中的符号和系统调用信息

许可证协议

本项目的开发与发布遵循GPL-3.0开源许可证协议。

项目地址

WinDiff:https://www.php.cn/link/4e91896d95a8e2468961d0a1cc72b306

© 版权声明
THE END
喜欢就支持一下吧
点赞11 分享