- 博客(72)
- 资源 (29)
- 收藏
- 关注
转载 Windows7+WDK+VS2010+VisualDDK驱动开发环境搭建(菜鸟的经验)
原文链接:http://www.cppblog.com/guojingjia2006/archive/2011/03/19/142211.htmlWINDOWS 7 配置驱动开发环境(wdk7.60)1. 安装VS2010,WDK7.60(GRMWDK_EN_7600_1)2. 新建VC 控制台项目(选择为空项目)3. 新建项目配置“dri
2013-04-12 23:29:09 1223
转载 Windows 驱动与驱动之间的通信
本文主要介绍 windows NT 驱动之间利用 CTL_CODE 如何通信. 一般来讲, 用户态的应用程序通过调用 CreateFile 和 DeviceIOControl 就可以和内核态驱动之间进行通信, 如果是内核态的一个驱动程序想和另外一个驱动程序进行类似操作又如何实现呢, 接下来会做详细的说明.主要的思路是首先得到另外一个驱动的 handle, 再构建一个 IRP, 赋予必要的参
2013-04-11 17:29:21 1768
转载 MASM64里怎么调用带多个参数的自定义的子程序?
请看这里http://www.x64asm.com/viewthread.php?tid=28CreateWindowExA函数就是超过4个参数的.四个参数后的其他参数依次压入堆栈,其中看到64位下长度为8指针.如: ;开始创建窗口 sub rsp,84H xor rcx,rcx
2013-04-08 12:45:00 1526
转载 测试代码
#include "iop.h"#include "ntddft.h"#include inbv.h>#include windef.h>//// Processor specific macros.//#if defined (i386)#define PROGRAM_COUNTER(_context) ((_context)->Eip)#de
2013-04-27 00:34:20 754 1
转载 vc实现用文件系统过滤驱动实现文件隐藏的类
调用一个开源的文件过滤驱动, 头文件typedef struct _ATTACH_EXTENSION { CHAR VolumeLetter; PDEVICE_OBJECT VolumeDevice;} ATTACH_EXTENSION, *PATTACH_EXTENSION;PDRIVER_OBJECT g_DriverObject
2013-04-27 00:21:09 736
转载 vc是实现RootKit文件隐藏
#include "ntddk.h"#include #pragma pack(1) //SSDT Tabletypedef struct ServiceDescriptorEntry { unsigned int *ServiceTableBase; unsigned int *ServiceCounterTableBase; //Used o
2013-04-27 00:20:35 594
转载 VC实现Rootkit端口隐藏
#include "ntddk.h"#include #include #include #include "netType.h"#define NT_DEVICE_NAME L"//Device//HidePort"#define DOS_DEVICE_NAME L"//DosDevices//HidePort"#pragma pack(1) //SSDT表的
2013-04-27 00:20:01 621
转载 IO端口和IO内存的区别及分别使用的函数接口
[-]Linux系统对IO端口和IO内存的管理一IO端口二IO内存三IO端口和IO内存的区分及联系四外设IO端口物理地址的编址方式统一编址独立编址优缺点五Linux下访问IO端口IO映射方式内存映射方式六Linux下访问IO内存六ioremap和ioport_map七总结IO端口和IO内存的区别及分别使用的函数接口 每个外设都是
2013-04-25 18:26:14 734
转载 机器狗穿透还原的磁盘级文件读写完整驱动代码
转载自:http://www.smatrix.org/bbs/read.php?tid=4920 文章作者:Eros412信息来源:邪恶八进制信息安全团队(www.eviloctal.com)#include#include#define FSCTL_GET_RETRIEVAL_POINTERS 0x90073#define PARTITION_TYPE_N
2013-04-25 16:50:06 1291
转载 ObReferenceObjectByName蓝屏问题
在拖了几天,调了快一天之后,问题终于在新年的第一天解决,庆贺一下O(∩_∩)O~在“北极星2003”的CSDN博客上看到说用ObReferenceObjectByName来输出驱动程序的基本信息,结果我去测试的时候无情的蓝屏了。找了好久,终于发现了原因所在。因为博客上的代码是C++,而ObReferenceObjectByName是NativeAPI,所以需要做一个声明,C++用了extern
2013-04-24 17:02:06 970
转载 windows的磁盘操作之十——获取磁盘型号
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://cutebunny.blog.51cto.com/301216/704266我们在第七节http://cutebunny.blog.51cto.com/301216/625577中探讨了如何获取系统中所有磁盘的磁盘号。但是在很多情况下,仅仅是磁盘号并不能满足我们的需
2013-04-24 11:05:08 1158
转载 windows的磁盘操作之九——区分本地磁盘与移动硬盘
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://cutebunny.blog.51cto.com/301216/674443最近碰到了个新问题,记录下来作为windows的磁盘操作那个系列的续篇吧。一些时候我们的程序需要区分本地存储设备和USB存储设备。在网上搜一搜一般会找到一个最直接的API,GetDriv
2013-04-24 11:04:41 843
转载 windows的磁盘操作之八——格式化分区的思考
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://cutebunny.blog.51cto.com/301216/625762格式化分区平常在我们看来是再普通不过的操作了,点两下鼠标就可以搞定的事情,但是在程序中实现的的确确不太容易。可能有人说直接调个format命令不就好了,没错,但系统命令存在我们第一节http
2013-04-24 11:03:59 912
转载 windows的磁盘操作之七——获取当前所有的物理磁盘号
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://cutebunny.blog.51cto.com/301216/625577 有了前几节的基础后,本节给出一个更复杂但却非常实用的例子。很多情况下,我们想知道当前系统下安装了多少块磁盘,他们的物理驱动器号都是多少,每一块磁盘上有多少个分区,分区号怎么分布,每
2013-04-24 11:03:36 703
转载 windows的磁盘操作之六——获取系统所在物理磁盘号
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://cutebunny.blog.51cto.com/301216/624609很多情况下,我们在程序中需要获知操作系统安装在哪个分区上或者哪个物理磁盘上,进而对其进行一些操作或避免一些操作。例如要避免对系统磁盘分区表的删除操作。本节讨论如何获取操作系统所在的逻辑分区号
2013-04-24 11:03:04 858
转载 windows的磁盘操作之五——获取物理磁盘上的所有逻辑分区号
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://cutebunny.blog.51cto.com/301216/624567本节讨论与上一节相反的操作,根据物理驱动器号获取该磁盘上的所有分区号。DeviceIoControl函数并没有提供操作码来直接完成此操作,所以需要稍微绕个圈子来实现这项功能。大体思路为,
2013-04-24 11:02:16 857
转载 windows的磁盘操作之四——根据逻辑分区号获得物理磁盘号
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://cutebunny.blog.51cto.com/301216/624379第一节中http://cutebunny.blog.51cto.com/301216/624027我们谈到了磁盘设备名称的两种形式:对于物理驱动器x,形式为 \\.\Physical
2013-04-24 11:01:54 1790 1
转载 windows的磁盘操作之三——获取和删除磁盘分区信息
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://cutebunny.blog.51cto.com/301216/624079上一节中介绍了如何初始化一块空白的磁盘,并创建分区。那么对于一块已存在分区的磁盘,我们如何获得其分区信息,如何删除其分区信息呢?本节对这两类操作进行讨论。 获得磁盘分区信息的代码如下
2013-04-24 11:01:16 986
转载 windows的磁盘操作之二——初始化磁盘
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://cutebunny.blog.51cto.com/301216/624052上一节中我们介绍了一些基本概念和主要的API,本节开始我们将列举并分析一些实例。本文中的所有代码我都在vs2008下测试过,读者只需要替换少量的宏定义即可编译执行。 面对一块新的磁盘
2013-04-24 11:00:16 795
转载 windows的磁盘操作之一——基本概念
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://cutebunny.blog.51cto.com/301216/624027最近项目中需要在windows系统下与磁盘打交道,用了一个礼拜时间,弄懂了一些基本的概念,记录于此,并以项目中的部分代码作为范例。首先说明一点,本文中使用的不是cmd命令行,基于以下几点
2013-04-24 10:55:02 788
转载 实战DeviceIoControl
实战DeviceIoControl 之一:通过API访问设备驱动程序Q 在NT/2000/XP中,我想用VC编写应用程序访问硬件设备,如获取磁盘参数、读写绝对扇区数据、测试光驱实际速度等,该从哪里入手呢?A 在NT/2000/XP中,应用程序可以通过API函数DeviceIoControl来实现对设备的访问—获取信息,发送命令,交换数据等。利用该接口函数向指定的设备驱动发送正确的控制码及数
2013-04-24 10:44:50 1280
转载 驱动编程学习笔记之IO处理
典型的i/o处理过程转自http://publishblog.blogchina.com/blog/tb.b?diaryID=6476445 =================操作系统将所有的i/o请求都抽象成针对一个虚拟文件的操作,从而掩盖了“一个i/o操作的目标可能不是一个文件结构的设备“这样的事实。这一抽象也使得应用程序对待设备的接口变得泛化。用户模式api
2013-04-18 22:19:18 736
原创 echo查看程序运行返回值
在CMD中运行完EXE程序后,如果我们想看程序的返回值是多少,可以使用如下命令来查看:echo %errorlevel%
2013-04-17 12:46:50 1617
转载 驱动程序时应当避免的事项列表
下面是开发人员在使用 Windows NT 设备驱动程序时应当避免的事项列表: 1. 一定不要在没有标注 I/O 请求数据包 (IRP) 挂起 (IoMarkIrpPending) 的情况下通过调度例程返回 STATUS_PENDING。 2. 一定不要通过中断服务例程 (ISR) 调用 KeSynchronizeExecution。 它会使系统死锁。 3. 一定不要将 Devic
2013-04-16 15:02:04 724
转载 Dump
1. 打印应用层程序崩溃的Dump信息:LONG WINAPI MyUnhandledExceptionFilter(struct _EXCEPTION_POINTERS* ExceptionInfo){WCHAR strDumpFile[1024];SYSTEMTIME time;GetLocalTime (&time);wsprintf (strDumpFile, L
2013-04-16 15:00:02 651
转载 打印调试信息
static void MyOutputDebugString (const wchar_t *format, ...){va_list argp;WCHAR szBuf[1024]; va_start(argp, format);vswprintf_s(szBuf, 1024, format, argp);va_end(argp);OutputDebugStrin
2013-04-16 14:59:32 484
转载 Windows系统默认调试器设置
注册表设置:HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows NT/CurrentVersion/AeDebugHKEY_LOCAL_MACHINE/SOFTWARE/Wow6432Node/Microsoft/Windows NT/CurrentVersion/AeDebug/Debugger两个键值:Auto: 0:
2013-04-16 14:57:59 839
原创 IoCreateNotificationEvent
在做磁盘过滤驱动时候在驱动的DirverEntry里面创建了一个事件,一启动就BSOD了,定位到EVENT上去了,可是测试代码OK,原因是测试的驱动是在系统启动后的事了。后来再看原来是这下面这个原因,内核EVNET的创建一定要在win32子系统初始化完成后才能进行创建 ,后创建一个线程,创建启动OKThe \\BaseNamedObjects object directory is n
2013-04-16 14:56:40 1080
转载 writeLog
static void writeLog(const char *str) // 写字符串到文件,bLog表明是否为日志文件{ FILE *fp = fopen("c:\\monitor.txt", "a+"); char curTime[100] = {0}; time_t t; struct tm *tp; t = tim
2013-04-16 14:52:56 1220
转载 DbgPrint
DbgPrintNTSTATUS status;DbgPrint("status = %x\n", status);ULONG addr;DbgPrint("status = 0x%08x\n", addr);ANSI_STRING as_str;DbgPrint("%Z\n", &ansiStr);UNICOD
2013-04-16 14:50:36 1140
转载 windbg !gle
0:000> !gleLastErrorValue: (Win32) 0 (0) - The operation completed successfully.LastStatusValue: (NTSTATUS) 0 - STATUS_WAIT_0 另外,WinDBG 还提供 !error 命令帮你把错误码映射成文字。0:000> !error 0x2Error code
2013-04-16 14:46:09 809
转载 interrupt
x86: _asm { CLI //dissable interrupt MOV EAX, CR0 //move CR0 register into EAX AND EAX, NOT 10000H //disable WP bit MOV CR0, EAX
2013-04-16 14:44:18 636
转载 WinExec,ShellExecute ,CreateProcess启动进程的不同实现
WinExec:WinExec 两个参数,前一个指定路径,后一个指定显示方式。INT WinExec( LPCSTR lpCmdLine, // 命令路径 UINT uCmdShow // 显示方式 );// 以最大化的方式打开Test.exeWinExec("D://Program Files//Test//Test.exe
2013-04-16 14:42:42 1058
转载 IRP
#define IoSkipCurrentIrpStackLocation( Irp ) { \ (Irp)->CurrentLocation++; \ (Irp)->Tail.Overlay.CurrentStackLocation++; } #define IoCopyCurrentIrpStackLocationToNext( Irp ) { \ PIO
2013-04-16 14:39:22 733
转载 PCR
当线程在内核模式下执行时,在FS寄存器中加载的是选择子30,用于寻址PCR结构体(基址0xFFDFF000,界限0x00001FFF)。在NTDDK.H中远没有描述结构体所有的成员,只是其中不多的部分。为了说明PCR中的成分信息,这里列出用于i386的结构体(Windows NT 4.0)typedef struct _KPCR { // Size: 0xB
2013-04-16 14:38:34 761
转载 PEB
typedef struct _PEB { // Size: 0x1D8/*000*/ UCHAR InheritedAddressSpace;/*001*/ UCHAR ReadImageFileExecOptions;/*002*/ UCHAR BeingDebugged;/*003*/ UCHAR SpareBool;
2013-04-16 14:37:45 662
转载 TEB
typedef struct _TEB { // Size: 0xF88/*000*/ NT_TIB NtTib;/*01C*/ VOID *EnvironmentPointer;/*020*/ CLIENT_ID ClientId; // PROCESS id, THREAD id/*028*/ HANDLE ActiveRpcHan
2013-04-16 14:37:20 774
转载 SHE
typedef struct _EXCEPTION_REGISTRATION_RECORD{ struct _EXCEPTION_REGISTRATION_RECORD * pNext; FARPROC pfnHandler;} EXCEPTION_REGISTRATION_RECORD, *PEXCEPT
2013-04-16 14:36:52 676
转载 FastIo
由于你的驱动将要绑定到文件系统驱动的上边,文件系统除了处理正常的IRP 之外,还要处理所谓的FastIo.FastIo是Cache Manager 调用所引发的一种没有irp 的请求。换句话说,除了正常的Dispatch Functions 之外,你还得为DriverObject 撰写另一组Fast Io Functions.这组函数的指针在driver->FastIoDispatch.首
2013-04-16 12:32:35 1782
winhex编辑器
2014-03-29
w32dsm静态反汇编工具
2014-03-29
OllyDBG_1.10
2014-03-29
PEiD 0.94版本
2014-03-29
漫谈兼容内核
2013-05-02
bochs 2.6 source code
2012-09-27
Import REConstructor V1.4和V1.6两个版本
2009-02-01
万能图标提取器 V1.0(100%不变色)
2009-02-01
win2000API学习资料
2009-02-01
Asp 文件加密器(MyAsp) v2.0,网马免杀,免杀
2009-02-01
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人