Centos 5 下Python 2.4 环境中运行pefile module 总是提示参数出错,在python命令行中运行出现以下错误信息:
>>> import pefile
>>> pe=pefile.PE('/forensics/exes/003gangsir.exe')
Traceback (most recent call last):
File "<stdin>", line 1, in ?
File "/usr/lib/python2.4/site-packages/pefile.py", line 1754, in __init__
self.__parse__(name, data, fast_load)
File "/usr/lib/python2.4/site-packages/pefile.py", line 1804, in __parse__
self.__data__ = mmap.mmap(self.fileno,0, mmap.MAP_PRIVATE)
EnvironmentError: [Errno 22] Invalid argument
经google发现一个可能的原因是python2.4 存在一个bug:mmap不能处理第二个参数为0的调用,上文红色标记的0,故考虑升级python版本。
升级方法参考:http://blog.csdn.net/yoeen/article/details/6870170 【注:貌似不需要修改yum,可能不同的操作系统情况不同】
重新安装pefile,运行可以显示结果。
【注】pefile需要的userdb.txt的链接:https://code.google.com/p/reverse-engineering-scripts/downloads/detail?name=UserDB.TXT