文章分类 - 驱动之路
摘要:#include "stdafx.h"void MyFirstQuDongUnload(IN PDRIVER_OBJECT DriverObject);#ifdef __cplusplusextern "C" NTSTATUS DriverEntry(IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING RegistryPath);#endif#define VadRootOffset 0x11c#define CONTROL_AREAOffset 0x18#define PFILE_OBJECTOffse
阅读全文
摘要:accessviolation-codec00000005记住了死循环
阅读全文
摘要:// HelloWorld.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include "deelx.h"int _tmain(int argc, _TCHAR* argv[]){// textchar text[50] = {"a123,a234,a345"};char *Buff[20];initArrar(Buff,20,50);int retSize=0;FgStr("a\\d+",text,Buff,&retSize);for (int i=0;i<r
阅读全文
摘要:需要的模块有:#pragma comment(lib , "DbgHelp.lib")#pragma comment(lib , "ntdll.lib")#include "DbgHelp.h" //这个是在C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Include1.初始化符号 1.创建目录Symbols 2.创建symsrv.yes文件,不然的话他会弹一个对话框 3.设置搜索路径,开始下载PDB2.获得win32k.sys的模块地址和基址3.开始枚举,回调函数我们得自己写
阅读全文
摘要:#include "stdafx.h"#ifdef __cplusplusextern "C" NTSTATUS DriverEntry(IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING RegistryPath);#endifextern "C" __declspec(dllimport) BOOLEAN KeRemoveSystemServiceTable (IN ULONG Index);PSERVICE_DESCRIPTOR_TABLE KeServiceDescriptor
阅读全文
摘要:RtlEqualUnicodeString(&str,ObjectAttributes->ObjectName,TRUE)//为TRUE表示不区分大小写http://mzf2008.blog.163.com/blog/static/3559978620101112115510592/字符串操作:_stricmp(char*s1,char*s2)#include 比较字符串,忽略大小写,如果相等返回0 char string1[] = "The quick brown dog jumps over the lazy fox"; char string2[] =
阅读全文
摘要:#include "stdafx.h"#ifdef __cplusplusextern "C" NTSTATUS DriverEntry(IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING RegistryPath);#endifDWORD lpRet;//用来保存需要返回的地址,DWORD patchCodeLen = 0;//用来保存需要hook几个字节#define SystemExtendedProcessInformation 57//定义两个进程对象,一个是NP进程自身,一个是游戏进程PEPR
阅读全文
摘要:#include "stdafx.h"#ifdef __cplusplusextern "C" NTSTATUS DriverEntry(IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING RegistryPath);#endifDWORD lpRet;//用来保存需要返回的地址,DWORD patchCodeLen = 0;//用来保存需要hook几个字节#define SystemExtendedProcessInformation 57void lh89hUnload(IN PDRIVER_OBJE
阅读全文
摘要:#include "stdafx.h"#ifdef __cplusplusextern "C" NTSTATUS DriverEntry(IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING RegistryPath);#endifDWORD lpRet;//用来保存需要返回的地址,DWORD patchCodeLen = 0;//用来保存需要hook几个字节void lh89hUnload(IN PDRIVER_OBJECT DriverObject);unsigned char dis[2359] ={
阅读全文
摘要:DWORD GetFunctionAddressBySsdt(WCHAR *zwFunctionName,DWORD index){ PSERVICE_DESCRIPTOR_TABLE sdt;//ssdt 表 DWORD zwFunctionAddress; //应该是老的方法的地址吧 if(zwFunctionName!=NULL) //不等于NULL才进去 { UNICODE_STRING functionName; RtlInitUnicodeString(&functionName,zwFunctionNam...
阅读全文
摘要:DWORD GetFunctionAddressBySsdt(WCHAR *zwFunctionName,DWORD index){ PSERVICE_DESCRIPTOR_TABLE sdt;//ssdt 表 DWORD zwFunctionAddress; //应该是老的方法的地址吧 if(zwFunctionName!=NULL) //不等于NULL才进去 { UNICODE_STRING functionName; RtlInitUnicodeString(&functionName,zwFunctionNam...
阅读全文
摘要:什么是运行函数?也就是C语言规定了一些函数的接口,由编译器实现,如C和LINUX的一个malloc函数都不同的函数都相同,但是实现不一样
阅读全文
摘要:先来了解一下__stdcall__cdcel调用约定在来了解一下C和C++编译方式的不同c编译器方式编译默认的是__cdcel调用约定,比如:void a(int a,int b){...}push bpush acall _aadd esp,8//esp是栈顶指针__stdcall调用约定,比如:push bpush acall _a@8 这个函数内部会自动还原堆栈ret 8上面是C编译器编译2种不同约定生成的命名c++编译器方式编译默认的是__stdcall调用约定,比如:void a(int a,int b){...}push bpush acall _a@ZH8AS //反正后面一大堆
阅读全文
摘要:#define INITCODE code_seg("INIT") //定义区段,代码运行一次后就释放该函数占用的内存空间#define PAGECODE code_seg("PAGE") //可以用于虚拟内存#include //这里是C语言的头文件#include "stdafx.h"typedef enum WIN_VER_DETAIL { WINDOWS_VERSION_NONE, // 0 WINDOWS_VERSION_2K, WINDOWS_VERSION_XP, WINDOWS_VERSION_2K3, WINDOWS
阅读全文
摘要:其实每个进程都有一个EPROCESS 结构的对象可以通过windbg的命令查看:dt_eprocess 0x11111 查看结构体dt_LIST_ENTRY 0x2222 查看链表#define INITCODE code_seg("INIT") //定义区段,代码运行一次后就释放该函数占用的内存空间#define PAGECODE code_seg("PAGE") //可以用于虚拟内存#include //这里是C语言的头文件#include "stdafx.h"typedef enum WIN_VER_DETAIL { WINDO
阅读全文
摘要:符号格式说明符类型%c, %lcANSI字符char%C, %wc宽字符wchar_t%d, %i十进制有符号整数int%D十进制__int64__int64%L十六进制的LARGE_INTEGERLARGE_INTEGER%s, %lsNULL终止的ANSI字符串char*%S, %wsNULL终止的宽字符串wchar_t*%ZANSI_STRING字符串ANSI_STRING%wZUNICODE_STRING字符串UNICODE_STRING%u十进制的ULONGULONG%x小写字符十六进制的ULONGULONG%X大写字符十六进制的ULONGULONG%p指针Pointer 32/64
阅读全文
摘要:flink保存的是下一个链表的一个首地址,blink保存的是上一个链表的一个首地址,因为这个链表在这个结构的偏移是88所以减88就得到结构地址
阅读全文
摘要:SRV*D:\symbols*http://msdl.microsoft.com/download/symbols把UAC关了,重启在cmd下执行bcdedit -debug on,重启
阅读全文
摘要:#include //定义数据内存空间段#define PAGECODE code_seg("PAGE")//可以用于虚拟内存#define INITCODE code_seg("INIT")//代码运行在这块内存上,运行一次就释放typedef struct _ServiceDescriptorTable { PVOID ServiceTableBase; //System Service Dispatch Table 的基地址 PVOID ServiceCounterTable; //包含着 SSDT 中每个服务被调用次数的计数器。这个计数器一般由s
阅读全文
摘要:include //定义数据内存空间段#define PAGECODE code_seg("PAGE")//可以用于虚拟内存#define INITCODE code_seg("INIT")//代码运行在这块内存上,运行一次就释放#pragma PAGECODEVOID DriverUnLoad(PDriverObject pDriverObject){DbgPrint("卸载成功");}#pragma INITCODENTSTATUS CreateDevice(IN PDRIVER_OBJECT pDriverObject){/*N
阅读全文

浙公网安备 33010602011771号