首页 > 代码库 > 读《GRAY HAT PYTHON》笔记
读《GRAY HAT PYTHON》笔记
在这本书里作者主要讲了调试程序的工具以及一些思想. hook,fuzzy 和 script debugging 等等.
第一章是环境准备,
The Hacker’s Best Friend: ctypes 并列出 python 和 c type 的一些 mapping
介绍了函数调用惯例:
- In the cdecl convention, parameters are pushed from right to left, and the caller of the func- tion is responsible for clearing the arguments from the stack.
- stdcall convention stack clearing is not done by the caller; rather the my_socks function is responsible for cleaning up before it returns.
第二章是基本的调试原理
调试工具是动态分析的基本工具, 分为白盒调试和黑盒调试,黑盒调试又分为2种,一种用户态调试,一种是内核调试
- 有些用户态调试的工具,比如 winDbg, olldbg 和 linux 下的 gdb
智能调试 pydbg 和 immunity debug 等等----提供了脚本调试的功能
X86系统下有些普遍目的的寄存器比如 EAX, EDX, ECX, ESI, EDI, EBP, ESP, and EBX 调制器必须能够自由的访问他们:
EAX 叫做 收集寄存器 用来存储函数返回值,一些优化指令也用 EAX 来存取数据,比如加减,比较,乘除等.
EDX 叫做 数据寄存器 是 EAX 的延伸,辅助存取乘除更加复杂计算的数据
ECX 叫做 计数寄存器 ECX 用作循环,是倒数的方式计数
ESI EDI 用作更有效率的循环存取 ESI 存取源数据地址, EDI 存取目的地址, 一个读,一个写
ESP EBP 是栈TOP指针和栈基Bottom指针,用来管理函数调用和栈 ,在一些优化的编译器中,EBP 会被移除出栈帧寄存器
EBX 是没有任何特殊目的的寄存器,它可以用来存放额外数据
EIP 是当前指令寄存器
- The stack grows from high memory addresses to low memory addresses. 栈帧压栈顺序为函数参数,返回地址,局部变量
- 调试事件包括 断点,内存越界访问,抛出异常
- 断点包括硬断点,软断点和内存断点
- 软断点的含义就是 当用户设置某地址断点的时候,会将该地址指令 8B 替换为 CC 中断指令,CPU在捕捉到 CC 中断后,调试器捕捉到了它,处理完后,再改回 8B 程序继续正常执行.因此会有两种软断点,一种是临时的,一种是永久的.软断点有一个缺点,就是会改变软件在内存中的 CRC 哈希值,很多恶意软件在内存中侦测到自己被改变后,会自杀来躲避侦查.
- 硬断点是在 CPU 级别设置的断点,一个典型的 CPU 有8个调试寄存器 DR0-DR7 ,但是数量有限, DR0-DR3 四个寄存器可以用来保存断点地址. DR4-DR5是保留的, DR6 是状态寄存器, DR7是硬断点开关寄存器,并保留不同条件断点(比如某地址执行,某地址写,某地址读写但非执行)
- DR7 中bit0-1是表示 DR0开关的,bit0表示 Local, bit1表示 Global, 依次类推, DR1,占2位, DR2占2位, DR3占2位共8位, bit8-15没用, bit16-31决定类型2bit和长度2bit.
- type: 00 – Break on execution, 01 – Break on data writes, 11 – Break on reads or writes but not execution
- len: 00 – 1 byte, 01 – 2 bytes (WORD), 11 – 4 bytes (DWORD)
- 硬断点只能寻址4字节的数据,因此对于较大内存空间似乎无能为力,这时候内存断点出现了。内存页是操作系统最小单位的处理片段
- 页的权限包括 页执行,页读,页写,页保护(读取该页会造成一次异常)。同时页保护也是分割堆和栈的有效分离手段
- 页保护的机制也适合于比如调试服务器端程序,将一块儿网络收包存储地址设置为页保护权限,则在收到包之后会进入断点处理程序
第三章开始举例各种工具的用法
读《GRAY HAT PYTHON》笔记
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。