4 zuishikonghuan

尚未进行身份认证

暂无相关简介

等级
TA的排名 1w+

MinGW 与 MSVC 生成 DLL 各种情况的折腾笔记

写这篇博客,主要是刚折腾MinGW,相关内容网上的资料不全,而且错误很多其实之前我根本没把这个当回事,我就想MinGW跟Linux上的GNU编译器不会有差别,但是事实却不是这样。。。提示:所有代码均使用__stdcall安装MSVC和MinGWMSVC:安装VisualStudio,之后即可在开始菜单中找到“VisualStudio开发人员命令提示”,启

2016-07-15 18:43:55

Ring3 下 API Inline Hook 优化方案探索与实现

本博文由CSDN博主zuishikonghuan所作,版权归zuishikonghuan所有,转载请注明出处:http://blog.csdn.net/zuishikonghuan/article/details/51302024以前写过两篇“[Win32]APIHook(1)在32/64位系统上的实现”博客,介绍并给出了APIinlinehook代码,如下:bl

2016-05-03 09:30:33

驱动开发(13)IRP 的异步完成和 CancelRoutine

本博文由CSDN博主zuishikonghuan所作,版权归zuishikonghuan所有,转载请注明出处:http://blog.csdn.net/zuishikonghuan/article/details/51301922在之前的博文中,我们对于IRP,都是同步完成的,但是Windows对异步操作很友好,我们来看看如何异步完成IRP。在应用程序中异步访问设备在开始之前,我认为有必要提

2016-05-03 09:26:53

驱动开发(12)内核中的多线程和同步对象

本博文由CSDN博主zuishikonghuan所作,版权归zuishikonghuan所有,转载请注明出处:在内核模式下创建线程在驱动程序中创建线程的方法是调用PsCreateSystemThread内核函数,此函数即可以创建系统线程,也可以创建用户线程。此函数的原型如下:NTSTATUSPsCreateSystemThread(_Out_PHANDLE

2016-05-03 09:04:24

驱动开发(11)中断请求级

本博文由CSDN博主zuishikonghuan所作,版权归zuishikonghuan所有,转载请注明出处:http://blog.csdn.net/zuishikonghuan/article/details/51062287“中断”是一个非常重要的概念,在80x86的设备上,Windows引入了“中断请求级”(IRQL)这一个概念,(在x86平台)其中0-2为软件中断,3-31

2016-05-02 08:35:44

驱动开发(10)直接I/O和内存描述符表

本博文由CSDN博主zuishikonghuan所作,版权归zuishikonghuan所有,转载请注明出处:http://blog.csdn.net/zuishikonghuan/article/details/50643005在上篇博文中,我们实现了在驱动程序中处理设备收到读写I/O请求,这个请求我们是使用缓冲I/O处理的。在上一篇中,我已经详细解释了使用缓冲I/O的原因,在这里简

2016-03-18 16:52:27

内核编程之SSDTHook(3)Hook NtCreateSection监控所有可执行模块加载

本博文由CSDN博主zuishikonghuan所作,版权归zuishikonghuan所有,转载请注明出处:http://blog.csdn.net/zuishikonghuan/article/details/50924829在上两篇博文中,我介绍了SSDTHook的原理,并给出了一个实例--通过HookNtOpenProcess来实现进程保护:http://blog.csdn.net/

2016-03-18 16:51:54

内核编程之SSDTHook(2)Hook NtOpenProcess实现进程保护

本博文由CSDN博主zuishikonghuan所作,版权归zuishikonghuan所有,转载请注明出处:上一篇博文“内核编程之SSDTHook(1)原理(地址:)”中,介绍了SSDTHook的原理,这一篇博文,我们来写一个实例,通过HookNtOpenProcess来的实现进程保护。我之前写过两篇Ring3下的APIInlineHook的博文,这两篇博文通过Inline

2016-03-11 14:20:36

内核编程之SSDTHook(1)原理

本博文由CSDN博主zuishikonghuan所作,版权归zuishikonghuan所有,转载请注明出处:说驱动开发这么长时间了,也玩玩内核钩子,钩子(Hook)技术是一种截获对某一对象访问的技术,不仅在Windows平台,Linux平台上也有Hook技术。Hook技术种类繁多,实现细节也不同,还可以灵活使用。我之前写过两篇Ring3下的APIInlineHook的博文,这

2016-03-11 14:19:58

驱动开发(9)处理缓冲I/O设备的读写请求

本博文由CSDN博主zuishikonghuan所作,版权归zuishikonghuan所有,转载请注明出处:http://blog.csdn.net/zuishikonghuan/article/details/50413094在上面的几篇博文中,介绍了IRP与派遣函数,通过例子“磁盘设备的绝对读写”演示了在应用程序中向一个设备发出I/O请求,并实现了驱动程序中处理一个I/O请求——

2016-01-03 16:32:16

驱动开发(8)处理设备I/O控制函数DeviceIoControl

本博文由CSDN博主zuishikonghuan所作,版权归zuishikonghuan所有,转载请注明出处:在上面的两篇博文中,介绍了IRP与派遣函数,以及我们通过了一个例子“磁盘设备的绝对读写”来演示了在应用程序中是如何向一个设备发出I/O请求的。这篇博文将演示在驱动程序中处理一个非常简单的I/O请求——由DeviceIoControl这个Win32API经过一系列的调用,在内核中

2016-01-03 16:31:37

[Win32] 直接读写磁盘扇区(磁盘绝对读写)

本博文由CSDN博主zuishikonghuan所作,版权归zuishikonghuan所有,转载请注明出处:正讲着驱动开发呢,这里突然插一篇Win32的博文,其实,还是做引子,上一篇博文“IRP与派遣函数”中,我们知道了驱动程序需要处理I/O请求,我们先来看看怎么发出一个I/O请求。一般的程序不会直接去访问磁盘,毕竟有文件系统(FileSystem)帮助我们轻松地组织文件,但是有

2016-01-03 16:31:00

驱动开发(7)IRP与派遣函数

在上一篇博文中,介绍了NT驱动的基本结构,这几篇博文,博主来说说驱动开发的一个核心内容——如何处理I/O请求。为何要处理I/O请求?因为通常一个驱动程序是为了控制硬件而设计的(虽然没有对应具体硬件的驱动远比有对应具体硬件的驱动要多得多),可以说,是操作系统与硬件通信的桥梁。而I/O操作是控制硬件的基本方法(不考虑对CPU和内存的操作),而驱动程序就是为操作系统提供了一种抽象,驱动程序如

2016-01-03 16:30:19

驱动开发(6)NT驱动的基本结构

本博文由CSDN博主zuishikonghuan所作,版权归zuishikonghuan所有,转载请注明出处:http://blog.csdn.net/zuishikonghuan/article/details/49047055在之前的一篇博文“驱动开发(2)第一个NT驱动和NT驱动的编译”(http://blog.csdn.net/zuishikonghuan/article/detail

2015-11-08 13:25:55

[Win32] ShellHook的实现

启动Windows,加载Win32子系统,登录一个用户会话后,会启动Shell程序,默认是explorer.exe,就是我们看到的桌面和任务栏等,其实Shell是可以自定义的,我们完全可以自己编写一个Shell取代系统的Shell。下面我们来看看编写WindowsShell的核心技术之一——ShellHook。ShellHook是什么?当一个窗口创建、激活、关闭时,explorer总

2015-11-08 13:25:01

驱动开发(5)内核中的字符串

在驱动开发中,内核函数使用的字符串不再是应用程序使用的Win32子系统API和NativeAPI中的char*和wchar_t*,而是内核Unicode字符串UNICODE_STRING。内核字符串有两种,ANSI字符串是ANSI_STRING,Unicode字符串是UNICODE_STRING,他们的结构是这样定义的:

2015-11-08 13:23:40

驱动开发(4)内核中的内存分配和错误码

在驱动开发中,我们不应该使用C/C++运行时函数中的malloc或者calloc函数分配内存,更不应该使用new关键字,因为内核中的内存分配需要特殊处理。在应用程序中,每个应用都有2G的虚拟内存,因此内存并不紧张,而所有的驱动程序共用内核模式的2G虚拟内存,因此内核中的资源非常宝贵,应该尽量节省。更可怕的是内存泄露,应用程序即使发生了内存泄露,在其结束时操作系统可以通过进程上下文中的虚拟内

2015-11-08 12:36:53

驱动开发(3)使用SCM加载NT驱动(用应用程序加载驱动)

在上一篇中,我简单介绍编写了一个NT驱动空壳,这一篇中,将介绍如何自己编写一个驱动程序加载器,即使用编程的方法加载驱动,而不是使用工具。我在上一篇中也提到了,驱动程序是通过服务加载的,我以前写过SCM(服务控制管理器)API的文章,详细介绍各函数的具体用法,详见:[Win32]SCManager服务控制管理器API(1):http://blog.csdn.net/zuishi

2015-10-02 11:02:59

驱动开发(2)第一个NT驱动和NT驱动的编译

在上一篇中,我简单介绍了驱动开发的基础知识,这一篇中,将介绍编写一个NT空壳驱动(驱动基础框架)一、驱动入口驱动程序的入口点是DriverEntry,此函数的原型是:extern"C"NTSTATUSDriverEntry(PDRIVER_OBJECTpDriverObject,PUNICODE_STRINGpRegistryPath)参数1:系统发来的驱动对象

2015-10-02 10:59:21

驱动开发(1)基础知识

驱动程序是操作系统和硬件通讯的桥梁,同时,驱动程序可以实现很多特殊功能,比如,虚拟光驱(虚拟设备),内核级hook,文件系统透明加密(过滤驱动),修改Windows内核等等并非所有驱动程序都必须由设备的设计方编写。如果设备根据已发布的硬件标准来设计。这时驱动程序可以由Microsoft编写,设备设计者无须提供驱动程序。并非所有的驱动程序都与硬件关联。某些驱动程序与任何硬件设备根

2015-10-02 10:51:21

查看更多

勋章 我的勋章
    暂无奖章