如何使用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 cinpm 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.mzph.cn/news/620841.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

详解HTTPS加密工作过程

🚗🚗🚗今天给大家分享的是HTTPS加密的工作过程。 清风的CSDN博客 🛩️🛩️🛩️希望我的文章能对你有所帮助,有不足的地方还请各位看官多多指教,大家一起学习交流! ✈️✈…

PDCA/绩效管理活动

现代绩效管理理论认为,绩效管理活动是一个连续的过程,是指管理者用来确保自己下属员工的工作行为和工作产出与组织的目标保持一致的手段及过程。人们通常用一个循环过程来描述绩效管理的整个过程。我们认为,一个组织的员工绩效管理活动由四个…

基于博弈树的开源五子棋AI教程[6 置换表]

文章目录 引子定义实现讨论与尾记 引子 置换表是记忆化搜索技术的应用,置换表保存了某一盘面的搜索结果。当博弈树搜索遇到相同的局面时可以调用这些信息来减少重复搜索。那么如何设计一个置换表的节点就显得比较重要,本文在经典的置换表节点增加一个显…

NUS CS1101S:SICP JavaScript 描述:一、使用函数构建抽象

原文:1 Building Abstractions with Functions 译者:飞龙 协议:CC BY-NC-SA 4.0 心灵的行为,其中它对简单的想法施加其力量,主要有以下三种:1.将几个简单的想法组合成一个复合的想法,从而形成所…

Scipy 高级教程——稀疏矩阵

Python Scipy 高级教程:稀疏矩阵 Scipy 提供了处理稀疏矩阵的工具,这对于处理大规模数据集中的稀疏数据是非常有效的。本篇博客将深入介绍 Scipy 中的稀疏矩阵功能,并通过实例演示如何应用这些工具。 1. 稀疏矩阵的表示 在 Scipy 中&#…

【重点】【DP】300. 最长递增子序列

题目 更好的方法是耐心排序,参见《算法小抄》的内容!!! 法1:DP 基础解法必须掌握!!! class Solution {public int lengthOfLIS(int[] nums) {if (nums null || nums.length 0) …

【深度学习】RTX2060 2080如何安装CUDA,如何使用onnx runtime

文章目录 如何在Python环境下配置RTX 2060与CUDA 101. 安装最新的NVIDIA显卡驱动2. 使用conda安装CUDA Toolkit3. 验证onnxruntime与CUDA版本4. 验证ONNX需求版本5. 安装ONNX与onnxruntime6. 编写ONNX推理代码 如何在Python环境下配置RTX 2060与CUDA 10 RTX 2060虽然是一款较早…

等保测评是什么

等保测评的全称是信息安全等级保护测评,是经公安部认证的具有资质的测评机构,依据国家信息安全等级保护规范规定,受有关单位委托,按照有关管理规范和技术标准,对信息系统安全等级保护状况进行检测评估的活动。 《信息…

Ps:何时需要转换为智能对象

智能对象 Smart Objects提供了广泛的灵活性和控制能力,特别是在处理复杂的合成、重复元素或需要非破坏性编辑的项目中。 ◆ ◆ ◆ 何时需要转换为智能对象 1、当需要对图像进行缩放、旋转等变换时。 涉及到的 Photoshop 命令包括:变换、自由变换、操控…

windows下如何搭建Yapi环境

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

【论文阅读笔记】MobileSal: Extremely Efficient RGB-D Salient Object Detection

1.介绍 MobileSal: Extremely Efficient RGB-D Salient Object Detection MobileSal:极其高效的RGB-D显著对象检测 2021年发表在 IEEE Transactions on Pattern Analysis and Machine Intelligence。 Paper Code 2.摘要 神经网络的高计算成本阻碍了RGB-D显着对象…

Pandas实战100例 | 案例 31: 转换为分类数据

案例 31: 转换为分类数据 知识点讲解 在处理包含文本数据的 DataFrame 时,将文本列转换为分类数据类型通常是一个好主意。这可以提高性能并节省内存。Pandas 允许将列转换为 category 类型。 分类数据类型: category 类型适用于那些只包含有限数量不同值的列&…

【LeetCode】27. 移除元素(简单)——代码随想录算法训练营Day01

题目链接:27. 移除元素 题目描述 给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。 不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。 元素的顺…

Promise基础详细介绍(一),resolve,reject

Promise的含义 就是一个对象,用来传递异步操作的消息。 基本用法 resolve,reject是javascript引擎提供的。 const promise new Promise(function(resolve, reject) {const result {success: truevalue: 777} //伪代码,比如接口返回的参数if(result.su…

Vue 自定义仿word表单录入之日期输入组件

因项目需要&#xff0c;要实现仿word方式录入数据&#xff0c;要实现鼠标经过时才显示编辑组件&#xff0c;预览及离开后则显示具体的文字。 鼠标经过时显示 正常显示及离开时显示 组件代码 <template ><div class"paper-input flex flex-col border-box "…

物流实时数仓DWD层——1.准备工作

目录 1.创建主程序——DwdOrderRelevantApp类 2.创建DWD层的事实表——来源于订单表和订单明细表 (1)创建订单表实体类 (2)创建订单明细表实体类 (3)创建交易域&#xff1a;下单事务事实表实体类&#xff0c;并整合(1)与(2)&#xff0c;采用下单时间 (4)创建交易域&#…

【C++】STL(标准模板库)

文章目录 1. 基本概念2. 容器2.1. 容器的分类 1. 基本概念 STL&#xff08;Standard Template Library&#xff0c;标准模板库)是惠普实验室开发的一系列软件的统称&#xff0c;现在已经成为C标准库的重要组成部分。STL的从广义上讲分为三类&#xff1a;algorithm&#xff08;…

Matlab字符识别实验

Matlab 字符识别OCR实验 图像来源于屏幕截图&#xff0c;要求黑底白字。数据来源是任意二进制文件&#xff0c;内容以16进制打印输出&#xff0c;0-9a-f’字符被16个可打印字符替代&#xff0c;这些替代字符经过挑选&#xff0c;使其相对容易被识别。 第一步进行线分割和字符…

AI编程可视化Java项目拆解第一弹,解析本地Java项目

之前分享过一篇使用 AI 可视化 Java 项目的文章&#xff0c;同步在 AI 破局星球、知乎、掘金等地方都分享了。 原文在这里AI 编程&#xff1a;可视化 Java 项目 有很多人感兴趣&#xff0c;我打算写一个系列文章拆解这个项目&#xff0c;大家多多点赞支持~ 今天分享的是第一…

如何巧妙处理情绪化,让生活工作保持积极心态分享

目录 前言 1、首先&#xff0c;要认识到情绪化对我们生活工作带来的负面影响。 2、要处理情绪化&#xff0c;首先要学会观察自己的情绪。 3、其次&#xff0c;我们要学会换位思考。 4、与亲朋好友分享心情。 5、最后&#xff0c;培养自己的兴趣爱好。 前言 在这个快节奏、…