首先必须说一下pydbg其实就是一个windows下纯python写的类库,他是逆向工程框架PaiMei的核心组件。
既然pydbg是一个类库,所以每次扩展之前要先实例化一个对象
在pydbg中,方法attach(pid)即可将进程附加到调试器中,参数pid是要附加进程的pid。
方法func_resolve("库名","函数名")用来获取某个函数的内存地址,其中库名是该函数所在的动态链接库。
方法bp_set(address,description = "",restore = True,handler = None)用来设置软断点,address是软断点所在的内存地址,description是个可选参数,通过它给断点指定一个唯一的命名,restore的取值决定了该断点是否仅作一次性用途,handler指定该断点被命中后所需要回调的函数。
方法run()回来恢复被加载的进程
printf_random在printf_loop中的printf处设置软断点,使得程序每次运行到printf时暂停去运行回调函数(修改counter的值),所以一旦printf_loop被加载到调试器中时,显示的数据将不再可靠。
#python中不支持汉语,所以运行时应该要删除里边的注释
阅读(2301) | 评论(0) | 转发(0) |