随笔分类 -  Windows内核

Windows异常分发
摘要:当有异常发生时,CPU会通过IDT表找到异常处理函数,即内核中的KiTrapXX系列函数,然后转去执行。但是,KiTrapXX函数通常只是对异常做简单的表征和描述,为了支持调试和软件自己定义的异常处理函数,系统需要将异常分发给调试器或应用程序的处理函数。 为了更好的管理异常,Windows系统定义了 阅读全文

posted @ 2016-07-20 22:28 zbility 阅读(2500) 评论(0) 推荐(0)

禁用copy on write实现全局EAT HOOK
摘要:以前写过一个,但是一不小心删除了,哎,就当再次复习复习吧。 首先抛出一个有意思的问题: 已知所有Windows可执行文件exe都会链接子系统ntdll.dll,那么真实内存中有几份ntdll.dll? 答案很显然只有一份!所有的exe都是映射的同一份物理内存! 那么又有一个新问题: 我如果对一个进程 阅读全文

posted @ 2016-07-11 16:34 zbility 阅读(1187) 评论(0) 推荐(0)

Windows线程控制
摘要:多线程无疑带来了很多方便,提高了很多开发效率,但是同时也带来了很多问题。 举个栗子: 这段程序的输出结果是多少呢? 按照常理来说不难得出结论:m与n都是20000 可是真正运行结果呢? 结果令人大吃一惊,而且每次结果都不相同!为什么会出现这种情况呢? A线程在访问全局资源的时候并不能控制B线程对全局 阅读全文

posted @ 2016-07-10 20:57 zbility 阅读(632) 评论(0) 推荐(1)

利用模块加载回调函数修改PE导入表实现注入
摘要:最近整理PE文件相关代码的时候,想到如果能在PE刚刚读进内存的时候再去修改内存PE镜像,那不是比直接对PE文件进行操作隐秘多了么? PE文件在运行时会根据导入表来进行dll库的“动态链接”,那么如果我们修改PE导入表结构,就可以实现对我们自己动态库的导入,从而实现注入。 那么问题来了,选择一个合适的 阅读全文

posted @ 2016-07-10 15:22 zbility 阅读(4834) 评论(0) 推荐(2)

几种Windows进程通信
摘要:32位Windows采用虚拟内存技术使每个进程虚拟4G内存,在逻辑上实现了对进程之间数据代码的分离与保护。那么相应的进程之间的通信也就有必要整理掌握一下。 Windows进程间通讯的方法有很多:管道、邮件槽、剪切板、共享内存、消息、套接字、RPC、DDE等。 但是他们大部分拥有一个共同的本质:利用W 阅读全文

posted @ 2016-07-10 11:04 zbility 阅读(16558) 评论(1) 推荐(3)

Sysenter/Kifastcallentry hook 检测与恢复
摘要:关于Sysenter、Kifastcallentry、中断之类的内核入口hook技术早就烂大街了,可是对hook的检测与恢复代码却是寥寥无几,一切抛开代码将原理的行为都是耍流氓。 下面以Sysenter hook技术为例子,重点分析下这类钩子的检测与恢复技术。 Sysenter简述 : Window 阅读全文

posted @ 2016-04-18 18:13 zbility 阅读(5173) 评论(0) 推荐(0)

漫谈IRP
摘要:I/O Request Packet(IRP) IRP概述: IRP是由I/O管理器发出的,I/O管理器是用户态与内核态之间的桥梁,当用户态进程发出I/O请求时,I/O管理器就捕获这些请求,将其转换为IRP请求,发送给驱动程序。 I/O管理器无疑是非常重要的,具有核心地位。它负责所有I/O请求的调度 阅读全文

posted @ 2016-04-17 22:34 zbility 阅读(4284) 评论(0) 推荐(0)

导航