windows 10 操作系统、电脑、应用程序等

番茄系统家园 · 2021-08-14 23:50:11

windows 10 操作系统、电脑、应用程序等

编程

32位系统逐渐淘汰,转到64位编程相当重要.但苦于64位驱动编程网上的资料比较杂乱

这里打算写写关于64位驱动编程的内容,当然大部分内容都是从网上搜集过来的,然后汇集到一起好用来学习.

准备

双机调试,加载驱动工具,工具,重启后禁用驱动签名.重启后加载驱动

双机调试:

在win7虚拟机关机状态添加一个基于命名管道的串口,然后设置另一端时应用程序,然后

执行下面命令

64系统开始有个驱动签名机制,没有通过微软签名的驱动无法加载,我们调试时需要禁用它.

开机按f8后有个禁用驱动签名启动选项,选择它启动即可.

(最后的1表示虚拟机中设置的com1)

{}(记住这里返回的id号,下面用到)

{}{ID}这里的ID设置为第2条命令返回的id

bcdedit/debug{ID}ON这里的ID设置为第2条命令返回的id

重启即可.

2.代码

对于ULONG在64编译时自动转为ULONG64

如果是ULONG_PTR则编译器自动帮我们转换

无类型指针使用PVOID64.

通过KdPrint打印时,%x不用而用%p.

从xp到windows764位像EPROCESS等结构体也有变化,通过windbg可以查看比较.

对于驱动代码来说,因为那些数据类型都有2个版本:以32结尾和以64结尾,它通过在不同环境编译时自动转到目标类型

3.Patchguard

说白了,就是微软为了让系统更安全,不能随随便便就能hook和inline,不能随随便便就能通过修改EPROCESS来隐藏进程.

这家伙每隔一段时间对系统关键文件,内存区域进行CRC校验,发现不对立刻进行0x109蓝屏.

而且它自己藏在内存中不好通过解决它来绕过patchguard.

https://docs.microsoft.com/en-us/windows-hardware/drivers/debugger/bug-check-0x109---critical-structure-corruption

上面的网站有列出的被其保护的内容.

4.64位ssdt表的查找

在32位系统中我们可以通过已导出的结构体名直接操作,或者搜素函数KeAddSystemServiceTable,或者通过windbg查看.

但是在64位系统中并没有导出这个结构.所以需要通过其他方式找到他.

思路1(这个思路参考黑客防线2011合订本下半年第7页)

通过读取C0000082寄存器获得KiSystemCall64函数的地址,因为这个函数没有导出,故通过这种方式..(相当佩服作者底层知识功底)

在往下搜索0x500个字节左右就能得到KeServiceDescriptorTable地址

在windbg中查看:

相关阅读

  • win7 64 ssdt
  • win7 x64中寻找win7 64 ssdtssdt
  • windows 10 操作系统、电脑、应用程序等
  • 免责声明: 凡标注转载/编译字样内容并非本站原创,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如果你觉得本文好,欢迎推荐给朋友阅读;本文链接: https://m.nndssk.com/post/33647.html。
    猜你喜欢
    最新应用
    热门应用