我们即将构建的调试器应当具备两种基本的能力:打开一个可执行文件并使之以自身子进程的形式运行起来的能力,以及附加一个现有进程的能力。

建立调试会话的两种基本途径:创建一个全新的进程与附加到一个现有的执行进程。创建一个全新的进程可以在目标进程尚未有机会执行代码之时便取得全权控制。附加则意味着错过了程序初始部分的代码。

我们通常所说的CPU状态信息是对于线程而言

硬件断点的实现过程涉及控制调试寄存器中某些特定位的取值。

我们只需反置DR7寄存器中相对应的位置激活断点,此外我们还应该通过DR7设置硬件断点的类型与长度

硬件断点一旦被命中便会触发一个INT1(或称为单步事件)事件,因此我们需要在主调试结构中加入一个相应的单步事件处理例程,以便于我们的主调试循环结构调用。

某一内存区域的基地址:这块内存区域的首个内存页在虚拟内存中的起始地址
设置内存断点的本质涉及修改相关内存页的访问权限,以使其具备“保护页”的特性。当CPU试图访问这一内存区域时,一个GUARD_PAGE_EXECUTION异常事件便会被抛出。

导致非法内存操作的程序错误根源包括从缓冲区溢出到不当方式下的null指针处理以及其他类型的程序错误。

Pydbg框架有功能,名为摄取进程快照。这个特性使你可以在某一个时刻彻底冻结住目标进程,并存取这个进程在这一时刻的所有内存数据内容,然后再恢复这个进程的执行状态。

《python灰帽子》笔记--构建自己的调试器相关推荐

  1. Python灰帽子笔记二

    通用寄存器: 寄存器可以被认为是位于CPU上的小型存储器.CPU获取数据的最快方式是直接访问寄存器.在X86指令集中,一个CPU具有8个通用寄存器:EAX,EDX,ECX,ESI,EDI,EBP,ES ...

  2. Python灰帽子笔记一

    动态链接库本身是一些经过编译的二进制文件,之在运行时才会被连接进主进程.在windows下这些二进制文件被称为动态链接库(dll),而在linux下这些库文件被称为共享对象(so,shared obj ...

  3. Python灰帽子--黑客与逆向工程师的Python编程之道 笔记,过程问题解决

    ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑电脑端的可以看看目录 跟着学习进度不断更新中....(因为懒,没更新了,也不打算继续更新文章了......) power by <p ...

  4. 读书笔记 《Python灰帽子-黑客与逆向工程师的Python编程之道》

    Python灰帽子-黑客与逆向工程师的Python编程之道 1.调试器原理和设计 调试器 白盒调试器 黑盒调试器 2.寄存器 2.1通用寄存器 EAX(ADD) EDX(DEPOSIT) ECX(Co ...

  5. Python灰帽子pdf

    下载地址:网盘下载 内容简介  · · · · · · <Python灰帽子>是由知名安全机构Immunity Inc的资深黑帽Justin Seitz主笔撰写的一本关于编程语言Pytho ...

  6. Python灰帽子——黑客与逆向工程师的Python编程之道

    Python灰帽子--黑客与逆向工程师的Python编程之道 下载地址 https://pan.baidu.com/s/12hlf8ZAXBbGwcael_Ecmrg 扫码下面二维码关注公众号回复 1 ...

  7. Python灰帽子——黑客与逆向工程师的Python编程之道pdf百度云

    Python灰帽子--黑客与逆向工程师的Python编程之道 内容简介 <Python灰帽子:黑客与逆向工程师的Python编程之道>是由知名安全机构Immunity Inc的资深黑帽Ju ...

  8. 电子书推荐--《Python灰帽子》,python黑客编程

    点此在线阅读 <Python灰帽子>是由知名安全机构Immunity Inc的资深黑帽Justin Seitz主笔撰写的一本关于编程语言Python如何被广泛应用于黑客与逆向工程领域的书籍 ...

  9. Python灰帽子:黑客与逆向工程师的Python编程之道

    掌握职业黑客的Python工具箱 <Python灰帽子:黑客与逆向工程师的Python编程之道> 基本信息 原书名: Gray Hat Python: Python Programming ...

最新文章

  1. 位置式PID与增量式PID的介绍和代码实现
  2. jzoj zsy家今天的饭_有它拌饭,碗我都能舔干净!老干妈竟然被轻松超越了?
  3. VMware Workstation中安装linux系统(CentOS)超详细
  4. 11粘土人脖卡面撑怎么用_零失败的神仙夏日卤味!用电饭煲就能做!配小酒可升仙!...
  5. CodeForces - 1350B Orac and Models(dp)
  6. 老实人一般容易吃亏,但是老实人遇到的机会比别人多一点点!
  7. php 封装模式,PHP设计模式(三):封装
  8. ECCV学习(一):ECCV2018整理总结
  9. android手机安全:被攻陷的一个场景
  10. Sip 响应状态码 对照 详解
  11. linux 目录与分区与文件,LINUX中的分区与文件系统
  12. 使用Control Flash 更新AB PLC的固件版本(通过网线)
  13. 经典场景试题,测试用例编写
  14. spring data jpa 之初体验
  15. 红米K30、K40所有版本获取root教程,理论上支持所有小米手机(超级详细,附带原理解释)
  16. 对异常 java.lang.IllegalStateException: getAttribute: Session already invalidated的理解
  17. python算方差_Python求均值,方差,标准差的实例
  18. 动态修改 DHTML Gantt甘特图皮肤样式
  19. 【opencv4.3.0教程】05之基础结构2之矩形结构Rect_详解
  20. linux usb 驱动总线(三)

热门文章

  1. Java基础数据类型与运算符
  2. Echart API
  3. 机器人编程趣味实践20-版本课程(教学)
  4. 316级和304级不锈钢有什么区别?
  5. 【科普】微波雷达感应与人体红外感应的区别
  6. PHP代码审计——任意文件删除漏洞(YXcms)
  7. C++编程积累——解决cinnum输入问题,cin无效,无法从屏幕输入(cin状态清除)
  8. python版权问题_最令人头疼的Python问题
  9. mysql---分库分表
  10. 【Image2Lcd X TFT_LCD】—— 图片取模软件使用