摘要:这里整理了《Windows内核分析》专题的各篇博文,方便查找。 一、保护模式 保护模式101012分页机制 保护模式中的PDE与PTE 二、系统调用 Windows系统调用中API的三环部分(依据分析重写ReadProcessMemory函数) Windows系统调用中API从三环到零环(上) Wi 阅读全文
posted @ 2019-10-19 23:59 OneTrainee 阅读 (86) 评论 (0) 编辑
摘要:【太多事情要做了,这部分难度对我来说又很大,先写一下大体框架,到时候具体函数逆向分析过程给写出来】 1. 调试器会接收到被调试程序什么事件? 答:并不是被调试程序芝麻大点的事都会往调试器上发,对于调试器来讲,其只接收七种事件。 2. 被调试程序使用什么函数来进行事件的采集并发送给调试器。 答:使用D 阅读全文
posted @ 2019-11-19 23:43 OneTrainee 阅读 (3) 评论 (0) 编辑
摘要:【太多事情要做了,这部分难度又很大,先写一下大体框架,到时候具体函数逆向分析过程给写出来】 0. 直接创建被调试程序与附加调试程序有什么区别吗? 答:调用的函数不相同。 1. 调试程序如何与被调试程序建立连接的? 答:两者连接思路很简单,通过在内核层创建一个 DEBUG_OBJECT 对象来建立链接 阅读全文
posted @ 2019-11-19 19:06 OneTrainee 阅读 (4) 评论 (0) 编辑
摘要:有这么一段反汇编代码: 根据参数识别信息,这里是进程句柄。 但是其使用 lea传入参数,ObReferenceObjectByHandle 是根据句柄来获取内核对象。 因此,当执行完成之后,该地址已经不再是进程句柄,而是转换成内核对象了。 在之后的代码分析过程中一定要注意这一点。 阅读全文
posted @ 2019-11-19 16:51 OneTrainee 阅读 (3) 评论 (0) 编辑
摘要:我们之前介绍了如果单独定义一个C结构体并转换为IDA中的结构体。 但是,在内核中有很多庞大的结构体,一环接着一环,手动导入不现实。 还存在一个问题,可能大小格式不匹配。 之前有一位老哥推荐我一个工具:利用 Symbol Type Viewer 工具实现将 pdb 文件 转换为 c\c++ 头文件 发 阅读全文
posted @ 2019-11-18 16:57 OneTrainee 阅读 (3) 评论 (0) 编辑
摘要:在逆向内核时,发现了这么一个问题,传入参数明显不一致。 通过函数末尾 @16,明显需要四个函数,这里只是传入三个函数。 查看WRK源码,发现其确实需要四个参数。 排除IDA分析错误的前提下,则存在寄存器传入。 这种情况一般IDA会自动给出注释,可以根据注释判断是哪个寄存器传入。 但是,我们可以手动推 阅读全文
posted @ 2019-11-17 22:44 OneTrainee 阅读 (4) 评论 (0) 编辑
摘要:1. 双击变量 2. 按D转换类型(Word、Byte、Dword) 3. 按U删除变量名 4. 按N修改变量名 阅读全文
posted @ 2019-11-17 22:00 OneTrainee 阅读 (2) 评论 (0) 编辑
摘要:IDA系统自动注释的,如果按 ';',则不会修改成功。 应该按 Shift + ; 这样才可以修改。 阅读全文
posted @ 2019-11-17 21:32 OneTrainee 阅读 (2) 评论 (0) 编辑
摘要:该函数由 DbgUiConnectToDbg(ntdll.dll)函数 调用。 其调用时传入的参数如下: 函数作用:初始化被调试的内核对象,将被调试对象句柄放入调试对象的 [fs:f24]处。 1.现在我们了解到 [FS:F24]处存放的是被调试程序的调试对象句柄。 2.当被调试程序中断时,其会发送 阅读全文
posted @ 2019-11-17 20:43 OneTrainee 阅读 (7) 评论 (0) 编辑
摘要:暂时未解决问题: 1. [fs+0F24h]中存储着什么东西。 答案:其存放着被调试程序的DbgObject句柄。_NtCreateDebugObject(ntoskrnl.exe)函数逆向分析 该函数作用: 创建调试对象,将被调试对象加入到句柄,并将被调试对象放在fs:F24h。 该函数只是简单构 阅读全文
posted @ 2019-11-17 18:51 OneTrainee 阅读 (7) 评论 (0) 编辑
摘要:KiRaiseException函数是记录异常的最后一步,在这之后紧接着就调用KiDispatchException分发异常。 我们在逆向前,先看一下书中的介绍: 1. 概念认知: KiRaiseException 可以被看作 “处理前的最后一次异常记录”,异常记录的目的是:完善异常处理信息,在派发 阅读全文
posted @ 2019-11-16 12:14 OneTrainee 阅读 (6) 评论 (0) 编辑