写在前面:写这篇文章,第一个是因为公司开发的exe的确也有这个问题,其次呢,也是因为本人对Python也比较有兴趣,在此推写一个解决办法,也希望可以帮助到一些朋友,或者说让一些朋友学习到些什么。

一、问题说明

对于Pyinstaller进行打包的程序,有怎么一个东西可以进行反编译 ---- pyinstxtractor.py

下载地址:https://github.com/extremecoders-re/pyinstxtractor

操作如下:

  1. 将下载好的 pyinstxtractor.py 文件与打包好的 exe 放到同目录下

    注:此处的 exe 为编写的测试 exe,代码如下:

import threading
import time
from tkinter import *class Main:def __init__(self):self.root = Tk()self.time = StringVar()self.gui()self.root.mainloop()def gui(self):label = Label(self.root, textvariable=self.time, width=30, height=3)label.pack()timer = threading.Timer(1, self.thread)timer.start()def thread(self):current = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))self.time.set(current)timer = threading.Timer(1, self.thread)timer.start()if __name__ == '__main__':Main()

打包命令如下:

pyinstaller main.py -w -F

打包成功后,运行:

  1. 使用以下命令,将上述的 exe 反编译(exe 与 pyinstxtractor.py 同目录下运行 cmd)
python pyinstxtractor.py main.exe


在生成的目录中,可以找到如下文件 ---- main.pyc

此时,随意找一个 pyc 反编译网站,即可看到源码(中文可能有少许编码问题,但绝大部分代码均可还原)
可使用此网站:https://tool.lu/pyc

可以看到,此处源码还原度极高,可以说对于项目、个人和公司而言都是一件细思极恐的问题!!!

二、解决办法

在此处,本人使用的方法是:利用 cpython 包,先将 py 文件编译成 pyd 文件,再重新打包。
注:
1. cpython 为 python 的一个
2. pyd 文件,相当于 c 文件编译生成的 dll 文件,只能进行反汇编,而非反编译,安全性极大提高
3. 在相同目录下同时存在相同名字的 py 文件和 pyd 文件,python 会自动引用 pyd 文件,而非 py 文件

使用 cpython 前,有一个前置条件:电脑需装有 visual c++ 桌面开发环境(默认安装即可)
推荐下载地址:Visual Studio 和 C++ Community(社区版)


安装完成后,在 pycharm 中下载 Cython 包(此处我使用的是清华镜像)

pip install  -i https://pypi.tuna.tsinghua.edu.cn/simple Cython

下载完毕后,在刚刚的源代码 main.py 的同级目录下创建 setup.py

from distutils.core import setup
from Cython.Build import cythonizesetup(ext_modules=cythonize("main.py"))

同时,将 main.py 中的主运行代码调整到新的文件 test.py



接着在 pycharm 命令行中运行命令:python setup.py build_ext --inplace
同时将生成的 pyd 文件名字改为 main.pyd

此时,删除 dist、build 文件夹和其它多余的文件,重新打包

对于 test.exe 进行反编译

进入反编译的文件中,即可找到 main.pyd

至此,对于主要源码的反编译保护基本实现完成。

Python 防止反编译相关推荐

  1. python防反编译_Python - 浅谈Python的编译与反编译

    1 - Python编译过程涉及的文件 py 源代码文件,由python.exe解释,可在控制台下运行,可用文本编辑器进行编辑: pyc 源代码文件经过编译后生成的二进制文件,无法用文本编辑器进行编辑 ...

  2. python加密反编译_对Python源码进行加密及反编译前后对比

    关于python的加密 目前软件开发商对 Python 加密时可能会有两种形式,一种是对python转成的exe进行 保护,另一种是直接对.py或者.pyc文件进行保护,下面将列举两种形式的保护流程. ...

  3. python so反编译_使用cython把python编译so

    1.需求 为了保证线上代码安全和效率,使用python编写代码,pyc可直接反编译,于是把重要代码编译so文件 2.工作 2.1 安装相关库: pip install cython yum insta ...

  4. Python文件用pyinstaller打包成.exe文件后如何获取Python源码(Python文件反编译)

    此文章自己做个学习记录,也希望对跟我有一样困扰的同学一些帮助! 使用到的工具下载链接我都已经附上,点击下面蓝色字体可直接下载: 1.pyinstxtractor.py 2.wxMEDIT 3.在线编译 ...

  5. python程序反编译

    目的:将使用pyinstaller生成的exe还原成.py文件 1.从生成的exe中提取出.pyc文件 这里的方法有很多...可以使用pyinstxtractor..也可以使用官方的archive_v ...

  6. python 防止反编译的办法

    要彻底防止反编译,目前最佳作法是以Cython模式编译成pyd.pyd是Cpython将Python转化为C,再打包成汇编形式的动态链接库.反编译是不可能的,只能反汇编.

  7. python防反编译_用Python和Smali模拟器搞定一个加混淆、防篡改的APK逆向

    这个周末我和好友聊天时,他向我求助修改一个他正在编写Python脚本.他试图通过解混淆一个APK,来理解该APK的混淆基址和防篡改保护机制.同我以往的APK逆向过程(dex2jar->jd-gu ...

  8. python代码反编译

    反编译代码 1.找到相应得程序文件 如果有exe或者elf格式得文件,那就直接反编译. 如果没有找到,就找下拉去的文件夹中dist文件夹下熟悉的文件名,有可能是文件格式的,没有后缀 . 2.提取文件 ...

  9. Python文件反编译,还原代码(xxd、uncompyle6)

    这里有难度的就是如何复制文件的完整内容,如果能直接下载既下载,否则就要用方法完整拷贝内容 首先复制文件的十六进制的内容 xxd命令转换二进制文件为十六进制文件 xxd .configuration.c ...

  10. 《跟着小吴哥学python》之 09 python中的编译与反编译

    pyc是由py文件经过编译后,生成的一种跨平台的字节码文件: 加载的速度有所提高,而且pyc是由python的虚拟机来执行的. pyc的内容,是跟python的版本相关的,不同版本编译后的pyc文件是 ...

最新文章

  1. python一维数组合并_Python编程:如何将多个一维数组的元素交叉拼接成新的一维数组...
  2. 构建iscsi网络存储服务
  3. LINUX任务(jobs)详解
  4. 《剑指Offer》23:链表中环的入口节点
  5. 【Flink】Flink SQL 一个流 输出 2 次
  6. java 泛型 类型形参(Type Parameters) 通配符(wildcard)边界(Bound)
  7. GitChat · 前端 | Vue 组件库实践和设计
  8. 一步一步写算法(之内存)
  9. VMware虚拟机安装RHEL6.5系统
  10. Eclipse 插件开发 资料贡献
  11. Unity3d之HashSlash学习笔记(一)--角色属性类的构架
  12. Robotics 机器人运动学 DH参数建模
  13. 计算机表格快捷键,Excel表格快捷键与功能键大全
  14. 百度关键词排名查询源码_推荐4个Google关键词排名查询工具
  15. 使用Excel生成符合正态分布的随机数
  16. 信息化系统软件实施工程师基础技能
  17. 首次适应算法 C语言实现
  18. Πολιτική απορρήτου
  19. 计算机左右手控制的按键,采用改进按键布局方法的计算机键盘技术
  20. rpmbuild告警mangling shebang in xxx from /bin/python to /usr/bin/python/python2.

热门文章

  1. linux 安装xz,在Ubuntu 18.04 LTS下安装linux-5.0.8.tar.xz的方法
  2. 神策数据杨宁:券商财富管理数字化转型客户全生命周期(视频解读)
  3. 计算机教程求和,电脑excel求和怎么操作步骤 | excel竖列自动求和sum
  4. 对话MVP丨腾讯崔冉的十年“技术马拉松”
  5. JAVA服务器获取手机设备的IP地址
  6. 共享单车系统的软件测试报告,共享单车APP实验报告模板.docx
  7. 台湾文化记忆库网站现已正式上线
  8. 20 行代码编写一个简单的端口扫描器
  9. html静态页面存储,页面保存为静态页面
  10. 完整JAVA学习路线图,助您从JAVA小白变身秃顶大叔,迈向JAVA成神之路