【发布时间】:2011-04-02 01:56:51
【问题描述】:
如果您可以访问 sys.modules,是否可以为加载的模块构建人类可读的源代码?
人们告诉我你不能,但我确信在 Python 中这是可能的。
【问题讨论】:
标签: python reverse-engineering decompiling
如果您可以访问 sys.modules,是否可以为加载的模块构建人类可读的源代码?
人们告诉我你不能,但我确信在 Python 中这是可能的。
【问题讨论】:
标签: python reverse-engineering decompiling
【讨论】:
通常,源代码将在文件系统中,在可以从 sys.modules 中轻松发现的地方获得。
for name, mod in sys.modules.items():
try:
fname = mod.__file__
except AttributeError:
continue
if fname.endswith(".pyc"):
fname = fname[:-1]
try:
fcode = open(fname)
except IOError:
continue
code = fcode.read()
# .. do something with name and code
【讨论】: