Windows内核定时器
常用的内核定时器有两种:IoInitializeTimer、IoStartTimer和IoStopTimer三个函数的IO定时器;KeInitializeTimer、KeSetTimer和KeCancelTimer三个函数的DPC定时器。前一套更简单,后一套功能更强大一些。
IO定时器
IO定时器每隔1s触发一次自己定义的IO例程,可以用来做一些需要特定频率的事情。Windbg下看一下IO定时器三个函数的实现,比较简单。看一下函数原型和必要的结构。
Ma' in wojel ba'ax ka lelo' u k'áat u ya'al
常用的内核定时器有两种:IoInitializeTimer、IoStartTimer和IoStopTimer三个函数的IO定时器;KeInitializeTimer、KeSetTimer和KeCancelTimer三个函数的DPC定时器。前一套更简单,后一套功能更强大一些。
IO定时器每隔1s触发一次自己定义的IO例程,可以用来做一些需要特定频率的事情。Windbg下看一下IO定时器三个函数的实现,比较简单。看一下函数原型和必要的结构。
虽然现在的保护主要是注册码机制,但反调试仍然是很有趣的值得学习的技术。从最简单的WIN32 API反调试到ring0的各种HOOK,Anti和Anti-Anti技术互相促进,很有意思。
IRP由IO管理器创建用来代表一个IO操作,它在ring0的地位类似消息于win32应用程序的意义,是信息交互的单位。IRP是学习Windows驱动开发的基础,这里介绍一下IRP的结构、请求方式以及IRP在分层驱动中的传递。
周末去了趟重庆,跟一群小伙伴们参加360办的第二届全国大学生信息安全技术大赛(名字洋气但不够风骚),我跟菊爷、伟哥一队。
周五下午很晚才到重庆。因为前期安排不是很妥当,所以吃饭、住宿和路径问题没能马上解决。我们先坐轻轨到四公里,然后从四公里走到五公里,想赶快打个车去重邮,但是发现十三个人想在晚高峰打车真是不太容易,所以决定还是先吃晚饭。不知为何去了一家很经典的串串店:小却面积大、破、人多、热、顶棚是塑料、门口有水沟。一进门就看到一屋子女生,超过了30个,这种情况我已经好多年没见到了,因此诧异的尖叫一声。吃的并不是很爽,一来太辣,二来串串不是很好,吃得没感觉,我觉得我吃了超过一百五十串,还是没怎么饱。
上回提到过,用户模式Hook功能有限,而且容易被发现。到了ring0,Hook仍然是很多技术的基础。这里简单介绍几种常见的内核hook:SSDT Hook、IDT Hook、SYSENTER Hook、IAT Hook、导出表Hook、IRP Hook、Inline Hook和几种门的添加。这并不是很严格的分类方式,各种技术也可能会交叉灵活使用。
接着说内核Hook中的IAT Hook、导出表Hook、IRP Hook、Inline hook和几种门的添加。
内核模式的IAT Hook要比在ring3下实现方便很多,PsSetImageLoadNotifyRoutine注册一个回调函数,进程加载dll时会调用该函数。函数原型如下:
写了几个简单程序,用于实现用户模式IAT Hook和dll注入,方便初学者学习。学东西的时候没有代码简直痛苦,看半天感觉无从下手,希望能帮助到大家。
Intel x86通过环实现访问控制,ring0~ring3四个级别,不同特权的程序运行在不同的环,高环程序不能访问低环数据,强行访问可能产生中断;同样,有些指令只能在特定环执行,如cli、sti、in、out只能运行在ring0。这是在硬件层面的权限控制,但是Windows直到NT系列内核才真正将CPU环机制利用起来,为了兼容,只使用ring0和ring3,内核模式在ring0,用户模式在ring3。操作系统以Intel X86环机制为基础,实现自己的访问控制,只允许某些特定ring3代码访问ring0。
对Windows系统结构做个总结,主要写整体结构,并不涉及各个组件的具体实现和其他细节。
Windows可以分为用户模式和内核模式。
用户模式主要包括四个部分:系统进程、服务进程、用户应用程序和环境子系统。系统进程包括登录进程、会话管理器等;服务进程为Windows服务提供寄宿;用户应用程序是最常见的进程,通过调用环境子系统提供的子系统dll间接调用内部函数;环境子系统实现操作系统对外接口等。
原计划在我20岁的时候好好庆祝一番,或者配个绳子当终生的项链,或者胳膊上烙一圈儿表示已经成年,或者买辆摩托车狂奔一天。时间不太巧,生日赶在了明天,也就是清明小假期之后第一天。往往放假之后状态不是很好,到了明天可能什么都不想做,还是提前写点儿东西做个表示,纪念20岁之前的最后一天。
小时候我很腼腆,成天跟着我妈,还经常穿女孩子的衣服,也不太爱说话,胆子小。有一个人上山砍树把鼻子碰到了,贴了一个胶布,我看到人家就吓哭了,很久之后都不敢听人提他的名字,提起来就哭。总是觉得自己很弱小,跟人家不一样。人家能吃三碗饭,我连一碗都吃不下去;人家能跟着家里人去掰玉米,我连玉米是什么时候收都不知道;人家能上山捉蝎子、套兔子,我上山走到一半就吓得赶紧回来怕迷路;人家能刨15块钱一斤的药材,我连两毛钱一斤的长什么样儿都不确定;人家每天能挖百十斤铁,我始终不愿意拿起锄子按上吸铁石。总之就是觉得我很弱小。