[驱动开发]WIN7 32位 64位 的内核对象类型之获取

流沙 | 驱动开发 | 2018-12-14
需要了解 内核对象的结构 32位的代码 #include "ntddk.h" VOID MyUnload(PDRIVER_OBJECT pDriverObject) { KdPrint(("驱动卸载成功\n")); } NTSTATUS DriverEntry(PDRIVER_OBJECT pDriverObject, PUNICODE_STRING Reg_Path) { UNICODE_STRING mingzi; PVOID dizhi1; ULONG *biao_neihe1;//内核表的地址 int i=2;...

阅读全文>>

ė9次浏览 60条评论 0

[驱动开发]隐藏idt HOOK

流沙 | 驱动开发 | 2018-12-11
原理: 段基址 + 偏移地址  =  函数地址 让idt不动的话, 就需要更改段基址 实例代码: #include "ntddk.h" #include "ntddk.h" #define WORD USHORT #define DWORD ULONG #define MAKELONG(a, b) ((LONG)(((WORD)(((DWORD_PTR)(a)) & 0xffff)) \ | ((DWORD)((WORD)(((DWORD_PT...

阅读全文>>

ė24次浏览 60条评论 0

[驱动开发] idt hook测试

流沙 | 驱动开发 | 2018-12-09
主要理解下面的内容: 1: KiProcessorBlock数组的每一个非0项都是指向一个_kprcb结构,而_kprcb结构正是再_kpcr结构的+0x120处,_kpcr结构的+0x38就是_IDT结构地址。 2: 通过硬编码 使用ida找到 KiProcessorBlock 3: IDt的表结构的理解, 进行函数过滤 详细使用代码 (xp3) #include <ntddk.h> #define WORD USHORT #define D...

阅读全文>>

ė78次浏览 60条评论 0

[驱动开发] 遍历IDT表

流沙 | 驱动开发 | 2018-12-06
没啥技术含量 主要就是指令 sidt  详细代码 #include <ntddk.h> #define WORD USHORT #define DWORD ULONG #define MAKELONG(a,b) ((DWORD)((USHORT)a))|(((DWORD)b)<<16) typedef struct _IDTR{ USHORT IDT_limit; USHORT IDT_LOWbase; USHORT IDT_HIGbase; }ID...

阅读全文>>

ė95次浏览 60条评论 0

[驱动开发] windows内核重载(xp3) 完整代码

流沙 | 驱动开发 | 2018-12-05
1 了解PE结构 2 懂HOOK KiFastCallEntry 3 理解SSDT表 (需要修复SSDT表) 其实操作不算太复杂, 需要有一定的基础 完整测试的实例代码 #include <ntddk.h> #include "ntimage.h" #define __Max(a,b) a>b?a:b #pragma pack(1) typedef struct ServiceDescriptorEntry { unsigned int *ServiceTab...

阅读全文>>

ė55次浏览 60条评论 0

[驱动开发]重载内核(一)

流沙 | 驱动开发 | 2018-12-03
注意事项 : 我用的OD是 自己有保护的,经过内核重载 CE就能打开OD了 没重载之前呢 是看不到OD进程的 不要跟360HOOK了一个点 要不就会蓝屏 ,  加载驱动前一定要检查 有没有被HOOK NtCreateFile 函数否则就会加载失败的 重点注意QQ 它的驱动HOOK了不少函数而且是重启不会取消的HOOK  解决办法就是把它的驱动删除了 重启 就OK 比如打开了 CE 一定要先把CE关掉以后 才能卸载重载驱动 要不就会蓝屏 首先呢我们要学的是一个思想,过程代码就放在哪跟着代码一步一步看最后作者的意思是什么就会明白.也能自己调用但是...

阅读全文>>

ė40次浏览 60条评论 0

[驱动开发]Anti Anti Windbg

流沙 | 驱动开发 | 2018-12-02
文章非原创,转载的 今天和大家分享一个小心得,想必很多高手已经玩腻了~飘过吧! 最近接触了不少游戏保护,它们或多或少的都有一个特制就是在被调试机上运行游戏以后调试机上的WINDBG就接受不到信息了。起初我也困惑的很,而且在驱动当中设置int 3断点会蓝屏。后来在一个应用程序中添加了 __asm int 3这个应用程序就崩溃了。得到结论它们都是用了KdDisableDebugger函数来禁止操作系统调试了。想对应的有一个函数是 KdEnableDebugger 可以允许调试,但是很多游戏仍然很操蛋。及时你使用了KdEnableDebugger 也无法调试,它们都是不...

阅读全文>>

ė52次浏览 60条评论 0

[驱动开发]得到内核模块地址的方法

流沙 | 驱动开发 | 2018-12-02
网上说的比较常见的4种方法: 1、通过DriverEntry传入的DriverObject参数的DriverSection成员指向LDR_DATA_TABLE_ENTRY结构,通过遍历这张表得到ntoskrnl的基址和大小 2、ZwQuerySystemInformation大法 3、搜索内存  4、利用KPCR结构 存在的问题: 1、第1种方法和第4种方法得到的结果比ZwQuerySystemInformation少一个 2、第1种方法如果输出BaseDllName是ntoskrnl.exe,如果输出FullDllName则是:\WINDOWS\s...

阅读全文>>

ė50次浏览 60条评论 0

[驱动开发]Hook KiFastCallEntry

流沙 | 驱动开发 | 2018-11-18
很多知识点可以学习 完整代码 #include <ntddk.h> #pragma pack(1) typedef struct ServiceDescriptorEntry { unsigned int *ServiceTableBase; unsigned int *ServiceCounterTableBase; //仅适用于checked build版本 unsigned int NumberOfServices; unsigned char *ParamTableBase; } Serv...

阅读全文>>

ė103次浏览 60条评论 0

[驱动开发]HookOpenKey

流沙 | 驱动开发 | 2018-11-18
任意位置hook nt函数 详细代码 #include <ntddk.h> #pragma pack(1) typedef struct ServiceDescriptorEntry { unsigned int *ServiceTableBase; unsigned int *ServiceCounterTableBase; //仅适用于checked build版本 unsigned int NumberOfServices; unsigned char *ParamTableBase; } ServiceDescriptorTa...

阅读全文>>

ė111次浏览 60条评论 0

[驱动开发]HookOpenProcess

流沙 | 驱动开发 | 2018-11-17
详细代码,直接看吧 #include <ntddk.h> #pragma pack(1) typedef struct ServiceDescriptorEntry { unsigned int *ServiceTableBase; unsigned int *ServiceCounterTableBase; //仅适用于checked build版本 unsigned int NumberOfServices; unsigned char *ParamTableBase; } ServiceDescriptorTableEntry...

阅读全文>>

ė75次浏览 60条评论 0

[驱动开发]ZwOpenProcess 与 ZwAllocateVirtualMemory

流沙 | 驱动开发 | 2018-11-13
0x01 目的 测试函数 ZwOpenProcess 与 ZwAllocateVirtualMemory 0x02 驱动代码 #include <ntddk.h> NTSTATUS ZwAllocateVirtualMemory( __in HANDLE ProcessHandle, __inout PVOID *BaseAddress, __in ULONG_PTR ZeroBits, __inout PSIZE_T RegionSiz...

阅读全文>>

ė108次浏览 60条评论 0

[驱动开发] 磁盘文件操作

流沙 | 驱动开发 | 2018-11-11
详细的操作实例 相关内核API ZwCreateFile ZwOpenFile ZwSetInformationFile ZwQueryInfomationFile ZwReadFile ZwWriteFile 代码实例 #include <ntddk.h> #define TAG 'tset' //驱动在内存的标志,即test NTSTATUS MyCreateFile() { HANDLE hFile; UNICODE_STRING usFileName; OBJEC...

阅读全文>>

ė110次浏览 60条评论 0

WIN7_LDR_DATA_TABLE_ENTRY结构(x86 x64)

流沙 | 驱动开发 | 2018-11-10
typedef struct _LDR_DATA_TABLE_ENTRY { LIST_ENTRY InLoadOrderLinks; LIST_ENTRY InMemoryOrderLinks; LIST_ENTRY InInitializationOrderLinks; PVOID      DllBase; PVOID      EntryPoint; ULONG32    SizeOfImage; UNICODE_STRING FullDllName; UNICODE_STRING Bas...

阅读全文>>

ė77次浏览 60条评论 0

win驱动开发(一)

流沙 | 驱动开发 | 2018-11-01
0x01 说明 测试驱动开发HelloWorld 0x02文件准备 hello.c #include <ntddk.h> VOID DriverUnload(PDRIVER_OBJECT pDriverObject) { DbgPrint("Goodbye Gyarmy\n"); } NTSTATUS DriverEntry(PDRIVER_OBJECT pDriverObject, PUNICODE_STRING pRegPath) { pDriverObject->...

阅读全文>>

ė110次浏览 60条评论 0

Ɣ回顶部