[转载]A Crash Course on the Depths of Win32 Structured Exception Handling windows的异常处理机制

2020-9-8 流沙 驱动开发

在Win32的核心, 结构化异常处理(Structured Exception Handling)(SEH) 是操作系统提供的一种服务. 你能找到的所有关于SEH的文档都会描述某一种编译器的运行时库(runtime library)对操作系统实现的某种包装. 我会层层剥析SEH一直到它的最基本的概念.   这篇文章假设你熟悉Win32,C++   文章示例代码: Exception.zip 在所有由Win32操作系统提供的基础设施中, 可能被最广泛应用却没有文档说明的就是结构化异常处理了. ...

阅读全文>>

评论(0) 浏览(197)


[驱动开发]ZwLoadDriver方式加载驱动

2018-12-27 流沙 驱动开发

直接贴代码, 可以直接测试 #include <windows.h> #include <stdio.h> typedef struct _LSA_UNICODE_STRING { USHORT Length; USHORT MaximumLength; PVOID Buffer; } LSA_UNICODE_STRING, *PLSA_UNICODE_STRING; typedef LSA_UNICODE_STRING UNICODE_STRING, *PUNICODE_STRING; // 申明ntd...

阅读全文>>

评论(0) 浏览(2259)


[驱动开发]ZwSetSystemInformation 加载驱动

2018-12-27 流沙 驱动开发

#include <windows.h> #include <stdio.h> #define NT_SUCCESS(Status) ((NTSTATUS)(Status) >= 0) #define SystemLoadAndCallImage 38 typedef struct _UNICODE_STRING { USHORT Length; USHORT MaximumLength; PVOID Buffer; } UNICODE_STRING, *PUNICODE_STRING; typedef uns...

阅读全文>>

评论(0) 浏览(1123)


[驱动开发]利用SCM组件加载卸载驱动

2018-12-27 流沙 驱动开发

开发环境: VC6.0 系统环境: xp3 exe驱动加载InstallSysDemo.rar 附件中有完整的测试代码 注意:  驱动的sys文件 需要和 生成的exe文件放到一个文件夹即可执行

阅读全文>>

评论(0) 浏览(901)


[驱动开发]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;...

阅读全文>>

评论(0) 浏览(911)


[驱动开发]隐藏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...

阅读全文>>

评论(0) 浏览(1106)


[驱动开发] idt hook测试

2018-12-9 流沙 驱动开发

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

阅读全文>>

评论(0) 浏览(1638)


[驱动开发] 遍历IDT表

2018-12-6 流沙 驱动开发

没啥技术含量 主要就是指令 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...

阅读全文>>

评论(0) 浏览(1527)


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

2018-12-5 流沙 驱动开发

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...

阅读全文>>

评论(0) 浏览(1065)


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

2018-12-3 流沙 驱动开发

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

阅读全文>>

评论(0) 浏览(904)


Powered by 流沙团

备案号:鄂ICP备15017378号-1