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,这样就可以了