Chinaunix首页 | 论坛 | 博客
  • 博客访问: 422841
  • 博文数量: 63
  • 博客积分: 1175
  • 博客等级: 少尉
  • 技术积分: 1204
  • 用 户 组: 普通用户
  • 注册时间: 2012-04-19 11:33
文章分类
文章存档

2015年(1)

2014年(3)

2013年(7)

2012年(52)

分类: Python/Ruby

2012-04-24 19:55:13

  首先必须说一下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中不支持汉语,所以运行时应该要删除里边的注释
阅读(2120) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~