Python源码保护[通俗易懂]

Python源码保护[通俗易懂]1混淆改方法主要将函数、类名以及变量名等替换为其他符号,提高了阅读的难度,Python代码混淆网站。但该方法未改变程序的主体结构,实际效果并不是很好。具体如下图1所示:2pycpython是先把源码py文件编译成pyc或者pyo,然后由python的虚拟机执行。最简单的加密方法是将编译后的pyc二进制文件发布,详情可以参考blog。但与其他语言一样编译后的产生的pyc依然可以通过反编译得…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

  由于Python开源的特性,在一些商业场景下,若不想将源码暴露,可通过混淆、编译为pycso(Windows下为pyd)文件等方法起到保护源码的效果。其中,将源码编译为so文件是常用且较好的一种保护方法。

1 混淆

  代码混淆是将函数、类名和变量名等替换为其他符号,提高了阅读的难度。Oxyry网站提供的在线代码混淆(或使用pyminifier),如下图所示:
在这里插入图片描述
  代码混淆简单且成本代价低,但由于未改变程序的主体结构,仅降低代码的可读性,实际对源码的保护并不是很好。

2 pyc

  pyc是Python脚本编译后形成的字节文件。生成后的pyc文件可以直接替换对应的py文件。但需注意Python编译版本与运行版本需要一致。pyc生成并使用流程如下:
  1)通过Python标准库中py_compile(或compileall)或被调用的脚本(如A.py被调用),都将在__pycache__文件夹中生成pyc文件,py_compile使用代码如下:

import py_compile  
py_compile.compile(file="xxx.py") # 需转换为pyc文件在——__pycache__中 

  2)将pyc文件直接替换对应py文件

  与其他语言相同,pyc也可以通过反编译获取源码。pyc反编译反编译通过uncompyle6,使用如下所示:

# 安装
pip install uncompyle6
# 使用
uncompyle6 xxx.pyc

在这里插入图片描述

3 so或pyd

  so(pyd是windows平台)文件是通过cython转换为c后,再进行编译形成的文件。生成so并使用流程如下:

  1)安装cython,Linux平台需安装gcc,Windows平台需安装对应版本的Visual Studio

pip install cython

  2)新建一个build.py文件,内容如下

from distutils.core import setup
from Cython.Build import cythonize
setup(ext_modules = cythonize("xxx.py"))  # xxxe.py是需要转换pyd的py文件

  3)在终端下,输入如下命令:

python build.py build_ext

so文件在目录下的build->lib命名开头文件夹中,如下图so文件在build/lib.macosx-10.7-x86_64-3.6中:

在这里插入图片描述
  4)将so(或pyd)文件直接替换对应的py文件
  相对混淆和pyc,so(或pyd)对保护效果最好的一种方案。但在使用时,需注意Python版本gcc版本,不一致可能会发生错误。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/172346.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 计算机系统新手入门,电脑初学者入门教程

    计算机系统新手入门,电脑初学者入门教程本篇主要从关机、任务管理器、电脑屏幕锁定这三个方面,帮助初次学习电脑的人尽快掌握一些基本操作,快一起来学习吧。工具/材料电脑(本篇以Windows7系统为例)电脑关机01方法一。首先,点击屏幕左下方的win(当点击时,会提示“开始”的字样)。02点击后,可以看见有关机选项,点击关机,后面出现几个选项,根据需要进行选择就可以。03方法二:使用快捷键。按下快捷键Alt+F4。(这里需要注意,是同时按…

    2022年6月15日
    53
  • 数据仓库常见建模方法与大数据领域建模实例综述

    数据仓库常见建模方法与大数据领域建模实例综述为什么需要数据建模?为什么要进行数据仓库建模?随着DT时代互联网、智能设备等信息技术的发展,数据开始井喷式的增长,如何讲这些数据进行有序、有结构地分类组织存储是我们面临的一个挑战。如果把数据看作图书馆里的书,我们希望看到它们在书架上分门别类地放置,而不是乱糟糟的大数据的数仓建模是通过建模的方法更好的组织、存储数据,以便在性能、成本、效率和数据质量之间找到最佳平衡点。一般主要从下面四点考虑…

    2022年5月4日
    59
  • Microsoft Enterprise Library 6.0 下载

    Microsoft Enterprise Library 6.0 下载一不留神entLib也发布了6.0版本程序及源代码的下载:http://www.microsoft.com/en-us/download/details.aspx?id=38789附:MSDN的参考资料:http://msdn.microsoft.com/en-us/library/dn169621.aspx转载于:https://www.cnbl…

    2022年10月20日
    4
  • origin绘图设定_表达技巧答题步骤

    origin绘图设定_表达技巧答题步骤2.3.4.坐标轴加粗,28号字体5.6.7.8.9.10.更改图例格式11.12.13.注释:感谢抖音主:鄫南南Ph.D.c的分享

    2026年2月6日
    2
  • ctf-web:文件上传漏洞和文件解析漏洞

    ctf-web:文件上传漏洞和文件解析漏洞这次的内容是关于文件上传的漏洞和文件解析的漏洞的内容,在下面我会进行一个关于这两个方面的内容的实际操作以及原理介绍.其实我一直想学的就是web渗透,但是一直都不知道web渗透都有什么后来才知道居然就是sql注入,还有这几个漏洞的利用就是web渗透…这不就是我好几年前看的东西么…当然,其实我也学的不是很精通,只是稍微会一点,就不夸夸其谈了.先说说这两个漏洞的区别.一.文件上传漏洞这个漏洞产生的原因是因为上传文件的不严谨所产生的.比如我恶意上传了一个一句话木马,但是服务器没有进行对文件的过滤,就会将.

    2022年6月1日
    37
  • linux 数据恢复软件_常见的数据恢复软件

    linux 数据恢复软件_常见的数据恢复软件一。数据删除命令:rm-rf,将任何数据直接从硬盘删除,且没有任何提示建议做法:把命令参数放到后面:rm-rfi将删除的东西通过mv命令移动到系统下的/temp目录下,然后写个脚本定期执行清除操

    2022年8月3日
    8

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号