第一章 环境搭建

1.操作系统准备:

这个没什么好说的了,win+linux,最好的解决方案就是虚拟机了,如果你土豪就两台电脑也是挺好的

使用动态链接库

windows下:

linux下:

代码清单

联合体

实践一下

4.断点

就是想让程序在执行到什么时候,暂停下来,方便观察堆栈,寄存器和内存的数据, 破解明文比较的验证码就是这样的了

硬件断点

作用:有时候一些软件会做crc校验或其他校验,因为我们下断点改了指令,是校验值改变了,有些软件或者病毒什么的就直接退出了,

有以下3个类型

内存断点

这个其实不是真的断点,其实是改变了某个块或者某个页的权限。

比如我们设置内存写入断点, 我就让这个区域没有写入权限,那么当执行到写入时,就会触发保护页异常,cpu就会暂停下来,就断下来了。

一个debuger类

启动代码

继续出发,尝试实现附加到一个正在运行的程序上面进行附加

在debugger类中加入了以下的代码

test.py也改一下

附加到CTF的reverseme就可以,附加后,输入key回车后没反应,跟着我们任意按个键continue,那就从哪个进程分离了,就输出你输入的key是错误的

新增代码:

my_test

运行结果:可以看到我们也可以获取各个寄存器的值啦,同时这个进程有两个线程哦

3.3 实现调试事件的处理

新增了这个,mytest就看书吧

通过GetLastError知道错误码为6,即无效的句柄

原来这个高清电子书里面的代码是错的,就说怎么跟windows的API的参数顺序不一样呢, 不过作者给的源码是没错的

运行结果:

2. 硬件断点

代码就不贴了,主要是这三个函数,

这次是比较成功的,代码看书吧

基本上这就开发了一个基于Windows的轻量级调试器。感觉实在用python来做Win32编程

剩下的咱们下次更新哦!

相关文章