Quantcast
Channel: 程序人生 »代码疯子
Viewing all articles
Browse latest Browse all 59

试用pydbg

$
0
0

pydbg是基于Python实现的一个调试器框架,之前看《Python灰帽子:黑客与逆向工程师的Python编程之道》这本书的时候接触过一点,今天再次试用,记录一点使用心得。

0×01. 安装
1. 下载pydbg源码
从 https://github.com/OpenRCE/pydbg 下载 pydbg 的源码,解压后复制到 C:\Python27\Lib\site-packages 文件夹下,注意文件夹重命名为 pydbg;
2. 下载paimei源码
从 https://github.com/OpenRCE/paimei 下载 paimei 的源码,解压后将其中的pgraph、pida、utils复制到 C:\Python27\Lib\site-packages 文件夹下;
3. 更新pydasm.pyd
自带的pydasm.pyd无法在Python 2.7下正常工作,会提示ImportError错误,所以需要自己编译一个pydasm,这里直接从看雪论坛找了一个现成的(http://bbs.pediy.com/showthread.php?t=133992);
pydbg pydasm.pyd ImportError: DLL load failed: 找不到指定的模块
0×02. 样例代码
基本框架代码如下(主要是设置回调函数,通过设置USER_CALLBACK_DEBUG_EVENT可以实现超时监控):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#!/usr/bin/env python
# -*- coding:utf-8 -*-
from pydbg import *
from pydbg.defines import *
import utils
import time
 
def get_crash_info(debugger):
    """获取Crash信息"""
    crash_bin = utils.crash_binning.crash_binning()
    crash_bin.record_crash(debugger)
    return crash_bin.crash_synopsis()
 
def access_violation(debugger):
    """Access Violation 回调函数"""
    if debugger.dbg.u.Exception.dwFirstChance:
        return DBG_EXCEPTION_NOT_HANDLED
 
    #print get_crash_info(debugger)
 
    debugger.terminate_process()
    return DBG_EXCEPTION_NOT_HANDLED
 
def time_out(debugger):
    """超时回调函数"""
    if time.time() - debugger.start_time > 10.0:
        debugger.terminate_process()
        return DBG_CONTINUE
 
def main():
    debugger = pydbg()
    # 创建新进程,使用load函数
    debugger.load(r"C:\Windows\System32\calc.exe")
    # 如果是附加到现有进程,使用attach函数
    #debugger.attach(pid)
    debugger.set_callback(EXCEPTION_ACCESS_VIOLATION, access_violation)
    debugger.set_callback(USER_CALLBACK_DEBUG_EVENT, time_out)
    debugger.start_time = time.time()
    debugger.run()
 
if __name__ == "__main__":
    main()

0×03. 吐槽
使用pydbg测试两个不同的样本,结果有时候得到的Crash信息居然是一模一样的,于是放弃之

扩展阅读:如何进行浏览器Fuzz
参考:
https://github.com/rmadair/fuzzer/blob/master/Executor.py
http://bbs.pediy.com/showthread.php?t=133992


本文地址: 程序人生 >> 试用pydbg
作者:代码疯子(Wins0n) 本站内容如无声明均属原创,转载请保留作者信息与原文链接,谢谢!


Viewing all articles
Browse latest Browse all 59

Trending Articles