首页
Python
Java
IOS
Andorid
NodeJS
JavaScript
HTML5
rtlinitunicodestring函数
2024-11-04
RtlInitUnicodeString、IoCreateDevice、IoCreateSymbolicLink、IoDeleteDevice 四个 API 驱动函数的使用
要解释"驱动对象",就得先从 DriverEntry() 说起: 做过C语言开发的都知道程序是从 main() 函数开始执行.在进行 Windows 驱动程序开发的时候没有 main() 函数作为函数入口,取而代之的是 DriverEntry(). DriverEntry() 的原型如下: extern "C" NTSTATUS DriverEntry(IN PDRIVER_OBJECT pDriverObject, IN PUNICODE_STRING pRegi
UNICODE_STRING(用户模式 内核模式)
UNICODE_STRING结构: typedef struct _UNICODE_STRING { USHORT Length; //字节长度,不包括终止符“NULL” USHORT MaximumLength; //字符串所能占的最大字节数字符串的指针 PWCH Buffer; //字符串的地址,也
AntiPlug
反插件工程 #pragma once #ifndef __ENHANFUNC_H__ #define __ENHANFUNC_H__ #include <iostream> #include <string> #include <windows.h> #include <psapi.h> #include <tlhelp32.h> #include "CApiHook.h" using namespace std; #prag
通过修改i8042prt端口驱动中类驱动Kbdclass的回调函数地址,达到过滤键盘操作的例子
同样也是寒江独钓的例子,但只给了思路,现贴出实现代码 原理是通过改变端口驱动中本该调用类驱动回调函数的地方下手 //替换分发函数 来实现过滤 #include <wdm.h> #include <ntddk.h> #include <Ntddkbd.h> #include <windef.h> // Kbdclass驱动的名字 #define KBD_DRIVER_NAME L"\\Driver\\Kbdclass" //ps2的端口驱动
《寒江独钓_Windows内核安全编程》中修改类驱动分发函数
最近在阅读<寒江独钓_Windows内核安全编程>一书的过程中,发现修改类驱动分发函数这一技术点,书中只给出了具体思路和部分代码,没有完整的例子. 按照作者的思路和代码,将例子补充完整,发现将驱动安装在WIN7 32位环境下,键盘失效. 经调试发现,可能的原因是替换了\\Driver\\Kbdclass类驱动的所有分发函数导致,如果只替换分发IRP_MJ_READ的函数,不会有问题,以下为代码 //替换分发函数 来实现过滤 #include <wdm.h> #include <
HookSSDT 通过HookOpenProcess函数阻止暴力枚举进程
首先要知道Ring3层调用OpenProcess的流程 //当Ring3调用OpenProcess //1从自己的模块(.exe)的导入表中取值 //2Ntdll.dll模块的导出表中执行ZwOpenProcess(取索引 进入Ring0层) //3进入Ring0 从Ntoskernel.exe模块的导出表中执行ZwOpenProcess(取索引 获得SSDT服务地址) //4通过索引在SSDT表中取值(NtOpenProcess的地址) //5真正调用NtOpenProcess函数 我们可以通
自己调用NTDLL函数
一.概述 在DLL初始化的时候有时不能调用其它系统DLL的函数,以免导致问题,但有时候又必须要调用怎么办?一种办法就是自己直接调用NTDLL接口,这样肯定没有问题. 下面我写个自己调用Registry的封装类,用来代替原本系统注册表API. 二.申明NTDLL导出函数 在自己工程中需要调用NTDLL导出函数,可以通GetProcessAddr来获取函数地址再调用,也可以通过导入库的方式(这种需要ntdll.lib文件,在DDK中有),我这里采用第二种方式. 函数和类型声明: NTDllDecl.
关于在WIN32调用一些Zw系列的文件操作函数
转自:http://blog.csdn.net/cooblily/archive/2007/10/27/1848037.aspx 都好久沒上來写文章了,都不知道做什么好,結果还是学写了一下用Native API的程序,這些API的原型当然久在DDK里面找啦,不过因为NTDLL.DLL有导出啊,所以可以LoadLibrary调入这个动态连接文件,再GetProcAddress找到相应的API的地址,然后当然就可以调用啦. 整個过程最麻烦的就是要将DDK翻来翻去找到要用到的函数原型,函数所用到的結构
4.5 HOOK分发函数
4.5 HOOK分发函数 本节开始深入的探讨键盘的过滤与反过滤.有趣的是,无论是过滤还是反过 滤,其原理都是进行过滤.取胜的关键在于:谁将第一个得到信息. 黑客可能会通过修改一个已经存在的驱动对象(比如前面的KbdClass)的分 发函数指针来实现过滤所有请求的目的.黑客将这些函数指针替换成自己的黑客 驱动中的函数,这样请求将被黑客的程序首先截获.然后通过调用原来被替换过 的旧的函数指针来让Windows的击键过程正常的运作下去. 4.5.1 获得类驱动对象 当然,首先要获得键盘类驱动对象,才能
关于PsCreateSystemThread函数
研究了1天这个...MSDN说的不是很清楚NTSTATUS PsCreateSystemThread( _Out_ PHANDLE ThreadHandle, _In_ ULONG DesiredAccess, _In_opt_ POBJECT_ATTRIBUTES ObjectAttributes, _In_opt_ HANDLE ProcessHandle, _Out_opt_ PCLIENT_ID ClientId, _In_ PKS
关于RtlInitUnicodeString感想
01 VOID RtlInitUnicodeString (OUT PUNICODE_STRING DestinationString,IN PCWSTR SourceString OPTIONAL) 02 { 03 SIZE_T Length; 04 DestinationString->MaximumLength = 0; 05 DestinationString->Length = 0; 06 DestinationString->Buffer =
SSDTHook实例--编写稳定的Hook过滤函数
解说怎样写Hook过滤函数,比方NewZwOpenProcess.打开进程. 非常多游戏保护都会对这个函数进行Hook. 因为我们没有游戏保护的代码,无法得知游戏公司是怎样编写这个过滤函数. 我看到非常多奇形怪状的Hook过滤函数的写法.看得蛋痛无比. 比方: http://bbs.pediy.com/showthread.php?t=126802 http://bbs.pediy.com/showthread.php? t=126077 第一个bug: 调用这个函数 status = PsLo
Windows 驱动发展基金会(九)内核函数
Windows 驱动发展基金会系列,转载请注明出处:http://blog.csdn.net/ikerpeng/article/details/38849861 这里主要介绍3类Windows的内核函数:字符串处理函数,文件操作函数, 注冊表读写函数. (这些函数都是执行时函数,所以都有Rtl字样) 1 字符串处理函数 首先驱动程序中,经常使用的字符串包含4种:CHAR (打印的时候注意小写%s), WCHAR(打印的时候注意大写%S), ANSI_STRING, UNICODE_STRING.
《Windows驱动开发技术详解》之Windows内核函数
内核模式下字符串操作 ANSI_STRING和UNICODE_STRING分别定义如下:
hook键盘驱动中的分发函数实现键盘输入数据的拦截
我自己在看<寒江独钓>这本书的时候,书中除了给出了利用过滤的方式来拦截键盘数据之外,也提到了另外一种方法,就是hook键盘分发函数,将它替换成我们自己的,然后再自己的分发函数中获取这个数据的方式,但是书中并没有明确给出代码,我结合书中所说的一些知识加上网上找到的相关资料,自己编写了相关代码,并且试验成功了,现在给出详细的方法和代码. 用这种方式时首先根据ObReferenceObjectByName函数来根据对应的驱动名称获取驱动的驱动对象指针.该函数是一个未导出函数,在使用时只需要先声明即可
Windows内核函数
字符串处理 在驱动中一般使用的是ANSI字符串和宽字节字符串,在驱动中我们仍然可以使用C中提供的字符串操作函数,但是在DDK中不提倡这样做,由于C函数容易导致缓冲区溢出漏洞,针对字符串的操作它提供了一组函数分别用来处理ANSI字符串和UNICODE字符串. 针对两种字符串,首先定义了它们的结构体 typedef struct _STRING { USHORT Length;//字符串的长度 USHORT MaximumLength;//字符缓冲的长度 PCHAR Buffer;//字符缓冲的地址
内核开发知识第一讲.内核中的数据类型.重要数据结构.常用内核API函数.
一丶内核中的数据类型 在内核中.程序的编写不能简单的用基本数据类型了. 因为操作系统不同.很有可能造成数据类型的长度不一.而产生重大问题.所以在内核中. 数据类型都一定重定义了. 数据类型 重定义数据类型 Unsigned long ULONG Unsigned char UCHAR Unsigned int UINT Void VOID Unsigned long * PULONG Unsigned char * PCHAR Unsigned int * PUINT Void * PVOID
[内核编程] 4.5 HOOK分发函数
4.5 HOOK分发函数 本节开始深入的探讨键盘的过滤与反过滤.有趣的是,无论是过滤还是反过 滤,其原理都是进行过滤.取胜的关键在于:谁将第一个得到信息. 黑客可能会通过修改一个已经存在的驱动对象(比如前面的KbdClass)的分 发函数指针来实现过滤所有请求的目的.黑客将这些函数指针替换成自己的黑客 驱动中的函数,这样请求将被黑客的程序首先截获.然后通过调用原来被替换过 的旧的函数指针来让Windows的击键过程正常的运作下去. 4.5.1 获得类驱动对象 当然,首先要获得键盘类驱动对象,才能
SSDT表函数Hook原理
其实 SSDT Hook 的原理是很简单的,我们可以知道在 SSDT 这个数组中呢,保存了系统服务的地址,比如对于 Ring0 下的 NtQuerySystemInformation 这个系统服务的地址,就保存在 KeServiceDescriptorTable[105h] 中(计算公式 address = SSDT首地址+服务号*4) lkd> u 84647e3e nt!NtQuerySystemInformation: 84647e3e 8bff mov ed
驱动开发:内核层InlineHook挂钩函数
在上一章<驱动开发:内核LDE64引擎计算汇编长度>中,LyShark教大家如何通过LDE64引擎实现计算反汇编指令长度,本章将在此基础之上实现内联函数挂钩,内核中的InlineHook函数挂钩其实与应用层一致,都是使用劫持执行流并跳转到我们自己的函数上来做处理,唯一的不同的是内核Hook只针对内核API函数,但由于其身处在最底层所以一旦被挂钩其整个应用层都将会受到影响,这就直接决定了在内核层挂钩的效果是应用层无法比拟的,对于安全从业者来说学会使用内核挂钩也是很重要. 挂钩的原理可以总结为,通
热门专题
微信小程序wx.pageScrollTo传参数
阿里云邮箱服务器设置
springboot整合jsp屏蔽掉thymeleaf
什么时候使用/deep/深度作用域
VS markdown import 无效
有源汇上下界的最大流
gwas通俗易懂的介绍
使用python操作redis进行增删改查
java提取hanlp关键词函数
gridview的选择列勾选不上
log4j2区分环境
mysql 查询数据放入一维数组
net中dictionary中判断添加重复后不在增加
7-19 求链式线性表的倒数第K项
sql 不为空动态更新字段
Delphi IOCP学习笔记
批处理提取文件名的特殊字
gvim如何每次打开文本自动加头文件
sql怎样通过两个表筛选数据
js禁用.map文件