自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

稳到死内核

代码敢不敢再猥琐一点

  • 博客(6)
  • 收藏
  • 关注

原创 一个超简单的ring3与ring0通信的例子

<br /> 实际上是我想写一个隐藏文件的驱动,结果发现不是那么简单的事情,于是淡定下来先一步步走好吧.<br /> 我觉得我在学习一个东西时,喜欢把它脱得一丝不挂.所以不会有什么错误判断啊之类的.在能实现功能的前提下,尽量一切从简.<br /> 我觉得这和我的性格有关,shit,扯远了.<br /> <br />-----------------------------------------------分割线------------------------------------------------

2011-04-26 14:13:00 3696 1

原创 关于前篇提到的几个疑问的个人理解

1.PsGetCurrentProcess()获取的当前进程是哪个进程? 这个根据执行环境而定。对于DriverEntry,则看是谁最终负责加载的驱动:如果是服务式加载,那么得到的是Sytem进程的EPROCESS;如果是采用NTDLL.DLL中的ZwSetSystemInformation来实现加载,那么得到的EPROCESS则是调用此函数的任意进程。(卸载也应该是一样的)对于分发函数。分发函数的执行方式是系统回调,因此ring3上任何进程都可能触发这个回调,所以PsGetCurrentProcess()

2011-04-26 10:33:00 658

原创 关于代码简洁性与可读性的悖论

<br /> 本来打算博客只记录自己学内核的历程,不过这个好歹和昨天的文章有点关联性,就一起发上来吧。<br /> <br />参看《c专家编程》,作者认同的是代码的可读性,而不应该尽量简洁,例如让我感触最深的就是结构体尽量不要通过typedef定义别名减少每次定义变量时一个"struct”。我认为这是很有道理的,尤其是编写大程序的时候,要相信,随着bug和新需求的出现,后期维护的时长很可能大于软件的编写时长,我们的目光应该看得更远。<br /> <br />今天看国人的书《高质量程序设计指南》,关于后面的

2011-04-21 10:31:00 1253

原创 DKOM.修改双向链表隐藏进程.

DKOM即"直接内核对象操作",关于修改双向链表隐藏进程.网上和书刊上几乎都照抄了>一书,我发牢骚的是老外在修改链表时的精简代码看得莫名其妙.可能我太菜了吧对数据结构不熟悉,不过记得>的作者都说了,一行代码尽量干一件事情,表达一目了然.所以我自己重新写了一份.#include "ntddk.h"void Unload(IN PDRIVER_OBJECT DO){ DbgPrint("this is Unload!");}char* GetProcessNameByEPROCESS(ULONG ulAddr)

2011-04-20 17:08:00 1638

原创 关于vs编译的驱动体积大小问题

昨天用vs编译的驱动发现比同样代码用WDK自带编译的几乎大出一倍体积。考虑以前对ring3程序体积研究,首先想到的是pe文件对齐问题。于是在链接命令处加上 /align:16.编译后果然文件一下就从4K变成了1K多一点,不过先别高兴得太早,丢到虚拟机一跑,BSOD了,fuck!于是加为32字节,这次加载时没蓝屏,但是卸载的时候又BSOD了,再次fuck,我调成64字节之后终于好了,再看体积比WDK编译的仍旧要小几百字节呢。附网上找到的资料:  这么一个简单的玩意儿, GCCDDK编译后竟然达到24K, 如去

2011-04-20 13:45:00 951

原创 编写驱动的环境搭建

从编写到编译链接都有好几种方法,不过个人比较喜欢用vs的环境.再搭配上visual assist 让写驱动也不会那么枯燥了.关于vs的设置参考别人方法修改如下:1、安装了D/WDK,目录名字不要带空格;2、 在VS2005中新建立一个win32空项目,在工具栏选择"生成|配置管理器",在活动解决方案配置中 新建一个方案名(不要Debug、Release);3、选择 "工具|选项"菜单,选择"项目和解决方案" 选项卡,选择"VC++目录"选项卡在"显示以下内容的目录"下拉菜单中选择"包含文件"菜单 添加"(D

2011-04-19 14:30:00 1856

空空如也

空空如也

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

TA关注的人

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