Windows
文章平均质量分 66
aksnzhy
这个作者很懒,什么都没留下…
展开
-
试了一下1986年的“挑战比尔盖茨”编程竞赛
1986年10月3日,微软举办了一场特别的编程竞赛-————“挑战比尔盖茨”。比尔盖茨用QuickBASIC2.0作为编程工具,程序员可以选用任何他们想用的工具。很明显,微软就是在炫耀自己工具的开发效率之高; 题目要求: 创建一个有四个窗口的多线程仿原创 2011-09-11 13:19:31 · 1581 阅读 · 0 评论 -
WIN7+WDK7600+VS2008+DDKWizard搭建内核驱动开发环境
下载 WDK7600加载虚拟光驱,安装该环境,注意选择“完全安装”,安装到一个简单路径,例如C:\WinDDK 下载 ddkbuild_cmd和ddkbuild_bat两个文件,将其拷贝到WDK安装目录下(C:\WinDDK) 设置环境变量 W7BAS原创 2011-10-09 23:03:37 · 4504 阅读 · 0 评论 -
<寒江独钓>Windows内核安全编程__Ramdisk源码解读
这篇文章来介绍一下WDK中提供的一个案例源码--Ramdisk虚拟磁盘。这个例子实现了一个非分页内存做的磁盘储存空间,并将其以一个独立磁盘的形式暴露给用户,用户可以将它格式化成一个Windows能够使用卷,并且像操作一般的磁盘卷一样对它进行操作。由于使用了内存作为虚拟的存储介质,使这个磁盘具有一个显著的特点,性能的提高。这个例子所使用的微软WDF驱动框架。入口函数1.入口函数的定义任何原创 2011-10-20 11:58:09 · 4743 阅读 · 0 评论 -
VS开发Windows应用程序建错工程后的几种解决方案
开发Windows应用程序的程序员经常会有建错工程的时候,例如开发人员可能选择一个新的Win32应用项目,但创建的入口点函数是main。生成应用程序时,编译器会报告一个链接错误,因为Win32应用程序会设置/SUBSYSTEM:WINDOWS链接器开关,但WinMain或wWinMain函数并不存在。此时,开发人员有以下4种选择。1.把main函数改为WinMain。这通常不是最佳方案原创 2011-11-17 10:26:54 · 1048 阅读 · 0 评论 -
如何获得当前运行模块在进程地址空间的位置
(w)WinMain的hInstanceExe参数实际值是一个内存基地址;系统将可执行文件的映像加载到进程地址空间中的这个位置。例如,系统打开可执行文件,并将它加载到地址0x00400000,则(w)WinMain的hInstanceExe参数值为0x00400000.为了知道一个可执行文件或DLL文件被加载到进程地址空间的什么位置,可以使用GetModuleHandle函数来返回一个原创 2011-11-17 11:12:12 · 1924 阅读 · 0 评论 -
<寒江独钓>Windows内核安全编程__具有还原功能的磁盘卷过滤驱动
磁盘过滤驱动的概念1.设备过滤和类过滤在之前的文章里,我们已经介绍过滤的概念,所谓过滤技术就是在本来已有的设备栈中加入自己的一个设备。由于Windows向任何一个设备发送IRP请求都会首先发送给这个设备所在设备栈的最上层设备,然后再依次传递下去,这就使得加入的设备在目标设备之前获取Irp请求称为可能,这时候就可以加入自己的处理流程。在这里把插入设备栈的用户设备叫做过滤设备,建立这个设备并使原创 2011-10-27 19:33:05 · 7933 阅读 · 2 评论 -
提前透露一下今年的参赛软件
即《财富2011》之后,本人全力打造的又一力作即将诞生-------“防鲨网”Windows内核安全监控系统~~~这是一款强劲的断黑软件,随着内核级病毒的逐渐普及,传统的查杀已经很难完成对病毒,木马的有效查杀,病毒由以前类似于“熊猫烧香”这样的ring3级病毒逐渐向类似于“BIOSKIT”这样的内核级病毒演变! 我们的个人PC,系统内核变得千疮百孔。而“防鲨网”Windows内核安全监控系原创 2011-10-30 21:02:20 · 1291 阅读 · 0 评论 -
今年的参赛作品——SockMon网络安全监控系统
SockMon网络安全监控系统 软件简介:SockMon(SocketMonitor)网络安全监控系统是一款为电脑专业人员打造的一款出色的安防监控软件。在如今这个恶意软件,攻击,木马,病毒泛滥的年代,它就像您电脑的贴身保镖一样保护着您的电脑和个人信息的安全。随着人类IT技术的不断进步,恶意软件和攻击已从原有的类似于“熊猫烧香”这样的Ring3级程序,进步到类似于“BIOSKIT”这样的原创 2011-12-03 17:52:12 · 2411 阅读 · 0 评论 -
高级网络管理期末考试写的两个程序——2011年的最后两个程序
这次高级网络管理课的期末考试竟然是写两个程序,不用笔试,这对我来说真的是很好的消息。老师是从军工企业来的,比较注重编程能力。不过这也难为了一些背书背了很久的女生。第一个题目是写一个Windows客户端向Linux服务器发送消息配置Linux服务器的IP地址,子网掩码,网关,DNS等。第二个题目是写一个基于Windows SNMP的局域网管理系统。个人比较兴奋的是通过这次考试逐渐爱上了以原创 2011-12-21 11:30:14 · 1119 阅读 · 0 评论 -
C++反汇编之“认识启动函数,找到用户入口”
VC++开发的程序,在调试时总是从main或者WinMain开始的。初学编程时老师一定告诉过我们这是程序的入口,也就是程序的第一条指令执行处。这个认识其实是错误的,在他们之前还要更早的调用者。 在应用程序被加载时,操作系统会分析执行文件内的数据,分配相关资源,读取文件中的代码和数据适合的内存单元,然后才是执行入口代码,入口代码其实并不是main或WinMain,通常是mainCR原创 2012-01-28 16:35:04 · 2570 阅读 · 1 评论 -
告诉你为什么开灯时会导致鼠标的瞬间失灵
在宿舍观察了很久,发现一个现象:每当舍友打开电灯,或者夏天打开自己桌子上的小电扇时,总是会导致鼠标瞬间的失灵,然后又恢复。电脑显示驱动程序安装成功。为什么会有这样的现象,本人用不同USB设备在不同操作系统下进行试验,得出结论:当打开开关的瞬间,电器导线从没有电流到有电流,学过物理的人都知道这时在导线周围会产生磁场,与此同时,如果鼠标导线达到磁场范围之内,由于磁通量的瞬时改变,依据电磁感原创 2011-12-31 22:13:59 · 8190 阅读 · 0 评论 -
Windows8 + Visual studio 11 体验报告
经过了西大的“龟速”校园网4天的下载,今天终于算是把Win8下下来了...作为Windows平台的死忠开发者,深表惭愧..体验了一段时间,加上网上之前的一些评论,放一篇日志来评价一下Win8的初试感觉。文章分为 “Windows8 用户体验”和“Windows8开发者体验”两部分。在用户体验部分,着重分析了Metro这一新的用户体验。而在开发者部分,则着重分析了Visual Studio 11的一原创 2012-03-07 12:26:27 · 3075 阅读 · 0 评论 -
<学习笔记>Windows驱动开发技术详解__IRP的同步
对设备的任何操作都会最终转化为IRP请求,而IRP一般都是由操作系统异步发送的。异步处理IRP有助于提高效率,但是有时异步处理会带来逻辑上的错误,这时需要将异步的IRP同步化。将IRP同步化的方法有StartIO例程,使用中断服务例程等。应用程序对设备的同步异步操作原创 2011-10-08 16:58:49 · 4503 阅读 · 0 评论 -
<寒江独钓>Windows内核安全编程__键盘过滤之内核级Hook(二)
Windows内核安全编程__键盘过滤内核级Hook(二)如果不想让键盘过滤驱动程序或回调函数首先获得按键,则必须比端口驱动更加底层一些。早期版本的QQ反盗号驱动的原理是这样的:用户要输入密码时(比如把输入焦点移动到了密码框里),就注册一个中断服务来接管键盘中断,比如0x原创 2011-10-17 09:57:38 · 3760 阅读 · 0 评论 -
实习的时候拿C++写的游戏《星际夺宝》
图:开始界面主界面结束界面地图编辑器原创 2011-09-11 17:46:52 · 1973 阅读 · 1 评论 -
<学习笔记>Windows驱动技术开发详解__驱动程序的基本结构
驱动程序中重要的数据结构驱动对象:DRIVER_OBJECT每个驱动程序都会有唯一的驱动对象与之相对应,这个驱动对象是在驱动加载的时候,被内核中对象管理程序创建的。DRIVER_OBJECT数据结构:typedef struct _原创 2011-09-11 23:10:25 · 2504 阅读 · 0 评论 -
<学习笔记>Windows驱动开发技术详解__Windows内存管理
作为开发Windows驱动程序的程序员,需要比普通程序员更多了解Windows内部的内存管理机制,并在驱动程序中有效地使用内存。在驱动程序的编写中,分配和管理内存不能使用熟知的Win32 API函数,取而代之的是DDK提供的高效内核函数。C语言和C++中大多数关于内存操作的运行时原创 2011-09-15 21:36:27 · 3843 阅读 · 0 评论 -
<学习笔记>Windows驱动开发技术详解__Windows内核函数
这篇文章主要复习Windows内核中字符串处理函数,文件读写函数,注册表读写函数。内核模式下的字符串操作:1.ASCII字符串和宽字符串在应用程序中,往往使用两种字符:一种是char型字符串,负责记录ANSI字符集。它是指向一个ch原创 2011-09-20 10:33:30 · 3026 阅读 · 0 评论 -
<学习笔记>Windows驱动开发技术详解__派遣函数
派遣函数是Windows驱动程序中的重要概念。驱动程序的主要功能是负责处理I/O请求,其中大部分I/O请求是在派遣函数中处理的。用户模式下所有对驱动程序的I/O请求,全部由操作系统转换为一个叫做IRP数据结构,不同的IRP会被“派遣”到不同的派遣函数中。IRP与派原创 2011-09-23 10:32:44 · 4445 阅读 · 2 评论 -
<寒江独钓>Windows内核安全编程__一个简单的Windows串口过滤驱动程序的开发
在Windows系统上与安全软件相关的驱动开发过程中,“过滤(filter)”是极其重要的一个概念。过滤是在不影响上层和下层接口的情况下,在Windows系统内核中加入新的层,从而不需要修改上层的软件和下层的真实驱动,就加入了新的功能。 过滤的概念和基础 1.设备原创 2011-10-10 23:09:45 · 7864 阅读 · 2 评论 -
<学习笔记>Windows驱动开发技术详解__驱动程序的同步处理
如果驱动程序没有很好地处理同步问题,操作系统的性能就会下降,甚至出现死锁等现象。基本概念1.问题的引出下面这段代码:int number;void Foo(){ number++; //做一些事情 number--原创 2011-09-28 18:32:08 · 6162 阅读 · 2 评论 -
蛋疼的ObReferenceObjectByName调试
今天花了近一天的时间都在调试ObReferenceObjectByName这个内核函数,结果却无比狗血。故写篇文章记录一下这一天蛋疼的调试记录。其实说是调试,其实是一直编译连接不通过。今天在研究楚狂人(其实是360的大牛wowocock写的代码,楚狂人进行了简化处理)的键盘过原创 2011-10-11 19:49:37 · 6425 阅读 · 3 评论 -
Windows核心编程__错误处理
文章内容1.定义自己的错误代码2.ErrorShow示例程序在深入讨论Windows提供的诸多特性之前,应该先理解各个Windows函数是如何进行错误处理的。调用Windows函数时,它会先验证我们传给它的参数,然后再开始执行任务。如果传入的参数无效,或者由于其他原创 2011-10-13 12:16:47 · 1106 阅读 · 0 评论 -
<寒江独钓>Windows内核安全编程__传统键盘过滤程序
技术原理1.预备知识何为符号链接?符号链接其实就是设备的一个“别名”。在应用程序中想要访问设备一般要通过符号链接来完成,而不是设备名本身。ZwCreateFile是很重要的函数。同名的函数有两个:一个在内核中(ntknos.exe),一个在应用层(ntdll.dll)原创 2011-10-13 12:15:31 · 4641 阅读 · 0 评论 -
<寒江独钓>Windows内核安全编程__键盘过滤之内核级Hook(一)
Hook分发函数前一篇文章讲述了进行键盘过滤,截取用户输入的方法。本篇文章开始更加深入地讨论键盘的过滤与反过滤对抗。无论是过滤还是饭过滤,原理都是过滤,取胜的关键在于谁第一个得到信息。一种方发是Hook分发函数,即将键盘驱动的分发函数替换成自己的函数用来达到过滤的目的。原创 2011-10-14 20:03:46 · 5533 阅读 · 1 评论 -
走近汇编理解与内核编程
2006年,我工作时的座位坐在wowocock旁边。wowocock写代码的时候代码风格一团糟。满篇都是混乱型的命名、超级跨全工程的全局变量,诡异的跳转。而且屡教不改。但是调程序却很牛,开着WinDbg,基本上不用看源码,也知道发生了什么。因为不用看源码,所以看Windo转载 2011-10-14 22:33:05 · 1339 阅读 · 0 评论 -
深入浅出Windows PE(一) PE文件头
深入浅出Windows PE(一) PE文件头 PE文件头记录了PE文件中的所有数据组织方式,它类似于一本书的目录,通过目录我们可以快速定位到某个具体的章节;通过PE文件头部分对某些数据结构的描述,我们也可以定位到那些不在文件头部的信息,比如导入表数据,导出表数据,资源表数据等。1.与PE有关的基本概念地址PE中涉及的地址有四类,他们分别是:* 虚拟内存地址(VA)原创 2012-04-10 22:29:08 · 8592 阅读 · 0 评论