<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
  <channel>
    <title>断点社区-专业的老牌游戏安全技术交流社区 - Windows内核与驱动开发</title>
    <link>https://www.bpsend.net/forum-5-1.html</link>
    <description>Latest 20 threads of Windows内核与驱动开发</description>
    <copyright>Copyright(C) 断点社区-专业的老牌游戏安全技术交流社区</copyright>
    <generator>Discuz! Board by Comsenz Inc.</generator>
    <lastBuildDate>Sun, 26 Apr 2026 06:32:59 +0000</lastBuildDate>
    <ttl>180</ttl>
    <image>
      <url>https://www.bpsend.net/static/image/common/logo_88_31.gif</url>
      <title>断点社区-专业的老牌游戏安全技术交流社区</title>
      <link>https://www.bpsend.net/</link>
    </image>
    <item>
      <title>X86C++反汇编13.函数</title>
      <link>https://www.bpsend.net/thread-511-1-1.html</link>
      <description><![CDATA[[md]### 函数的调用约定

1. 栈参数传递(传递方向)
2. 返回值
3. 栈平衡(参数平衡 由谁平衡)

函数的调用约定系统说了算

系统的api是标准调用约定,由此编译器也不得不提供这种调用约定

在**非window系统**上,当我们把函数调用约定用 stdcall 时,,并不代表编译过后还是 ...]]></description>
      <category>Windows内核与驱动开发</category>
      <author>大理寺少卿</author>
      <pubDate>Thu, 12 Jun 2025 15:45:22 +0000</pubDate>
    </item>
    <item>
      <title>驱动开发与系统原理-内核中的线程结构体</title>
      <link>https://www.bpsend.net/thread-510-1-1.html</link>
      <description><![CDATA[[md]0环创建线程，结构为Ethread

3环创建线程，结构为PEB

任何一个线程都必须挂在进程下面

实验
----

随便打开一个程序，我们通过Windbg遍历，取Process结构

![](https://raw.githubusercontent.com/Whitebird0/tuchuang/main/QQ%E6%88%AA%E5%9B%BE20220119201023. ...]]></description>
      <category>Windows内核与驱动开发</category>
      <author>大理寺少卿</author>
      <pubDate>Thu, 12 Jun 2025 15:44:23 +0000</pubDate>
    </item>
    <item>
      <title>驱动开发与系统原理-CPU控制块KPCR</title>
      <link>https://www.bpsend.net/thread-509-1-1.html</link>
      <description><![CDATA[[md]介绍
----

![](https://raw.githubusercontent.com/Whitebird0/tuchuang/main/QQ%E6%88%AA%E5%9B%BE20220118225953.png)

表示插了1个CPU，里面有4个物理核心，还有8个逻辑处理器(模拟核心)，也就是常说的四核八线程

每个核都有一套寄存器cr0-cr8,IDT,GDT等，而KP ...]]></description>
      <category>Windows内核与驱动开发</category>
      <author>大理寺少卿</author>
      <pubDate>Thu, 12 Jun 2025 15:43:50 +0000</pubDate>
    </item>
    <item>
      <title>驱动开发与系统原理-MiProcessLoaderEntry隐藏进程</title>
      <link>https://www.bpsend.net/thread-492-1-1.html</link>
      <description><![CDATA[[md]MiProcessLoaderEntry在内核文件ntoskrnl.exe中，我们可以通过这个函数API隐藏进程，有两个参数，第一个为PLIST_ENTRY类型的结点，第二个参数为TRUE/FALSE

我们可以通过遍历驱动，找到ntoskrnl.exe，然后通过特征码搜索，找到该函数地址，再通过函数指针调用该函数 ...]]></description>
      <category>Windows内核与驱动开发</category>
      <author>大理寺少卿</author>
      <pubDate>Wed, 21 May 2025 15:48:58 +0000</pubDate>
    </item>
    <item>
      <title>驱动开发与系统原理-断链隐藏其他驱动</title>
      <link>https://www.bpsend.net/thread-491-1-1.html</link>
      <description><![CDATA[[md]断链隐藏其他驱动需要注意的是要用到之前借壳通信的知识

extern POBJECT_TYPE* IoDriverObjectType;
NTSTATUS
ObReferenceObjectByName(
  __in PUNICODE_STRING ObjectName,
  __in ULONG Attributes,
  __in_opt PACCESS_STATE AccessState,
  __in_opt ACCESS_M ...]]></description>
      <category>Windows内核与驱动开发</category>
      <author>大理寺少卿</author>
      <pubDate>Wed, 21 May 2025 15:47:43 +0000</pubDate>
    </item>
    <item>
      <title>驱动开发与系统原理-驱动断链隐藏</title>
      <link>https://www.bpsend.net/thread-486-1-1.html</link>
      <description><![CDATA[[md]补充
----

pDriverObject-&gt;DriverSection实际指向的是下面这个结构，但是微软并没有导出该结构体，需要我们自己定义使用

  typedef struct _LDR_DATA_TABLE_ENTRY
  {
    LIST_ENTRY InLoadOrderLinks;
    LIST_ENTRY InMemoryOrderLinks;
    LIST_ENTRY InIni ...]]></description>
      <category>Windows内核与驱动开发</category>
      <author>大理寺少卿</author>
      <pubDate>Wed, 07 May 2025 14:23:55 +0000</pubDate>
    </item>
    <item>
      <title>驱动开发与系统原理-驱动遍历</title>
      <link>https://www.bpsend.net/thread-485-1-1.html</link>
      <description><![CDATA[[md]熟悉_DRIVER_OBJECT结构
----------------------

![](https://raw.githubusercontent.com/Whitebird0/tuchuang/main/QQ%E6%88%AA%E5%9B%BE20220114223024.png)

DriverSection 是驱动的地址，一个指向驱动的指针

DriverInit 存储驱动的名称，一个指向驱动名称的指 ...]]></description>
      <category>Windows内核与驱动开发</category>
      <author>大理寺少卿</author>
      <pubDate>Wed, 07 May 2025 14:23:14 +0000</pubDate>
    </item>
    <item>
      <title>驱动开发与系统原理-保护进程不被访问</title>
      <link>https://www.bpsend.net/thread-477-1-1.html</link>
      <description><![CDATA[[md]在EPORCESS结构体中，偏移0x26c的地方是一个标志位

![](https://raw.githubusercontent.com/Whitebird0/tuchuang/main/QQ%E6%88%AA%E5%9B%BE20211224162531.png)

在标志位中第12位为进程保护位，当该位为1时，调试器无法附加该进程

没设置保护位:
-------------
 ...]]></description>
      <category>Windows内核与驱动开发</category>
      <author>大理寺少卿</author>
      <pubDate>Mon, 05 May 2025 03:55:23 +0000</pubDate>
    </item>
    <item>
      <title>驱动开发与系统原理-断链隐藏进程</title>
      <link>https://www.bpsend.net/thread-476-1-1.html</link>
      <description><![CDATA[[md]今天介绍一种比较简单的隐藏进程的方法，其实只能骗骗3环下的检测

原理
----

我们知道进程在0环中是靠双向链表链接的，我们打印进程的时候靠的是遍历双向链表，如果我们进行断链操作，就可以实现3环下的进程隐藏

代码
----

    #include
    VOID DriverUnload( ...]]></description>
      <category>Windows内核与驱动开发</category>
      <author>大理寺少卿</author>
      <pubDate>Mon, 05 May 2025 03:54:29 +0000</pubDate>
    </item>
    <item>
      <title>驱动开发与系统原理-驱动遍历进程</title>
      <link>https://www.bpsend.net/thread-471-1-1.html</link>
      <description><![CDATA[[md]最简单的一种，通过PsGetCurrentProcess获取当前进程，然后通过进程结构体的进程双向链表去遍历进程，但是这里不一定可以得到被隐藏的进程

代码
----

    #include

    VOID DriverUnload(PDRIVER_OBJECT pDriverObject) {

      DbgPrint(\&quot;Unload Driver Succe ...]]></description>
      <category>Windows内核与驱动开发</category>
      <author>大理寺少卿</author>
      <pubDate>Wed, 30 Apr 2025 15:37:13 +0000</pubDate>
    </item>
    <item>
      <title>驱动开发与系统原理-内核中的进程结构体</title>
      <link>https://www.bpsend.net/thread-463-1-1.html</link>
      <description><![CDATA[[md]进程其实就是一块内存，被结构体修饰(EPROCESS)

32位的系统内存为4GB

64位的系统内存为256T(48位，并不是64位)

3环空间128T,0环空间128T

KPROCESS

```

        ntdll!_KPROCESS
           +0x000 Header           : _DISPATCHER_HEADER   //事件等待
       ...]]></description>
      <category>Windows内核与驱动开发</category>
      <author>大理寺少卿</author>
      <pubDate>Sat, 05 Apr 2025 14:18:38 +0000</pubDate>
    </item>
    <item>
      <title>驱动开发与系统原理-动态获取索引号</title>
      <link>https://www.bpsend.net/thread-461-1-1.html</link>
      <description><![CDATA[[md]动态获取主要操作就是把ntdll.dll加载到驱动中，去函数地址读取汇编中的索引号

![](https://raw.githubusercontent.com/Whitebird0/tuchuang/main/QQ%E6%88%AA%E5%9B%BE20211217182932.png)

代码:

```
        #include
        #include
        PULONG g_PageM ...]]></description>
      <category>Windows内核与驱动开发</category>
      <author>大理寺少卿</author>
      <pubDate>Thu, 03 Apr 2025 15:17:03 +0000</pubDate>
    </item>
    <item>
      <title>驱动开发与系统原理-SSDT HOOK</title>
      <link>https://www.bpsend.net/thread-459-1-1.html</link>
      <description><![CDATA[[md]SSDKHOOK其实比较简单，主要就是把SSDT表中的函数改成我们自己的，然后再return到原函数中，不过在这之前需要保存原函数地址

注意的点:PTE在WIN7/10中的属性大部分情况下为R，即只可读，所以我们需要通过内存映射的方式进行修改.

代码

```
      #include
       ...]]></description>
      <category>Windows内核与驱动开发</category>
      <author>大理寺少卿</author>
      <pubDate>Wed, 02 Apr 2025 14:23:15 +0000</pubDate>
    </item>
    <item>
      <title>驱动开发与系统原理-初识SSDT与ShadowSSDT</title>
      <link>https://www.bpsend.net/thread-445-1-1.html</link>
      <description><![CDATA[[md]在我们进内核的时候,SystemEnter会有几个值(SS、CS、EIP、ESP)的切换

MSR寄存器中存储了CS、EIP、ESP值， MSR寄存器如下

![](https://raw.githubusercontent.com/Whitebird0/tuchuang/main/QQ%E6%88%AA%E5%9B%BE20211211170631.png)

我们先查询一下EIP

![](http ...]]></description>
      <category>Windows内核与驱动开发</category>
      <author>大理寺少卿</author>
      <pubDate>Mon, 24 Mar 2025 15:20:40 +0000</pubDate>
    </item>
    <item>
      <title>API执行流程分析</title>
      <link>https://www.bpsend.net/thread-440-1-1.html</link>
      <description><![CDATA[[md]我们这节分析一下OpenProcess所用到的dll文件

![](https://raw.githubusercontent.com/Whitebird0/tuchuang/main/QQ%E6%88%AA%E5%9B%BE20211209224522.png)

这里的12是指12/4=3个参数，如果函数存在本模块中是蓝色，存在别的模块中调用是粉色的，所以我们继续分析 ...]]></description>
      <category>Windows内核与驱动开发</category>
      <author>大理寺少卿</author>
      <pubDate>Sun, 23 Mar 2025 12:27:11 +0000</pubDate>
    </item>
    <item>
      <title>驱动开发与系统原理-系统调用流程</title>
      <link>https://www.bpsend.net/thread-418-1-1.html</link>
      <description><![CDATA[[md]概述
----

首先我们的操作系统分为R3和R0，我们编写的exe文件如果调用了API就会出现一个调用流程

![](https://raw.githubusercontent.com/Whitebird0/tuchuang/main/QQ%E6%88%AA%E5%9B%BE20211209172154.png)

这是32位下的系统API调用流程，64位以后再说

我们一 ...]]></description>
      <category>Windows内核与驱动开发</category>
      <author>大理寺少卿</author>
      <pubDate>Mon, 17 Mar 2025 12:10:00 +0000</pubDate>
    </item>
    <item>
      <title>驱动开发与系统原理-设置读取</title>
      <link>https://www.bpsend.net/thread-414-1-1.html</link>
      <description><![CDATA[[md]代码
----

key的类型

![](https://raw.githubusercontent.com/Whitebird0/tuchuang/main/QQ%E6%88%AA%E5%9B%BE20211208232824.png)


```
#include
NTSTATUS SetRegValueCall() {
  HANDLE hKey = NULL;
  NTSTATUS ntStatus = STATUS_SUCCESS;
  //对象属性
  OB]]></description>
      <category>Windows内核与驱动开发</category>
      <author>大理寺少卿</author>
      <pubDate>Sun, 16 Mar 2025 11:57:45 +0000</pubDate>
    </item>
    <item>
      <title>驱动开发与系统原理-注册表操作-创建</title>
      <link>https://www.bpsend.net/thread-413-1-1.html</link>
      <description><![CDATA[[md]首先来看一下注册表的组成结构，我们可以通过控制台输入regedit打开注册表

![](https://raw.githubusercontent.com/Whitebird0/tuchuang/main/QQ%E6%88%AA%E5%9B%BE20211208221834.png)

如何创建一个子项，以及如何在子项下再创建一个子项
---------------------- ...]]></description>
      <category>Windows内核与驱动开发</category>
      <author>大理寺少卿</author>
      <pubDate>Fri, 14 Mar 2025 13:00:57 +0000</pubDate>
    </item>
    <item>
      <title>驱动开发与系统原理-保护与解除保护文件</title>
      <link>https://www.bpsend.net/thread-404-1-1.html</link>
      <description><![CDATA[[md]这里的保护并不是真正的保护，只是通过0环占用文件达到文件无法被操作

**0环代码**

```
        #define CTL_PROTECT_PATH IRP_IOCTRL_CODE(14)
        #define CTL_UNPROTECT_PATH IRP_IOCTRL_CODE(15)
        ...
        ...
        //文件操作-保护文件
   ...]]></description>
      <category>Windows内核与驱动开发</category>
      <author>大理寺少卿</author>
      <pubDate>Mon, 10 Mar 2025 15:06:29 +0000</pubDate>
    </item>
    <item>
      <title>驱动开发与系统原理-属性删除和重命名</title>
      <link>https://www.bpsend.net/thread-384-1-1.html</link>
      <description><![CDATA[[md]属性删除

```

**0环代码**

          #define CTL_SETARRDELETE_PATH IRP_IOCTRL_CODE(4)
          ...
          ...
          NTSTATUS SetArrDeleteIoCall(char* szFilePath) {
              NTSTATUS ntSTATUS = STATUS_SUCCESS;
              //文件句 ...]]></description>
      <category>Windows内核与驱动开发</category>
      <author>大理寺少卿</author>
      <pubDate>Sun, 09 Mar 2025 09:53:29 +0000</pubDate>
    </item>
  </channel>
</rss>