python3.7反编译生成的.exe

目测python3.0+环境首发(手动滑稽)

今天试着反编译一个群友用python写的.exe,上流程。
该网友做了一个搜索引擎,功能如图:
在这里插入图片描述
然后 自然是第一步上搜索引擎搜一下如何反编译,大概总结一下:
获取python的.pyc(http://blog.sina.com.cn/s/blog_17bce02530102ya3k.html)
这里用到的工具是:pyinstxtractor.py(下面链接有下载)
将pyinstxtractor.py与目标exe放置在同一个文件夹

python pyinstxtractor.py 搜索引擎.exe

得到:

(test) H:\>python pyinstxtractor.py 搜索引擎.exe
pyinstxtractor.py:86: DeprecationWarning: the imp module is deprecated in favour of importlib; see the module's documentation for alternative uses
  import imp
[*] Processing 搜索引擎.exe
[*] Pyinstaller version: 2.1+
[*] Python version: 37
[*] Length of package: 5751671 bytes
[*] Found 64 files in CArchive
[*] Beginning extraction...please standby
[+] Possible entry point: pyiboot01_bootstrap
[+] Possible entry point: pyi_rth_certifi
[+] Possible entry point: 搜索引擎
[*] Found 248 files in PYZ archive
[*] Successfully extracted pyinstaller archive: 搜索引擎.exe

这里可以获得该程序用的pyinstaller版本和python版本
注意如果你当前python版本与目标程序版本不同,会是这样的:

[*] Processing 搜索引擎.exe
[*] Pyinstaller version: 2.1+
[*] Python version: 37
[*] Length of package: 5751671 bytes
[*] Found 64 files in CArchive
[*] Begining extraction...please standby
[*] Found a PYC object inside of pyiboot01_bootstrap... Unmarshalling it to fix MAGIC headers.
[*] Found a PYC object inside of pyi_rth_certifi... Unmarshalling it to fix MAGIC headers.
[*] Found a PYC object inside of 搜索引擎... Unmarshalling it to fix MAGIC headers.
[!] Warning: The script is running in a different python version than the one used to build the executable
    Run this script in Python37 to prevent extraction errors(if any) during unmarshalling**
[*] Found 248 files in PYZ archive
[*] Successfully extracted pyinstaller archive: 搜索引擎.exe

[!] Warning: The script is running in a different python version than the one used to build the executable,Run this script in Python37 to prevent extraction errors(if any) during unmarshalling**
提示与你当前的版本不同可能会有一些未知问题,所以这里我用anconda新建了一个python3.7的环境。
然后获得一个文件夹:
在这里插入图片描述
在文件夹下找到主函数:
在这里插入图片描述
这里文件格式没有显示为.pyc 查了一下可能是pyinstxtractor的问题,这不重要。
然后用16进制编辑器,打开搜素引擎和struct ,这里网上几乎所有的教程(墙内)都是从stract文件中获取前8个字节(magic)补充到目标文件,我照抄不误
然后利用Easy Python Decompiler v1.3.2进行反编译遇到以下错误:

Invalid pyc/pyo file - Magic value mismatch! 

使用uncompyle进行反编译:

<class 'ValueError'>; bad marshal data (unknown type code)
ValueError: bad marshal data (unknown type code)

这应该就是magic码没有正确还原。
key:由于每个pyc文件都有一个magic head,pyinstaller生成exe的时候会把pyc的magic部分去掉,在反编译的时候需要自己补齐。python2,需要补8个字节,后面的4个字节是时间戳,前面的
4个字节是python编译的版本。来源:https://blog.csdn.net/x947955250/article/details/82777640

以上key作者是在python2环境下,可能由于python版本的不同,字节的数量可能有影响,因为前4个字节是代表版本的意思,所以我大胆的尝试,根据16进制分析:
在这里插入图片描述
在这里插入图片描述
可以看出在struct和搜素引擎中都有E3,struct中E3位于17字节,在搜索引擎中位于9字节,所以大胆将struct中前16字节添加到搜索引擎中(这里上边KEY说了这是版本和时间戳的表示,所以在这两个文件中要求应该一样),修改保存,并将搜索引擎改为.pyc
然后我使用了uncompyle进行py还原:

pip install uncompyle
uncompyle6 搜索引擎.pyc > 搜索引擎.py

在这里插入图片描述
没有报错,成功生成:
在这里插入图片描述
在这里插入图片描述
乱码部分是code问题,且都是中文,不影响。
完美!

Q:expecting code indicator ‘c’; got ’
这是当前python版本和目标程序python版本不同报错

如果文章对你有所帮助,那就点个赞吧!

协助文章:
https://www.lizenghai.com/archives/898.html
https://blog.csdn.net/x947955250/article/details/82777640
上述文章也介绍了如何保护源码

### 回答1: 请问您有什么具体的问题或需要解决的问题吗?如果您需要安装Python3.7和OpenCV3.4.2.16,您可以通过以下步骤进行安装: 1. 首先,安装Python3.7。您可以从Python官方网站下载安装程序,并按照指示进行安装。 2. 接着,安装OpenCV3.4.2.16。您可以通过pip命令行工具,在终端输入以下命令进行安装: pip install opencv-python==3.4.2.16 3. 安装完成后,您可以在Python代码中引入OpenCV模块并开始使用。例如: import cv2 image = cv2.imread('example.png') cv2.imshow('Example', image) cv2.waitKey(0) cv2.destroyAllWindows() 上述代码将读取名为“example.png”的图像,并在窗口中显示它。 希望这些步骤能够帮助您成功安装Python3.7和OpenCV3.4.2.16并开始使用。 ### 回答2: 安装OpenCV需要进行以下步骤: 1. 安装依赖库 安装OpenCV需要先安装一些必要的依赖库,包括Numpy、Cmake、GTK+、GTK+开发库、libavcodec、libavformat、libswscale和libtbb等。可以使用如下命令安装: sudo apt-get update && sudo apt-get upgrade sudo apt-get install python3-pip python3-dev python3-tk build-essential cmake pkg-config libgtk-3-dev libavcodec-dev libavformat-dev libswscale-dev libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libdc1394-22-dev libxvidcore-dev libx264-dev libjpeg8-dev libjasper-dev libatlas-base-dev gfortran libgtkglext1 libgtkglext1-dev python-opencv ffmpeg 2. 下载OpenCV源码 可以在OpenCV的官网下载最新版本的源代码,也可以使用Git克隆最新版本的源代码: git clone https://github.com/opencv/opencv.git 3. 编译安装OpenCV 通过Cmake生成需要的Makefile文件并编译安装: cd opencv mkdir build cd build cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local .. make -j sudo make install 4. 测试OpenCV的安装 可以在Python中导入OpenCV,测试是否安装成功: import cv2 print(cv2.__version__) 如果显示正常版本信息,则证明安装成功。 注意事项: 1. 在编译时可以指定Python的版本,例如-D PYTHON_DEFAULT_EXECUTABLE=/usr/bin/python3; 2. 在编译时可以指定是否安装OpenCV的Python模块,例如-D BUILD_PYTHON_SUPPORT=ON; 3. 在编译时可以指定其他的配置项,可以参考OpenCV官网的文档进行配置。 ### 回答3: Python是一个非常流行的编程语言,而OpenCV是用于计算机视觉和图形图像处理的包,它可以在Python中使用。Python 3.7是最新版本的Python,而OpenCV 3.4.2.16是OpenCV促进了对实时计算机视觉的研究和应用的更新版本。如果你想安装Python 3.7和OpenCV 3.4.2.16,下面是一些步骤,可以帮助你完成这项任务: 1. 安装Python 3.7 下载并安装Python 3.7的最新版本。你可以从https://www.python.org/downloads/ 下载适用于你的操作系统版本的Python 3.7。 2. 安装pip 在Python 3.7中,pip已经预安装,因此你不需要手动安装它。你可以在命令行运行"pip --version"命令来查看pip是否已安装。 3. 安装OpenCV 3.4.2.16包 在命令行中安装OpenCV 3.4.2.16包,你可以使用以下命令完成: pip install opencv-python==3.4.2.16 4. 检查OpenCV是否成功安装 你可以使用以下命令来检查OpenCV是否成功安装: import cv2 print(cv2.__version__) 如果OpenCV已经成功安装,它将输出你安装的版本号"3.4.2.16"。 总之,安装Python 3.7和OpenCV 3.4.2.16并不困难,你只需要遵循上述步骤就可以完成安装。当然,最好的建议是在实践中不断摸索和学习,以充分发挥Python的优势,打造出更好的计算机视觉和图像处理方案。
评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值