随笔分类 -  Windows内核开发

x64内核内存空间结构
摘要:0x00 前言本文主要是讨论Windows 7 x64下的内核虚拟地址空间的结构,可以利用WiinDBG调试的扩展命令"!CMKD.kvas"来显示x64下的内核虚拟地址空间的整体布局。了解内核的地址布局在某些情况下是很有的,比如说在研究New Blue Pill的源码和虚拟化的时候。0x01 基本... 阅读全文

posted @ 2015-12-21 20:02 _懒人 阅读(10258) 评论(5) 推荐(1)

谈谈Windows Wow64
摘要:欢迎转载,转载请注明出处:http://www.cnblogs.com/lanrenxinxin/p/4977488.html本文是《深入理解Windows操作系统 (第六版) 》关于64位Windows操心系统有关Wow64部分的读书笔记,因为之前很少有接触到关于Wow64的部分,记录一下。Wow... 阅读全文

posted @ 2015-11-19 14:23 _懒人 阅读(8764) 评论(1) 推荐(5)

Windows 回调监控 <二>
摘要:在之前的文章Windows 回调监控 总结了关于CreateProcessNotify,CreateProcessNotifyEx和LoadImageNotify一些用法,之后产生了一个思路,既然在进程创建的时候加载.exe文件会执行我们的回调函数,那么如果在我们回调函数之中对内存中的.exe文件的... 阅读全文

posted @ 2015-08-15 17:04 _懒人 阅读(2453) 评论(1) 推荐(1)

Windows 回调监控 <一>
摘要:在x86的体系结构中,我们常用hook关键的系统调用来达到对系统的监控,但是对于x64的结构,因为有PatchGuard的存在,对于一些系统关键点进行hook是很不稳定的,在很大几率上会导致蓝屏的发生,而且在Vista之后的操作系统中,还提供了ObRegisterCallbacks()函数注册自定义... 阅读全文

posted @ 2015-08-12 13:04 _懒人 阅读(7142) 评论(2) 推荐(5)

IDTHook 深入学习
摘要:在之前的一篇文章中介绍了替换IDT向量表中的地址来达到Hook的目的IDT hook KiTrap03但是这样很容易就可以被检测了。接下来要学习就是通过patch GDT来达到Hook IDT的目的。首先,我们要了解一下,当触发INT 3号中断之后,CPU是如何找到接下来要执行的指令的地址。CPU ... 阅读全文

posted @ 2015-07-31 19:58 _懒人 阅读(4345) 评论(0) 推荐(0)

硬件断点 DrxHook
摘要:硬件断点的实现需要依赖于调试寄存器DR0~DR7 调试寄存器DR0~DR3-----调试地址寄存器DR4~DR5-----保留DR6 -----调试状态寄存器 指示哪个调试寄存器被命中DR7 -----调试控制寄存器关于Dr7寄存器每个标志位的解释:总结如下DR7调试控制寄存器: R... 阅读全文

posted @ 2015-07-28 22:56 _懒人 阅读(4321) 评论(0) 推荐(0)

访问其他进程内存
摘要:在Ring3 是提供了两个API函数,WriteProcessMemory和ReadProcessMemory来读取其他进程的内存BOOL WINAPI WriteProcessMemory( __in HANDLE hProcess, __in LPVOID lpBaseAddress... 阅读全文

posted @ 2015-07-27 15:21 _懒人 阅读(8687) 评论(3) 推荐(2)

由枚举模块到ring0内存结构 (分析NtQueryVirtualMemory)
摘要:是由获得进程模块而引发的一系列的问题,首先,在ring3层下枚举进程模块有ToolHelp,Psapi,还可以通过在ntdll中获得ZwQuerySystemInformation的函数地址来枚举,其中ZwQueryInformationProcess相当于是调用系统服务函数,其内部实现就是遍历PE... 阅读全文

posted @ 2015-07-23 19:33 _懒人 阅读(6949) 评论(0) 推荐(0)

Win7 _Object_header 中的 TypeIndex
摘要:Win7 比较 xp下ObjectHeader中的内容有所变化,xp直接在OBJECT_HEADER里保存了POBJECT_TYPE指针,而Win7中把所有的对象类型放在了一个表里,这个表叫做ObTypeIndexTable。可以这么定义为:POBJECT_TYPE ObTypeIndexTable... 阅读全文

posted @ 2015-07-23 17:25 _懒人 阅读(1729) 评论(0) 推荐(0)

注入小结
摘要:平常用的最多的dll注入技术就是远程线程,刚刚逛看雪,看到有人写的面试的时候被问到的问题,其中就有dll注入的方法,我突然想到我开始面试的时候也被问了dll注入的方法,当时也是就只知道一个远程线程,答的也不好,然后就想把一些注入技术写个总结。接下来讲的注入技术,有ring3层的lld的远程线程和ap... 阅读全文

posted @ 2015-07-21 01:24 _懒人 阅读(7385) 评论(2) 推荐(2)

Windows 代码实现关机(直接黑屏)
摘要:整理资料的时候发现的以前的代码,本机Win7 x64 Sp1 运行直接关机,黑屏。就是利用RtlAdjustPrivilege函数提权,代码中的注释写的很详细了。用的VS2010写的,直接编译成x64就可以运行,直接关机了。#include "stdafx.h"#include #include ... 阅读全文

posted @ 2015-07-20 21:20 _懒人 阅读(2110) 评论(0) 推荐(0)

Windbg 常用命令整理
摘要:kd> !idt -a 查看idtkd> dt _ktrap_frame 异常帧kd> ba e1 Address 下硬件执行断点kd> ba w4 Address 下硬件读写断点kd> k 查看栈回溯kd> !pcr CPU控制块kd> r 显示寄存器信息kd>x 以通配符的方式... 阅读全文

posted @ 2015-06-16 23:36 _懒人 阅读(717) 评论(0) 推荐(0)

Inlinehook PspCreateProcess
摘要:InineHook通过修改函数指令实现,此次以内核层的PspCreateProcess()为例。本来是想写NtCreateProcess()的Inlinehook,但是想到PCHunter对于SSDT和ShadowSSDT的检测,就想试一下PCHunter对于更底层函数的检测功能,虽然最后还是被检测... 阅读全文

posted @ 2015-05-16 21:01 _懒人 阅读(1184) 评论(0) 推荐(0)

ring0 与 ring3 层之间的交互
摘要:在进行Windows的ring0层开发时,必不可免的要与 ring3 层进行交互。进行数据间的相互传输。可用的方法有DeviceIoCntrol,ReadFile。我平常都是用的DeviceIoControl在ring3 与 ring0 层进行的数据传输。今天就写写DeviceIoControl... 阅读全文

posted @ 2015-04-12 11:27 _懒人 阅读(2359) 评论(0) 推荐(2)

驱动层得到进程的完整路径
摘要:在得到进程EProcess之后,对于进程完整路径的获得一般有两种方法,一种是访问的进程的PEB结构,在PEB结构中保存有进程的完整路径,另一种方法就是采用访问_FILE_OBJECT的方法。 访问PEB的方法便存在线程靠挂的问题,因为运行于Ring0层的线程是无法去访问用户地址空间的,需要将... 阅读全文

posted @ 2015-04-03 00:57 _懒人 阅读(6650) 评论(2) 推荐(0)

字符串的处理
摘要:Windows 操作系统在Ring0 层用的都是Unicode 字符集,而且在Visual Studio的开发环境下也是默认的使用Unicode 字符集。今天就写写Unicode 字符集的操作的总结吧。Ring3在Visual Studio 的开发环境下是默认使用Unicode 字符集的。刚开始的时... 阅读全文

posted @ 2015-03-26 14:39 _懒人 阅读(767) 评论(0) 推荐(0)

IDT hook KiTrap03
摘要:关于idt的基本知识就不进行赘述了,先看一个例子0x1000: mov eax,00x1006: Int 3 ;------->进入内核,找到中断处理例程KiTrap030x1007: Mov eax,1这段代码执行,触发3号中断,然后开始执行Ki... 阅读全文

posted @ 2015-03-23 20:57 _懒人 阅读(1958) 评论(0) 推荐(0)

导航