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

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

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

工具要求

Rust 1.68+

Node.js 16.8+

工具下载

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

git clone https://github.com/ergrelet/windiff.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”,但是我们可以根据自己的需求对其进行自定义修改和配置。

工具运行截图

许可证协议

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

项目地址

WinDiff:【GitHub传送门】

参考资料

GitHub - ntdiff/ntdiff

GitHub - m417z/winbindex: An index of Windows binaries, including download links for executables such as exe, dll and sys files

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/319023.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

alibaba学习笔记03(小滴课堂)

自定义Ribbon负载均衡策略实战 启动3个视频服务和一个订单服务: 我们可以看到它是随机调用的。 也可以使用其他负载均衡策略。 讲解新一代负载均衡组件feign介绍 这种方式去写死接口肯定是不妥当的。 于是我们使用feign负载均衡组件: 改造微服务 集成F…

S1-07 事件组

事件组 在 FreeRTOS 中,事件组(Event Group)是一种用于任务间通信的机制,用于在多个任务之间同步和传递事件。 事件组主要包含一下两个概念: 事件标志位(Event Flags):每个事件标志…

【漏洞复现】优卡特脸爱云一脸通智慧管理平台权限绕过漏洞CVE-2023-6099(1day)

漏洞描述 脸爱云一脸通智慧管理平台1.0.55.0.0.1及其以下版本SystemMng.ashx接口处存在权限绕过漏洞,通过输入00操纵参数operatorRole,导致特权管理不当,未经身份认证的攻击者可以通过此漏洞创建超级管理员账户。 免责声明 技术文章仅供参考,任何个人和组织使用网络应当…

HTTP协议请求详解

✏️✏️✏️今天给大家分享的是 HTTP 请求部分的基础知识。 清风的CSDN博客 🛩️🛩️🛩️希望我的文章能对你有所帮助,有不足的地方还请各位看官多多指教,大家一起学习交流! ✈️✈️✈️动动你们发财的小…

【教程】华为数据恢复的5个简单方法

您刚刚不小心从华为手机中删除了一些重要文件,现在您迫切希望将它们找回来。如果是这样,那么您现在可能会感到沮丧和无助。您可能已向您的朋友寻求帮助或在互联网上搜索答案,但似乎无济于事。 华为数据恢复的5个简单方法 好吧,别…

windows下如何搭建Yapi环境

今天使用YApi时发现原网址无法访问。这下只能本地部署了(官方文档)。 第一步:安装node.js 获取资源 nodejs: https://nodejs.org/en/downloadLinux安装yum install -y nodejs查看node版本node -v查看npm版本npm -v第二步:安装mo…

Python 网络爬虫入门详解

什么是网络爬虫 网络爬虫又称网络蜘蛛,是指按照某种规则在网络上爬取所需内容的脚本程序。众所周知,每个网页通常包含其他网页的入口,网络爬虫则通过一个网址依次进入其他网址获取所需内容。 优先申明:我们使用的python编译环境为PyCharm 一、首先一个网络爬虫的组成结构…

【CAN】Basic CAN和Full CAN

文章目录 1 Basic CAN和Full CAN区别2 Basic CAN和Full CAN使用场景 >>返回总目录<< 1 Basic CAN和Full CAN区别 Basic CAN和Full CAN的定义在AUTOSAR_SWS_CANDriver中的描述如下&#xff0c;Basic表示一个HardwareObject可以处理多个L-PDUs&#xff0c;Full表示…

C#,入门教程(17)——条件语句(if-else)的基础知识

上一篇&#xff1a; C#&#xff0c;入门教程(16)——可变数据类型&#xff08;var&#xff09;的基础知识与使用禁忌https://blog.csdn.net/beijinghorn/article/details/124032216 程序的核心是逻辑。 逻辑的核心是布尔条件表达式。 逻辑的主要体现形式之一是 if-else 语句…

探寻编程深渊:那些你无法想象的‘最差程序员’

在IT行业&#xff0c;有一类人让其他程序员闻风丧胆&#xff1a;那些最差的程序员。 他们的代码可能是漏洞百出&#xff0c;效率低下&#xff0c;甚至难以运行。他们可能对基本的编程概念一无所知&#xff0c;却自认为是个编程天才。那么&#xff0c;这些最差的程序员到底是什…

F-score 和 Dice Loss 原理及代码

文章目录 1. F-score1. 1 原理1. 2 代码2. Dice Loss2.1 原理2.2 代码 通过看开源图像语义分割库的源码&#xff0c;发现它对 Dice Loss 的实现方式&#xff0c;是直接调用 F-score 函数&#xff0c;换言之&#xff0c;Dice Loss 是 F-score的特殊情况。于是就研究了一下这背后…

python实现网络爬虫代码_python如何实现网络爬虫

python实现网络爬虫的方法&#xff1a;1、使用request库中的get方法&#xff0c;请求url的网页内容&#xff1b;2、【find()】和【find_all()】方法可以遍历这个html文件&#xff0c;提取指定信息。 python实现网络爬虫的方法&#xff1a; 第一步&#xff1a;爬取 使用reque…

定时任务-理论基础

什么是小顶堆 小顶堆&#xff08;Min Heap&#xff09;是一种特殊的二叉堆&#xff0c;它满足以下条件&#xff1a; 它是一个完全二叉树&#xff0c;即除了最后一层外&#xff0c;其他层的节点数都是满的&#xff0c;并且最后一层的节点从左到右依次排列。树中的每个节点的…

若依基于jsencrypt实现前后端登录密码加密

若依虽然有加密解密功能&#xff0c;然后只有前端有&#xff0c;在用户点击保存密码的时候&#xff0c;会将密码保存到本地&#xff0c;但是为了防止密码泄露&#xff0c;所以在保存的时候&#xff0c;进行加密&#xff0c;在回显密码的时候进行解密显示&#xff0c;用户在登录…

SpringCloud:Ribbon

文章目录 Ribbon快速入门Ribbon负载均衡算法常见的负载均衡算法更改算法规则修改配置 饥饿加载 Ribbon ribbon是一个客户端负载均衡器&#xff0c;会从注册中心拉取可用服务&#xff0c;当客户端需要获取服务请求时&#xff0c;ribbon能够解析服务地址并实现负载均衡 快速入门 …

Quick taxi route assignment via real-time intersection state prediction

Quick taxi route assignment via real-time intersection state prediction with a spatial-temporal graph neural network(通过时空图神经网络实时交叉口状态预测快速分配出租车路线) PAPER LINK 简单说一下: 本文采用了一种新的方法,通过使用空间-时间图神经网络(ST…

LMDeploy 的量化和部署

LMDeploy 的量化和部署 文档&#xff1a;https://github.com/InternLM/tutorial/blob/vansin-patch-4/lmdeploy/lmdeploy.md 视频&#xff1a;https://www.bilibili.com/video/BV1iW4y1A77P 一、模型量化 大模型参数量很大&#xff0c;运行起来非常消耗显存和内存&#xff0c;…

如何在电脑上免费更改 PDF 格式文档的字体大小?

对于需要编辑或修改的 PDF 文件来说&#xff0c;更改其字体大小是一个非常常见且必要的工作。虽然 Adobe Acrobat Pro DC 等专业的 PDF 编辑软件可以帮助您完成此任务&#xff0c;但他们通常都需要昂贵的恢复。幸运的是&#xff0c;有许多免费的 PDF 编辑工具可供选择。在本文中…

大括号内两行公式中,如何左对齐公式的条件

1. 先建立一个大括号&#xff0c;中间设置一个二维矩阵如下&#xff1a; 2. 选中整个矩阵&#xff0c;不要选外面的括号&#xff0c;进行如下操作 3. 选择左侧对齐 即可。

Docker安装Redis详细步骤

1、创建安装目录 mkdir -p /usr/local/docker/redis-docker 2、确定安装的版本 确定对应的版本&#xff0c;在步骤3中会用到&#xff1a; https://github.com/redis/redis/branches 3、配置docker-compose.yml 内容如下&#xff1a; version: 3 services:redis:image: r…