这本书是这两天刚买到的,从前天开始看,然后到昨天晚上就看完了,整体的感觉就是书的内容虽然不错但是感觉有点太少了,一种意犹未尽的感觉。
今天想测试一下pydbg的相关内容但是发现这个鸟东西并不是看起来那样装上去能直接用,另外书中也有各种错误,包括文字错误和语法错误,甚至还有的函数名称给搞错了,于是就发现照着写的东西到头来各种错误。这个我不确定是不是翻译的问题,还是由于版本更新导致函数名发生了变化,如果是失误导致的,那么这个失误也有点太蛋疼了。
《Python灰帽子》是由知名安全机构Immunity Inc的资深黑帽Justin Seitz主笔撰写的一本关于编程语言Python如何被广泛应用于黑客与逆向工程领域的书籍。老牌黑客,同时也是Immunity Inc的创始人兼首席技术执行官(CTO)Dave Aitel为这本书担任了技术编辑一职。书中绝大部分篇幅着眼于黑客技术领域中的两大经久不衰的话题:逆向工程与漏洞挖掘,并向读者呈现了几乎每个逆向工程师或安全研究人员在日常工作中所面临的各种场景,其中包括:如何设计与构建自己的调试工具,如何自动化实现烦琐的逆向分析任务,如何设计与构建自己的fuzzing工具,如何利用fuzzing 测试来找出存在于软件产品中的安全漏洞,一些小技巧诸如钩子与注入技术的应用,以及对一些主流Python安全工具如PyDbg、 Immunity Debugger、Sulley、IDAPython、PyEmu等的深入介绍。作者借助于如今黑客社区中备受青睐的编程语言 Python引领读者构建出精悍的脚本程序来一一应对上述这些问题。出现在书中的相当一部分Python代码实例借鉴或直接来源于一些优秀的开源安全项目,诸如Pedram Amini的Paimei,由此读者可以领略到安全研究者们是如何将黑客艺术与工程技术优雅融合来解决那些棘手问题的。
至于PyDbg的安装网上也有专门的文章,刚开始的时候没有注意这些东西,直接从 https://github.com/OpenRCE/pydbg (需要安装git,如果没有可以猛击此处下载zip包)下载的代码,然后拷贝到Python 2.6 的Lib\site-packages\目录下其实就可以完成安装了,并且可以正常的进行import。但是在测试代码的时候发现无法import utils。刚开始不知道这个鸟东西和网上的那个utils并不是同一个东西,于是想当然的使用easy_install进行安装,安装倒是颇为顺利。
从上面下载并且安装的这个东西是错误的,安装之后会然可以import utils,但是在运行的时候会发现找不到对应的属性,因为这个鸟东西压根就不对。需要使用-m参数卸载掉。
真正的文件需要从paimei的目录下找到那个东西,访问https://github.com/OpenRCE/paimei使用git进行下载(如果没有安装git可以猛击此处下载zip包)。下载之后将目录下的utils,pgraph,pida,pydbg拷贝到 Lib\site-packages\目录下,然后重新运行python脚本即可。
测试文件如下:
from pydbg import *
from pydbg.defines import *
import struct
import utils
import sys
import pida
import pgraph
dbg = pydbg()
found_firefox = False
pattern = "password"
def ssl_sniff(dbg ,args):
buffer = ""
offset = 0
while 1 :
byte = dbg.read_process_memory( args[1] + offset ,1)
if byte != "\x00":
buffer += byte
offset += 1
continue
else:
break
if pattern in buffer:
print "Pre-Encrypted: %s" %buffer
return DBG_CONTINUE
for (pid, name ) in dbg.enumerate_processes():
if name.lower() == "mantra.exe":
found_firefox = True
hooks = utils.hook_container()
dbg.attach(pid)
print "[*] Attaching to MantraPortable.exe with pid %d " %pid
hook_address = dbg.func_resolve_debuggee("nspr4.dll","PR_Write")
if hook_address :
hooks.add (dbg,hook_address,2,ssl_sniff,None)
print "[*] nspr4.dll PE_Write hooked at :0x%08x " %hook_address
break
else:
print "[*] could not reslove hook address"
sys.exit(-1)
if found_firefox:
print "[*] hook set ,continue process"
dbg.run()
else:
print "[*] Error could not find MantraPortable.exe"
sys.exit(-1)
测试效果,就是下面的样子:
参考文章:http://bbs.pediy.com/showthread.php?t=133992
6 comments
给哥哥礼物,不然黑你网站!
神马礼物?
别急,哥哥还没过生日呢!你哥哥的,回复也得加验证码,你就不能学学主流网站,回复多次再加,麻烦死了
第一次就屏蔽掉,堵住源头。有的垃圾评论就一条,他发完了我再让它填验证码有什么用
大佬请问我在网上试了很多种方法,包括您的,但都不成功,总是报错
Traceback (most recent call last):
File “”, line 1, in
File “C:\Users\SGQT\Anaconda3\envs\py2\lib\site-packages\pydbg\__init__.py”, line 40, in
from defines import *
File “C:\Users\SGQT\Anaconda3\envs\py2\lib\site-packages\pydbg\defines.py”, line 35, in
from windows_h import *
File “C:\Users\SGQT\Anaconda3\envs\py2\lib\site-packages\pydbg\windows_h.py”, line 110, in
assert sizeof(_MEMORY_BASIC_INFORMATION) == 28, sizeof(_MEMORY_BASIC_INFORMATION)
AssertionError: 40
请问是怎么回事呢
检查下依赖的库,另外日志就这么几行?