前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何使用WinDiff浏览和对比Windows源代码中的符号和系统调用信息

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

作者头像
FB客服
发布2024-01-15 11:17:50
1910
发布2024-01-15 11:17:50
举报
文章被收录于专栏:FreeBufFreeBuf

关于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时轻松更新和重新生成数据库。CLI工具的代码位于项目的windiff_CLI目录中。

Web前端用于以用户友好的方式可视化CLI工具生成的数据。前端遵循与ntdiff相同的原理,因为它允许浏览从某些版本的Microsoft Windows的官方Microsoft PE和PDB中提取的信息,并允许在不同版本之间比较这些信息。前端的代码位于项目的windiff_frontend目录中。

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

工具要求

Rust 1.68+ Node.js 16.8+

工具下载

广大研究人员可以直接使用下列命令将该项目源码克隆至本地:

代码语言:javascript
复制
git clone https://github.com/ergrelet/windiff.git

代码构建

我们可以直接切换到项目目录中,并寻找到“ci/build_frontend.sh”脚本。该脚本可以帮助我们完全自动化完成实时版本的WinDiff构建,脚本代码如下:

代码语言:javascript
复制
# 解析项目根目录

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”,但是我们可以根据自己的需求对其进行自定义修改和配置。

工具运行截图

许可证协议

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

项目地址

WinDiff

https://github.com/ergrelet/windiff

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2024-01-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FreeBuf 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • WinDiff是一款功能强大的Windows二进制源代码安全分析与调试工具,该工具完全开源,基于Web实现其功能,可以帮助广大研究人员在不同版本的操作系统中浏览和对比Microsoft Windows二进制文件的符号、类型和系统调用信息。其中,WinDiff的二进制源码数据库支持自动更新,以包含来自最新Windows更新升级(包括Insider Preview)的信息。
  • WinDiff主要由两部分组成,即一个使用Rust编写的CLI工具,和一个使用TypeScript和Next.js框架开发的Web前端。
  • WinDiff:
  • https://github.com/ergrelet/windiff
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档