Python的PyDBG调试器的用法

pydbg调试器的安装与使用,如果你已经会了就跳过此步骤,如果调试器没有成功安装,可以下载:PyDBG下载安装

调试器属于PaiMei框架下的一个子模块:http://www.openrce.org/downloads/details/208/PaiMei

# -*- coding: cp936
import utils,sys
from pydbg import *
from pydbg.defines import *

dbg=pydbg()
isProcess=False
oldWords="报警110"
newWords="火警119"
processName="notepad.exe"

def editWords(dbg,args):
    buf=dbg.read_process_memory(args[1],args[2])
    if oldWords in buf:
        print("原始信息:%s" % buf)
        buf=buf.replace(oldWords,newWords)
        newBuf=dbg.write_process_memory(args[1],buf)
        print("修改之后的信息:%s" % dbg.read_process_memory(args[1],args[2]))
    return DBG_CONTINUE

for (pid,name) in dbg.enumerate_processes():
    if name.lower()==processName:
        isProcess=True
        hooks=utils.hook_container()
        dbg.attach(pid)
        print("进程ID:{0},进程名称:{1}".format(pid,name))

        hookAddress=dbg.func_resolve_debuggee("kernel32.dll","WriteFile")

        if hookAddress:
            hooks.add(dbg,hookAddress,5,editWords,None)
            print("设置断点的地址:%s" % hookAddress)
            break
        else:
            print("不能获取钩子地址")
            sys.exit(-1)

if isProcess:
    print("等待调试器事件的触发")
    dbg.run()
else:
    print("没有进程:%s" % processName)
    sys.exit(-1)

 如果你也是64位操作系统,会报错,如下:

Traceback (most recent call last):
  File "D:\python\1.py", line 25, in <module>
    dbg.attach(pid)
  File "C:\Python27\lib\pydbg\pydbg.py", line 226, in attach
    self.debug_active_process(pid)
  File "C:\Python27\lib\pydbg\pydbg.py", line 839, in debug_active_process
    raise pdx("DebugActiveProcess(%d)" % pid, True)
pdx: [50] DebugActiveProcess(1264): 不支持该请求。
由于本人是Win7的64位操作系统,所以解析的时候会报错,那么为了让这个调试器可以演示成功,我们打
开一个32位的记事本,打开C:\Windows\SysWOW64的notepad.exe,这样就可以了

发布了46 篇原创文章 · 获赞 9 · 访问量 3634

猜你喜欢

转载自blog.csdn.net/weixin_41896770/article/details/104942849