摘要:
调试时没有符号表是很蛋疼的事。。尤其是分析漏洞时,明明找到地方了,却不知道自己身处何处。 这里用windbg自带的symchk工具下载微软符号表。 首先进入windbg的目录,使用cmd执行 symchk /r c:\windows\system32\secur32.dll /s SRV*c:\sy 阅读全文
摘要:
本文主要分析内核中与调试相关的几个内核函数。 首先是NtCreateDebugObject函数,用于创建一个内核调试对象,分析程序可知,其实只是一层对ObCreateObject的封装,并初始化一些结构成员而已。 我后面会写一些与window对象管理方面的笔记,会分析到对象的创建过程。 29号写的w 阅读全文
摘要:
关于调试方面的学习笔记,主要来源于《软件调试》的读书笔记和梦织未来论坛的视频教程 1.调试器使用一个死循环监听调试信息。 2.什么是调试信息,进程创建、终止,加载模块都是调试信息。dwDebugEventCode说明了调试信息的种类。 Type: DWORD The code that identi 阅读全文
摘要:
产生原因: UAF漏洞的成因是一块堆内存被释放了之后又被使用。又被使用指的是:指针存在(悬垂指针被引用)。这个引用的结果是不可预测的,因为不知道会发生什么。由于大多数的堆内存其实都是C++对象,所以利用的核心思路就是分配堆去占坑,占的坑中有自己构造的虚表。 分析方式: 触发UAF漏洞需要一系列的操作 阅读全文
摘要:
看了仙果版主的议题演讲,其中提到cve-2010-3971是一个浏览器漏洞利用中的里程碑。于是找来POC,尝试分析一下。 1.漏洞重现 XP SP3+ie6.0环境 poc如下: poc.htm css.css 2.漏洞分析 首先来看漏洞的相关信息 可见是一个UAF漏洞。 用调试器加载POC,调试器 阅读全文
摘要:
环境如下 打开POC文件即发生异常,挂载调试器。异常情况如图 注意0x9A99000位置内存不可写入导致异常,图示是增加了写权限后的内存示意图。 分析可知,是堆溢出超出堆边界导致尝试写入不可写入的内存地址而引发了异常。 异常语句如图 edi的值为0x9A99000 mov [0x9A99000],e 阅读全文
摘要:
CVE-2012-0158是一个比较有名的老漏洞了,这次从论坛上找到一个poc文件,利用这个poc来分析CVE-2012-0158漏洞的形成。 http://bbs.pediy.com/showthread.php?t=207638 参考自此帖子,但是分析是个人独立完成的,只是参考了poc并没有抄袭 阅读全文
摘要:
1 //与内核模块相关 2 #include 3 #include "windows.h" 4 /////////////////////////////// 5 //检测window版本来决定要不要加载内核模块 6 #define CHECK_XP_SP3 3 7 #define CHECK_WIN7_X64 2 8 #define CHECK_WIN7_X86 1 9 #... 阅读全文
摘要:
上一篇写自我保护时用到了,主要是不同版本的位置不同。找了一下,发现XP和win7的情况分别如下。 阅读全文
摘要:
1 //进程自我保护,注意只有X64 WIN7可用 2 #include 3 #define PROCESS_TERMINATE 1 4 typedef struct _LDR_DATA // 24 elements, 0xE0 bytes (sizeof) 5 { 6 struct _LIST_ENT... 阅读全文