windows系统内核调试 环境搭建(保姆级)

阅读: 评论:0

1 环境搭建  vs2019+wdk10   

我自己搭建了两套环境(window7和xp系统)

vs2019下载官网社区版即可 免费的无需破解
wdk10   注意两者要下载对应的版本 ,我这里下载的都是最新的版本  两者可以无缝衔接

VS2019 安装插件选择C++即可

一路下一步即可  安装完成后再安装 WDK  安装路径好像不能改  我的直接安装到了 D:Windows Kits
安装完成后  会有驱动安装的提示 ,一路next安装即可   一定要安装 !!!  我之前一直都没安装上  所以VS2019没有  对于的驱动开发模块
登录VS2019时 选择创建新项目可看到 有了驱动开发模块。

WDK安装完成后,在开始菜单中找到windbg程序对应的位置,右击发送快捷方式到桌面

配置启动参数

"D:Windows Kits10Debuggers" -b -k com:pipe,port=\.pipecom_2,resets=0

操作系统环境遍历设置

_NT_SYMBOL_PATH         SRV*D:Myself_SoftwareWindows_softsymbols* msdl.microsoft/download/symbols    一定要注意的空格呀!

 

2 虚拟机操作系统安装  xp与win7 64位  暂时没安装win10

往上有人说  wdk版本太新不能调试xp系统,经自己测试可以调试 ,网上说的都不靠谱啊  一定要自己尝试。
系统安装地址:msdn官网

XP系统如下


注意xp系统不要下载如下版本  不晓得为什么系统文件后缀不是iso而是img

对于window7系统  也是下载如下的版本,原因  其他版本都存在各种各样的问题,踩了太多坑了,不多BB了

操作系统的大小超过4G后  VMware会不能识别到操作系统  所以我们下载的都是纯净版的。

VMware安装操作系统略  自行百度。

操作系统的网路设置可参考:blog.csdn/qq_33523925/article/details/92387360

3 系统调试端口设置

3.1  xp系统调试端口设置

 

添加如下代码

multi(0)disk(0)rdisk(0)partition(1)WINDOWS="Microsoft Windows XP Professional" /noexecute=optin /fastdetect /debug /debugport=com_2 /baudrate=115200

通过win+R  msconfig查看启动项目设置   windows7 系统也是一样的

进入windows7 系统配置

以管理员身份启动cmd,输入   bcdedit /copy {current} /d Win7Debug  

然后  win+R  msconfig  设置启动项目

注意及时拍快照以便回复系统!!!

系统参数配置如下

4 关于windows7 64驱动签名的问题  参考文章

1 www.52pojie/thread-877849-1-1.html
2 www.52pojie/thread-1027420-1-1.html

首先去看雪论坛找到签名证书  bbs.pediy/thread-187925.htm 
另外HackingTeam 证书暂时没找 (又找到地址的可以下方评论区回复我)
结合上吾爱破解的两篇文章做出驱动签名的dll,  使用loadPE把我们做出的HookSigntool.dll挂到程序上

5 VS2019 创建第一个驱动程序(window7系统的)

6 驱动签名

7 测试驱动

8 收工。

 

 

------------------------------------------------------------------------------2021-03-22  中断提权 ------------------------------------------------------------------------------

首先手动在idtr 表注册20号中断

XP系统查看注册 20号中断

运行结果

 

设置编译器生成固定基址

其他配置

 

#include <stdio.h>
#include <stdlib.h>
#include <Windows.h>

// 设置vscode在release开发环境下的  随机基址(否) 固定基址(是)
// IdtEntry函数的编译后的固定地址 0x00401040  为了插入到中断表中


// r idrt 读取中断表地址  0x8003f400
// dq 8003f400 l40  (注意是字母L的小写 不是数字1)
// dw = 双字节WORD格式;
// dd = 4字节DWORD格式 ;
// dq = 8字节格式;  
// 
// 
// 手动注册idt表
// 参考 03号中断  8003f430  8053ee00`0008e8b4    前四位8053+ 后四位ed04 = 函数的实际地址8053e8b4   中间8位  表示中断性质 ee00`0008
//             eq 8003f500  0040ee00`00081040      eq 编辑的意思  必须与03号中断保持一致


DWORD g_tmp = 0;
void __declspec(naked) IdtEntry()
{
	__asm
	{
		mov eax, dword ptr ds : [0x8003f500]
		mov g_tmp, eax
		iretd // 函数结束 注意32位操作系统用iretd 64位的用iret
	
	}
	 
}

void goToIdtEntry()
{
	__asm int 0x20  // 跳转我们注册20号中断函数

}

 
int main()
{
	 if ((DWORD)IdtEntry != 0x00401040)
	{
		printf("IdtEntry is not 0x00401040, wrong addr: %pn", IdtEntry);
		system("pause");
		exit(-1);
	} 

	printf("IdtEntry函数是固定基址 %pn", IdtEntry);

	// 跳转中断表
	goToIdtEntry();

	// %x  十六进制整数0f
	// %u  无符号十进制整数
	// %p  指针
	printf("g_tmp = %xn" ,g_tmp);
	printf("g_tmp = %pn", g_tmp);
    system("pause");
		
	return 0;
}
 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

本文发布于:2025-03-04 22:30:00,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/1741098645581270.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:内核   保姆   环境   系统   windows
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23