py2exe反编译
接下来具体说一下步骤:
这个文件在pyinstaller库里,还没有安装的需要安装一下(已经安装的跳过安装)
安装完成后在python安装路径下的\Lib\site-packages文件夹搜索archive_viewer.py文件
找到文件后可以复制到你想要放置的位置(不复制也行)
这一步会把编译出的文件都罗列出来,像这样
但是我们只需要找到我们exe对应的名字的文件就好了,确认存在之后滑到最下面,会发现有个?号用于输入接下来的命令,在这边我们输入
会显示 to filename? 让你输入需要输出的pyc文件名称,这边输入 your_app.pyc 回车就好了
接下来又会显示?号,接着输入 x struct 回车,输入struct文件名称 struct 回车
由于用PyInstaller打包后,pyc文件的前8个字节会被抹掉,所以最后要自己添加回去。前四个字节为python编译的版本,后四个字节为时间戳。
这边使用Hex Editor Neo软件同时打开.pyc文件和struct文件,复制struct文件前面8个字节插入到.pyc文件的前面:
这样我们就得到了完整的pyc文件
安装uncompyle库
反编译
2. python exe如何防止反编译
Python 编译生成 pyc 仅仅为了提升加载速度,并不是为了防止破解,反编译后和原来一模一样。pyinstaller,py2exe,只是把 pyc 打个包,同样很弱。代码混淆也只能增加看懂代码的难度,但并不能防止破解。所以最为稳妥的办法只有修改Python解释器,对源代码进行加密,解释器加载源代码时再解密,这种方法虽然可以防止破解,但给自己带来麻烦不说,发布程序是需要打包自己修改后的解释器,相当麻烦。
3. 如何用uncompyle2反编译
1. 安装和配置uncompyle2
从github上获取uncompyle2然后进行配置。
python setup.py install
之后从下载后解压的文件夹uncompyle2-master/scripts找到可以直接使用的脚本uncompyle2,实际上这就是一个python脚本文件。
2. 反编译abstract.pyo
和前面帖子中方法一致,从WingIDE的安装目录的bin/2.7/中的src.zip中提取process\abstract.pyo进行反编译
./uncompyle2 ~/Desktop/abstract.pyo > ~/Desktop/abstract.py
然后打开即可看到py代码了
3. 修改abstract.py并重新生成pyo
在反编译的abstract.py中直接搜授权验证函数_GetTermDaysLeft
顺便扫扫代码,即使没注释也很容易看懂。
所以,果断在函数开始处,添加return -1,并保存。
生成pyo
python -O -m py_compile abstract.py
注:如果不带选项-O则生成的是pyc文件,-O选项则可以在生成代码时进行一定的优化。
4. 大功告成
将生成的新abstract.pyo替换原来src.zip中的\process\abstract.pyo即可。需要注意的是:不能解压,替换,再打包!需要直接替换zip中相应文件!
最后替换安装目录中bin\2.7\下的src.zip即可。
4. 用Python2.7.1写的小程序可以反编译得到它的源代码吗
可以,网上有很多在线的反编译工具,给你发几个链接:
1、http://depython.com/index.php
2、https://github.com/eble/pyc2py
3、http://tool.lu/pyc/
不过好像第一个只适用于Python2.0-2.6,第二个适用于Python2.6,第三个应该可以反编译2.7,你可以都试一下。
5. python反编译遇到的新问题,求解
这个后缀应该算是除了python的py代码外,遇到最多的一种文件类型了。虽然python被普遍认为是一种解释性语言,但谁说它就不能被编译后执行呢?python通过compile生成的pyc文件,然后由python的虚拟机执行。相对于py文件来说,编译成pyc本质上和py没有太大区别,只是对于这个模块的加载速度提高了,并没有提高代码的执行速度,通常情况下不用主动去编译pyc文件。
6. 如何把python编译成exe文件
我的是这个文件 py2exe-0.6.9.win32-py2.6.exe 你自己找,找到对应你python的版本安装。安装之后打开解释器输入>>> import py2exe
>>> import distutils如果没有问题就可以了。现在说步骤:1、准备你要编译的python脚本,比如:a.py,放在C:\compile\a.py2、编写另一个python脚本setup.py,内容如下:import distutils
import py2exe
distutils.core.setup(windows=[‘C:\\compile\\a.py’])3、把你的setup.py放在某个位置,比如C:\compile\setup.py打开命令行输入 C:\compile\setup.py py2exe 编译生成4、然后会在C:\Users\你的用户名\ 下生成一个dist的文件, 里面有个a.exe,双击就会执行你的脚本。
7. python写的程序,转成了exe文件,怎么进行反编译为python源码
1、电脑桌面,输入“win+R”组合键,在弹出窗口中输入“cmd”,点击确定。
8. PyInstaller打包、解包与反编译.pyc文件
PyInstaller官网: https://www.pyinstaller.org/
假设有一个demo.py文件,在同目录下启动命令行或从命令行进入当前文件夹,使用如下命令打包
打包后同目录下会产生两个文件夹build和dist(distribution),dist文件夹内就是目标程序。
解包使用pyinstxtractor工具
Github地址: https://github.com/extremecoders-re/pyinstxtractor
假设在第1步中,使用-F参数将demo.py打包为独立可执行文件demo.exe,进入dist文件夹,将pyinstxtractor.py放在该目录下,在该目录下启动命令行或从命令行进入该文件夹,使用如下命令解包
解包得到的内容将放入同目录下的demo.exe_extracted文件夹
找到目标.pyc文件,比如demo.pyc
反编译.pyc文件使用uncompyle6工具
Github地址: https://github.com/rocky/python-uncompyle6
可以直接通过pip安装uncompyle6
由于pyinstaller在打包可执行文件时会将.pyc文件头部的16字节magic head去掉,因此需要对需要反编译的.pyc文件进行预处理,将文件头部的16字节magic head补充完整。这里使用一个开源的16进制编辑器ImHex。
Github地址: https://github.com/WerWolv/ImHex
进入demo.exe_extracted文件夹,用16进制编辑器打开struct.pyc文件复制头部的16字节magic head,再用16进制编辑器打开demo.pyc文件,将头部的16字节改为magic head,即将图2中的部分更改为图1中的值即可。
使用前一个命令,反编译后的源码内容会显示在命令行窗口内;使用后一个命令,源码会打印到指定文件中,如demo.py。
到此为止可以
Invalid pyc/pyo file - Magic value mismatch!
补充magic head后即可正常反编译。
如果不是项目成员给所谓的程序而不肯给源码,而我又绕不过这个程序的问题,我才不想折腾这些有的没的。
9. EXE文件反编译成源码
EXE文件可以通过步骤来反编译成源码,具体步骤如下:
1、在网络上搜索下载反编译工具ILSpy,ILspy是一个开源的.net反编译软件,使用十分方便。解压后如图,双击.exe文件打开解压工具。
(9)py2exe反编译扩展阅读:
反编译也称为计算机软件还原工程,是指通过对他人软件的目标程序(比如可执行程序)进行“逆向分析、研究”工作,以推导出他人的软件产品所使用的思路、原理、结构、算法、处理过程、运行方法等设计要素,某些特定情况下可能推导出源代码。
exe是编译好的程序文件 要看结构就得反编译 但是通常不能把可执行文件变成高级语言源代码,只能转换成汇编程序。 所以要要看结构不止要会反编译 还得精通汇编语言。