自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

125096

我是125096,欢迎大家来我的csdn博客!

  • 博客(27)
  • 资源 (2)
  • 问答 (1)
  • 收藏
  • 关注

原创 将应用程序的函数指针传递给驱动程序来调用

EXE部分#include #include #include #include "Ioctl.h"void Out_8(PUCHAR Port,UCHAR Value){ __asm { mov edx,Port mov al,Value out dx,al nop nop } return;}void KernelModeFunction(vo

2015-08-09 18:22:45 500

原创 分层驱动将IRP分解成多个IRP

EXE部分#include #include #include #include "Ioctl.h"int main (void){ char linkname[]="\\\\.\\HelloDDKB"; HANDLE hDevice = CreateFileA(linkname, GENERIC_READ | GENERIC_WRITE, 0, NULL,

2015-08-09 13:33:32 437

原创 分层驱动完成历程

EXE部分#include #include #include #include "Ioctl.h"int main (void){ char linkname[]="\\\\.\\HelloDDKB"; HANDLE hDevice = CreateFileA(linkname, GENERIC_READ | GENERIC_WRITE, 0, NULL,

2015-08-08 19:03:51 599

原创 分层驱动向下转发IRP

EXE部分#include #include #include #include "Ioctl.h"int main (void){ char linkname[]="\\\\.\\HelloDDKB"; HANDLE hDevice = CreateFileA(linkname, GENERIC_READ | GENERIC_WRITE, 0, NULL,

2015-08-08 16:55:15 534

原创 用IoAllocateIrp创建IRP

EXE部分#include #include #include #include "Ioctl.h"int main (void){ char linkname[]="\\\\.\\HelloDDKB"; HANDLE hDevice = CreateFileA(linkname, GENERIC_READ | GENERIC_WRITE, 0, NULL,

2015-08-07 15:41:22 2117

原创 通过设备指针调用其他驱动程序(异步方式)

EXE部分#include #include #include #include "Ioctl.h"int main (void){ char linkname[]="\\\\.\\HelloDDKB"; HANDLE hDevice = CreateFileA(linkname, GENERIC_READ | GENERIC_WRITE, 0, NULL,

2015-08-07 14:57:04 391

原创 通过设备指针调用其他驱动程序(同步方式)

EXE部分#include #include #include #include "Ioctl.h"int main (void){ char linkname[]="\\\\.\\HelloDDKB"; HANDLE hDevice = CreateFileA(linkname, GENERIC_READ | GENERIC_WRITE, 0, NULL,

2015-08-07 14:42:57 1013

原创 符号链接获得设备名

NTSTATUS status=STATUS_SUCCESS; UNICODE_STRING DeviceSymbolcLinkName; RtlInitUnicodeString(&DeviceSymbolcLinkName,L"\\??\\HelloDDKA"); //初始化objectAttributes; OBJECT_ATTRIBUTES objectAttributes;

2015-08-07 14:01:02 1006

原创 驱动中以文件句柄形式调用其他驱动程序(异步调用二)

EXE部分#include #include #include #include "Ioctl.h"int main (void){ char linkname[]="\\\\.\\HelloDDKB"; HANDLE hDevice = CreateFileA(linkname, GENERIC_READ | GENERIC_WRITE, 0, NULL,

2015-08-07 11:38:48 562

原创 驱动中以文件句柄形式调用其他驱动程序(异步调用一)

EXE部分#include #include #include #include "Ioctl.h"int main (void){ char linkname[]="\\\\.\\HelloDDKB"; HANDLE hDevice = CreateFileA(linkname, GENERIC_READ | GENERIC_WRITE, 0, NULL,

2015-08-07 10:51:20 778

原创 驱动中以文件句柄形式调用其他驱动程序(同步调用)

EXE部分#include #include #include #include "Ioctl.h"int main (void){ char linkname[]="\\\\.\\HelloDDKB"; HANDLE hDevice = CreateFileA(linkname, GENERIC_READ | GENERIC_WRITE, 0, NULL,

2015-08-06 20:19:51 526

原创 IRP的超时处理

EXE部分#include #include #include #include "Ioctl.h"int main (void){ char linkname[]="\\\\.\\HelloDDK"; HANDLE hDevice = CreateFileA(linkname, GENERIC_READ | GENERIC_WRITE, 0, NULL,

2015-08-06 16:04:17 642

原创 时间相关

VOID Test(void){ //得到当前系统时间 LARGE_INTEGER current_system_time={0}; KeQuerySystemTime(¤t_system_time); //从系统事件转换称当地时区时间 LARGE_INTEGER current_local_time={0}; ExSystemTimeToLocalTime(¤t_system_

2015-08-06 11:12:37 380

原创 驱动中四种等待的用法

EXE部分#include #include #include #include "Ioctl.h"int main (void){ char linkname[]="\\\\.\\HelloDDK"; HANDLE hDevice = CreateFileA(linkname, GENERIC_READ | GENERIC_WRITE, 0, NULL,

2015-08-06 10:44:43 1422

原创 DPC定时器

EXE部分#include #include #include #include "Ioctl.h"int main (void){ char linkname[]="\\\\.\\HelloDDK"; HANDLE hDevice = CreateFileA(linkname, GENERIC_READ | GENERIC_WRITE, 0, NULL,

2015-08-06 09:39:44 618

原创 I/O定时器

EXE#include #include #include #include "Ioctl.h"int main (void){ char linkname[]="\\\\.\\HelloDDK"; HANDLE hDevice = CreateFileA(linkname, GENERIC_READ | GENERIC_WRITE, 0, NULL, OP

2015-08-05 15:18:10 536

原创 自定义StartIO例程

EXE部分#include #include #include #include "Ioctl.h"DWORD ThreadProc( LPVOID lpParameter){ printf("线程执行\n"); OVERLAPPED overlap={0}; overlap.hEvent=CreateEvent(NULL,FALSE,FALSE,NULL); UCHAR

2015-08-04 19:02:09 442

原创 StartIO例程

StartIO例程能够保证各个并行的IRP顺序执行,即串行化并行执行与串行执行在很多情况时,对设备的操作必须是串行执行,而不能并行执行。例如,对串口的操作,假如有N个线程同时操作串口设备时,必须将这些操作排队,然后一一进行处理。如果不做串行化处理,当一个操作没有完毕时,新的操作又开始,这必然会导致操作的混乱。因此,驱动程序有必要将并行的请求变成串行的请求,这需要用到队列。可以想象,如果不

2015-08-04 16:51:56 580

原创 IRP的异步完成

EXE部分#include #include #include #include "Ioctl.h"int main (void){ char linkname[]="\\\\.\\HelloDDK"; HANDLE hDevice = CreateFileA(linkname, GENERIC_READ | GENERIC_WRITE, 0, NULL,

2015-08-04 10:55:06 535

原创 驱动中IRP_MJ_READ异步

EXE部分#include #include #include #include "Ioctl.h"int main (void){ char linkname[]="\\\\.\\HelloDDK"; HANDLE hDevice = CreateFileA(linkname, GENERIC_READ | GENERIC_WRITE, 0, NULL,

2015-08-03 19:04:52 2633

原创 ReadFileEx异步读设备

#include #include VOID CALLBACK FileIOCompletionRoutine(DWORD dwErrorCode,DWORD dwNumberOfBytesTransfered,LPOVERLAPPED lpOverlapped){ printf("对于此次擦在返回的状态%d\n",dwErrorCode); printf("告诉已经操作了多少字节,

2015-08-03 19:03:35 809

原创 ReadFile异步读设备

#include #include int main (void){ HANDLE hDevice=CreateFile(TEXT("C:\\1.txt"), GENERIC_READ|GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL|FILE_FLAG_OVERLAPPED, ///此处设置F

2015-08-03 19:01:45 2999

原创 内核模式下互斥体

int Number=100;VOID ThreadProc1( IN PVOID lpParameter){ PKMUTEX pkMutex=(PKMUTEX)lpParameter; while (Number>0) { KeWaitForSingleObject(pkMutex,Executive,KernelMode,FALSE,NULL); KeStallExecut

2015-08-02 16:46:16 763

原创 内核模式下 信号灯

VOID MyProcessThread(IN PVOID pConText){#if DBG _asm int 3#endif //获取信号灯 PKSEMAPHORE pkSemaphore=(PKSEMAPHORE)pConText; //释放给定信号对象 KeReleaseSemaphore(pkSemaphore,IO_NO_INCREMENT,1,FALSE); /

2015-08-02 15:27:43 520

原创 驱动程序和应用程序交换事件对象

EXE部分代码#ifndef IOCTLS_H#define IOCTLS_H#ifndef CTL_CODE#pragma message("CTL_CODE undefined. Include winioctl.h or ntddk.h")#endif//缓冲内存模式IOCTL#define IOCTL_TEST1 CTL_CODE(FILE_DEVICE_UN

2015-08-02 14:29:04 512

原创 在内核下使用事件对象KeInitializeEvent

VOID MyProcessThread( IN PVOID StartContext){#if DBG _asm int 3#endif PKEVENT pEvent=(PKEVENT)StartContext; DbgPrint("11111111111111!\n"); //设置事件 KeSetEvent(pEvent,IO_NO_INCREMENT,FALSE);

2015-08-02 14:24:58 4832 1

原创 PsCreateSystemThread

HANDLE hSystemThread,hMyThread;PsCreateSystemThread(&hSystemThread,NULL,NULL,NULL,NULL,ThreadSystemStart,NULL);PsCreateSystemThread(&hMyThread,NULL,NULL,NtCurrentProcess(),NULL,ThreadUserStart,NULL)

2015-08-01 16:10:09 1061

OllyDBG 入门系列

OllyDBG 入门系列OllyDBG 入门系列(五)-消息断点及 RUN 跟踪.doc

2013-08-04

寒江独钓——Windows内核安全编程

寒江独钓——Windows内核安全编程.pdf

2013-08-04

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除