我的问题是如何使用PyInstaller创建的EXE并完全或通常从以下位置检索逻辑/源代码:原始的Python脚本?
#1 楼
提取EXE附加的数据(从PYZ开始,直到文件结尾的块)
使用PyInstaller的存档查看器提取所需的文件。
decompyle .PYC-我个人建议使用Uncompyle2 。
评论
更多最新的Uncompyle在pypi.python.org/pypi/uncompyle6
–花生
16-09-5在22:19
这篇文章中也有帮助:stackoverflow.com/questions/18303122/…您可以使用此脚本提取文件:sourceforge.net/projects/pyinstallerextractor 1.8版也位于pastebin中:pastebin.com/fnMw9AuL *请确保安装了pyinstaller(pip install pyinstaller)解压缩文件后,您还可以使用以下工具:sourceforge.net/projects/easypythondecompiler/files
– E235
17年6月23日在9:22
你如何排名第一?
– Hakaishin
19年11月6日在10:06
#2 楼
PyInstaller发布了源代码,因此您可以确切地看到它如何将python代码打包到可执行文件中...第一步,更通用的方法是在exe上使用像binwalk这样的工具。
评论
我不确定binwalk是这项工作的正确工具。它会向您显示可执行文件的压缩部分,但是除非您将输出指向仅寻找压缩部分,否则输出可能还会有很多其他误报...这违背了在此类压缩文件上使用它的目的。文件,恕我直言。
–mrduclaw
13年3月23日在9:09
@mrduclaw:我对binwalk的经验是,它是对未知的二进制文件进行高级扫描以查看其中可能有什么的好工具。尤其是如果我们知道要查找的内容却不知道它在哪个文件中。我并不是要提出binwalk作为一个完整的解决方案(修改了我的回答以表明这是第一步)
–雷姆科
13年3月23日在10:01
仅供参考,截至2020年6月,到binwalk的链接似乎被标记为恶意网站。
– Karsun
6月10日1:52
@Karsun在我的网站上的二进制文件上误报,我已经将此问题报告给了Google,现在看来还可以(感谢让我知道)
–雷姆科
6月15日8:50
#3 楼
在hack.lu 2012上的主题为“对Dropbox软件安全性的关键分析”的演讲讨论了Dropbox桌面客户端的反向操作,该客户端使用了类似的实现,但是增加了自定义Python解释器的变化,更改了字节码。演示文稿审查:http://blog.csnc.ch/2012/12/asfws-a-critical-analysis-of-dropbox-software-security/
链接到幻灯片:http://archive.hack。 lu / 2012 / Dropbox%20security.pdf
#4 楼
这个过程应该使您尽可能地接近原始来源。基本上像pyinstaller和py2exe这样的工具都将软件包库和依赖项结合在一起,因此您可以运行“独立” EXE,而无需下载它们或使用python解释器准备计算机。
启动EXE时-它在内存中未打包。这包括.pyc文件(转换为字节码的python代码)。 pyREtic是一个工具,可让您从内存中获取那些并将其转换回源。
https://github.com/MyNameIsMeerkat/pyREtic
pyREtic
反向工程师Python字节码此工具包
使您可以将内存中的对象带回源代码,而无需直接访问磁盘上的字节码。如果磁盘上的应用程序pyc以多种方式之一被混淆,这将非常有用。
#5 楼
所有pyinstaller exe东西的一站式解决方案。使用此程序对pyinstaller生成的exe文件进行反向工程。https://sourceforge.net/projects/pyinstallerexerebuilder/
评论
当您能够破解exe文件本身时,制作exe文件有什么意义。使用PyInstaller生成EXE的目的是使运行它的系统不需要存在Python解释器或您可能正在使用的任何第三方模块。它使您的Python脚本更具可移植性,但不会向反向工程师隐藏代码/逻辑。