使用python编写自己的进程调试工具
今天浅读了《Python灰帽子》,让我对程序调试有了更清晰的认识。如果没有记错的话,我最早了解程序调试工具gdb,使用gdb去运行着带着符号表的C程序,后来我大致了解到程序调试的原理是对于进程的控制或者说是观察,无论是C,是python还是java,之所以能够去调试这些程序,是因为进程管理给我们留了一个口子。
其实无论linux系统还是windows系统,操作系统本省都给我们提供了接口函数,这些接口函数可以去访问粒度级别的状态,可以用来获取进程,线程,乃至寄存器的状态。
x86的寄存器
寄存器状态,
EIP 这个寄存器始终指向当前正在执行的指令,当CPU穿行于二进制代码中时,EIP寄存器中的值随之更新以实时反映当前代码所执行到的位置。
oxCC当CPU一路执行碰到这个字节的时候会触发一个INT3中断事件,而当前执行的进程则暂停在此处。