摘要: 菜鸟一枚,有一段时间不搞内核了,分享一下以前学习的结果,有不对的地方请各位指点,大牛飘过~~在R0和R3时,FS段寄存器分别指向GDT中的不同段:在R3下,FS段寄存器的值是0x3B,在R0下,FS段寄存器的值是0x30。分别用OD和Windbg在R3和R0下查看寄存器(XP3),下图:FS寄存器的... 阅读全文
posted @ 2015-05-10 12:04 银河彼岸 阅读(1635) 评论(0) 推荐(0) 编辑
摘要: 注入版R3调试器实现科锐三阶段项目之一项目名称:R3Dbg.dll(调试器内核),Gravedigger.exe(调用示例)功能:实现硬件断点(访问,写入,执行),内存断点(读,写),软断点,单步步过,单步步入,寄存器,反汇编,内存,桟信息的显示。PE分析,CALL函数名提示等3环调试器的功能。特点... 阅读全文
posted @ 2015-05-10 11:58 银河彼岸 阅读(553) 评论(0) 推荐(0) 编辑
摘要: 1.相关函数相关结构,与主要成员//导出表结构struct ExportFunInfor { char szFunName[64]; //函数名称 int nExportNumber; ... 阅读全文
posted @ 2015-05-10 11:51 银河彼岸 阅读(301) 评论(0) 推荐(0) 编辑
摘要: 1.函数和结构//内存断点处理部分 public: //设置内存读写断点 void SetMemReadWriteBPoint(DWORD StartAddress,DWORD EndAddress); //查找指定的当前内存页 BOOL FindMemPage(DWOR... 阅读全文
posted @ 2015-05-10 11:50 银河彼岸 阅读(453) 评论(0) 推荐(0) 编辑
摘要: 1.相关函数,相关结构,与主要成员//硬件断点处理部分public: //硬件断点设置 void SetHardWarePoint(DWORD SetAddress, int DR, int PointType, int nLen = 1); //硬件DR0 void SetD... 阅读全文
posted @ 2015-05-10 11:48 银河彼岸 阅读(507) 评论(0) 推荐(0) 编辑
摘要: 1.相关函数与结构 //软中断处理部分public: //设置INT3断点 void Int3BreakPoint(DWORD BreakAddress); //设置INT3断点并保存首字节 BYTE SetBreakPoint(HANDLE hProcess,LPVOID pAdd, B... 阅读全文
posted @ 2015-05-10 11:46 银河彼岸 阅读(482) 评论(0) 推荐(0) 编辑
摘要: 一.CREATE_PROCESS_DEBUG_EVENT处理流程当创建调试进程时,进入此流程。在程序的入口点下一个INT3断点,作为单独的软中断处理,即这个断点不加入INT3断点列表。作用是调试程序时,使程序暂停执行于程序入口点。其断点原理参照软中断详细设计。二.LOAD_DLL_DEBUG_EVE... 阅读全文
posted @ 2015-05-10 11:44 银河彼岸 阅读(392) 评论(0) 推荐(0) 编辑
摘要: 1)在创建调试线程中添加异常事件信息调用过程PspCreateThread-->PspUserThreadStartup(初始化线程的参数)-->DbgkCreateThread(这里格式化ApiMsg作派发消息的参数)-->DbgkpSendApiMessage备注这里只关心的DbgkpSendA... 阅读全文
posted @ 2015-05-10 11:39 银河彼岸 阅读(298) 评论(0) 推荐(0) 编辑
摘要: 调试异常事件结构体:typedef struct _DEBUG_EVENT { //出自MSDN DWORD dwDebugEventCode; //异常代码 DWORD dwProcessId; //PID DWORD dwThreadId; un... 阅读全文
posted @ 2015-05-10 11:33 银河彼岸 阅读(560) 评论(0) 推荐(0) 编辑
摘要: 一:R3调试器流程基础知识:异常处理发生的处理大概过程如下:1)系统查看产生异常的进程是否正在被调试,是则向调试器发送Exception_Debug_Event事件;2)如果进程没有被调试或调试不处理此异常,那么系统检查异常所处的线程,并在这个线程的环境中查看FS:[0]来确定是否安装了SEH异常处... 阅读全文
posted @ 2015-05-10 11:28 银河彼岸 阅读(954) 评论(0) 推荐(0) 编辑
摘要: 标 题: 【原创】也来构建自己的调试器 作 者: wenboxu 时 间: 2015-01-09,22:46:11 链 接: http://bbs.pediy.com/showthread.php?t=196455 科锐... 阅读全文
posted @ 2015-05-10 11:19 银河彼岸 阅读(277) 评论(0) 推荐(0) 编辑
摘要: 5.1问题的提出与分析5.1.1问题的分析当初听到这个的时候,觉得无从下手,而且也想到了很多极端的问题,比如运行的时候不停的修改原来的指令来达到往下运行的效果。然后进到API里面去了,那个记录量是非常之大的,而且当时A1Pass的测试结果是每秒只能跑7条指令.于是花了很多时间在想着效率提升这块.后来... 阅读全文
posted @ 2015-05-10 11:11 银河彼岸 阅读(280) 评论(0) 推荐(0) 编辑
摘要: 4.1问题的提出与分析4.1.1问题的分析最初对于这个问题处理的想法就是分析被调试程序的导入表,后来和苏玉海讨论,发现这样不能解决问题,因为API里可能还调用了别的API,再跟进API的话,程序就不能正确解析函数名了!据说Windows有上万个API,如何组织这些数据,如果提高查询的效率、以及最大化... 阅读全文
posted @ 2015-05-10 11:09 银河彼岸 阅读(213) 评论(0) 推荐(0) 编辑
摘要: PDF加了目录,可以快速的定位.附件pdf文档,以及用到的部分功能函数第三章int3断点与硬件断点3.1问题的提出与解决3.1.1问题提出如何实现软硬件断点?如何判断用户断点的正确性?如何提高效率?3.2问题的解决3.2.1Int3断点的实现8086/8088提供断点指令Int3和单步标志TF,调试... 阅读全文
posted @ 2015-05-10 11:07 银河彼岸 阅读(1421) 评论(0) 推荐(0) 编辑
摘要: 关于内存断点的设计与实现第二章内存断点92.1问题的提出与分析92.1.1问题提出92.2问题的解决92.2.1内断断点与内存分页的关系9同时附件为调试器的可执行程序(修复了一些小bug)第一章节与第二章节的内容以及pe解析部分的动态邻接表的源代码(我的代码写得很恶心,看的话做好心理准备,哈哈)多谢... 阅读全文
posted @ 2015-05-10 11:04 银河彼岸 阅读(806) 评论(0) 推荐(0) 编辑
摘要: 调试器设计第一章节的内容。因为这部分是刚刚新加的,比较急,文中必然有错漏之处,恳请读者不吝赐教。修改:EXCEPTION_SINGLE_STEP单步(硬件断点或单步)附件附第一章节的内容,以及当时项目答辩时用的一份PPT!同时发份帮助文档,昨天发的有错误,不记得修改了!不好意思!科锐五期班学员黄奇e... 阅读全文
posted @ 2015-05-10 11:00 银河彼岸 阅读(291) 评论(0) 推荐(0) 编辑
摘要: 标 题: 【原创】科锐第三阶段项目之一,调试器的设计(1、15、31、38、40、47、50楼更新)(源码.文档.使用说明,全都在一楼更新了) 作 者: EvilKnight 时 间: 2010-04-27,23:58:37 链 接: http://bbs.pediy.com/showthread.... 阅读全文
posted @ 2015-05-10 10:55 银河彼岸 阅读(365) 评论(0) 推荐(0) 编辑
摘要: 前面几章基本上已经将调试器的基本功能及其实现过程讲述的差不多了。本章作为一个结束,将补充一些前面没有提到的细节性问题,并就调试器的功能扩展做一些探讨。单步步过的实现:单步步过对于非CALL的指令,其实和单步步入一样,遇到CALL指令的时候我的处理方式是在CALL之后的指令首地址设置一个一次性的INT... 阅读全文
posted @ 2015-05-10 10:43 银河彼岸 阅读(375) 评论(0) 推荐(0) 编辑
摘要: 因为在调试器的设计与实现中,很多关键性的操作都是在单步异常处理中完成的,故本章重点论述在单步异常中的处理。首先我们来看看会有哪些情况导致调试器进入单步异常。进入单步异常的原因: 1.用户输入了单步进入的命令,调试器需要设置单步,让被调试程序单步执行。2.用户所下的INT3断点被断下后,调试器会暂时恢... 阅读全文
posted @ 2015-05-10 10:41 银河彼岸 阅读(1214) 评论(0) 推荐(0) 编辑
摘要: 内存断点通过修改内存分页的属性,使被调试程序触发内存访问、写入异常而断下。多内存断点的数据关系:因为我设计的是多内存断点,即在同一个内存分页上可以下多个内存断点,同一个断点也可以跨分页下在几个内存分页上。所以从数据关系上来说断点和内存分页是多对多的关系。因此需要设计三个表:“内存断点信息表”,“内存... 阅读全文
posted @ 2015-05-10 10:39 银河彼岸 阅读(761) 评论(0) 推荐(0) 编辑