保护您用Python编写的共享软件

非常感谢RémiMevaere提供的有用的Python文件保护教程!原始教程链接所在:https//www.sciences-physiques.net/555d13e4a9b34836bb4753192f14225c

介绍

如您所知,保护python代码有点困难。因为它被解释了;稍微修改一下python源代码,您就可以提取所有代码(即使它们被替换了)。

我将在此处说明的方法确实可靠,并使用了所谓的“ The Enigma Protector”的第三方工具。

先决条件

  • 在Windows下使用

  • 使用Cython编程语言

  • 已安装MSVC构建工具

  • 试用版的enigma保护软件(199美元)可能会引起反病毒警报,因为一些破解者和黑客使用它来保护其应用程序。

安装和使用Cython

Cython是一种编程语言,逐步成为Python编程语言的超集,逐步通过主要使用Python编写的代码以及可选的其他受C语言启发的语法来提供替代C的性能。Cython是一种编译语言,通常用于生成CPython扩展模块。”

一句话:Cython可以用您的python代码生成一个在动态链接库(DLL)中编译的c ++文件,该文件可以由您的python代码直接调用。

设定

pip install cython

第一个文件是要以C速度运行的python文件脚本。请注意扩展名.pyx

档案:fib.pyx

#cython: language_level=3def fib(n):    """Print the Fibonacci series up to n."""    a, b = 0, 1    while b < n:        print(b, end=' ')        a, b = b, a + b    print()

现在我们需要创建setup.py,就像一个python Makefile(有关更多信息,请参见源文件和编译)

文件:setup.py

from setuptools import setupfrom Cython.Build import cythonizesetup(    ext_modules=cythonize("fib.pyx"),)

现在使用以下命令转换并编译所有这些

python setup.py build_ext --inplace

从python调用创建的dll (fib.cp38-win_amd64.pyd)真的很容易。它只是将其视为模块。

import fibfib.fib(50000000) # will give the expected result

保护您的应用

目的是保护您的python应用。变量,您将需要:

  • .pyx文件中一些最重要的代码,这些文件将在c ++中转换,只有此代码将受到保护

  • 调用enigma保护器的API来约会保护(RISC虚拟机等)

  • 将cython产生的dll打包为enigma保护器

  • 用它!

优点:如您所知,C编译比python快速集成,因为它不处理python对象结构。处理循环时,C也可以转换。由于cython无法处理GIL,因此您可以使用所有CPU内核。

准备编译

文件:setup.py

from distutils.core import setupfrom distutils.extension import Extensionfrom Cython.Distutils import build_extsetup(  name = 'Test app',  ext_modules=[    Extension('test',              sources=['script_test.pyx'],              extra_link_args=['/MAP'],  libraries = ["enigma_ide64"],  language="c++")    ],  cmdclass = {'build_ext': build_ext})

观看API

标记是一个放置在源代码中的字节,可帮助Enigma Protector在标记内查找代码以进行处理。标记包括两部分:开始标记和结束标记。”

// Markers APIvoid __declspec(dllimport) __stdcall EP_Marker(char* Name);

EP_RegHardware函数用于检索唯一的用户PC信息。该函数没有参数。如果函数成功,则返回值是指向以空值终止的ANSI字符串的指针。如果函数失败,则返回值为0。”

// Registration APILPCWSTR __declspec(dllimport) __stdcall EP_RegHardwareIDW();

在目录中添加一些文件(enigma Protector的sdk路径)

并且您必须添加到enigma_ide.h的顶部

#include <windows.h>

脚本测试

# distutils: language = c++# cython: language_level=3# Declare EP_Marker function in enigma_ide64.libcdef extern from "enigma_ide.h":    void EP_Marker(char* Name)# Declare EP_RegHardwareID function in enigma_ide64.libcdef extern from "enigma_ide.h":    char* EP_RegHardwareID()# Declare a trivial functiondef sum_it(number1,number2):    return number1 + number2# Call and print the EP_RegHardwareIDprint(EP_RegHardwareID())# Crypt this stuff which will only be decrypt with registrationEP_Marker("reg_crypt_begin1")print("here it's crypted")EP_Marker("reg_crypt_end1")# Protect this with virtualizationEP_Marker("vm_risc_begin")a = 4b = 7c = a + bprint('Virtualized :', c)EP_Marker("vm_risc_end")# Classic python codeprint("Give me the sum :", sum_it(1,2))input("End, press key")

建立

python setup.py build_ext --inplace

使用enigma protector保护器进行保护

称它为

奖励:使用宽字符wchar_t *

from cpython.ref cimport PyObject from libc.stddef cimport wchar_tcdef extern from "Python.h":    PyObject* PyUnicode_FromWideChar(wchar_t *w, Py_ssize_t size)cdef extern from "enigma_ide.h":    wchar_t* EP_RegHardwareIDW()cdef PyObject * pystr = PyUnicode_FromWideChar(EP_RegHardwareIDW(), -1)print(<object>pystr)
(0)

相关推荐

  • 丢掉Pycharm,这款神器值得拥有!

    来源:Python 技术「ID: pythonall」 现在的开发工具太多了,而且每个开发工具都致力于做成最好用最智能的工具,所以功能越堆越多,越怼越智能.安装这些开发工具比较烧脑,经常需要经过许多配 ...

  • 用 python 编写简单的证书域名到期报警脚本

    将脚本放在服务器的计划任务内,定时检测,证书到期不足60天发送报警邮件及钉钉提醒. 在服务器上需要提前安装好 requests 库. pip install requests 钉钉机器人 https: ...

  • 如何用简单的Python编写Web应用程序?

    全文共6260字,预计学习时长13分钟 不了解任何网页框架?没关系,本文将教你如何轻松搞定从数据科学项目到超棒程序的无缝转换. 图片来源:Cody Black Unsplash 稍作休息,开始编码. ...

  • Python编写窃取摄像头照片程序

    来源:http://nxw.so/5nIWK  作者: Henrik-Yao 教你用python做一个属于自己的窃取摄像头照片的软件. 需要安装python3.5以上版本,在官网下载即可. 然后安装库 ...

  • 使用python编写一个EXE软件(一)

    李斯 李斯学python 5月22日 简介 初学python的同学(例如我自己),会以解决日常问题为目的而编写python脚本,练习python的同时也减少了很多重复劳动. 但是,脚本写完之后,如果需 ...

  • ​慎用!用 Python 编写网页病毒

    Hello everyone,今天给大家康康两种网页病毒.这次代码真的只需要亿点点哦~~(拿去恶搞基友吧!) 第一种 我们先进入第一种,这个的威力没有你们想象的那么大,我们来看下方: import w ...

  • 爆强!直接把 Python 编写的图形程序打包为安卓 APP

    作者丨州的先生 来源丨州的先生(ID:zmister2016) 如果想使用 Python 语言编写图形界面程序,那么有不少的框架可以提供支持,比如 Tkinter.Qt for Python.WxPy ...

  • 十分钟学会python编写小游戏

    春节过了一大半,各位生信技能树的童鞋们,亲戚问你的生信专业能干哈没? 卤煮早就咬牙切齿准备好了:无聊了都能自己编游戏自己玩!(到底是有多寂寞--) 那么看完这一篇推送,赶紧拿出手机,秀秀自己编的游戏, ...

  • 用python编写验证码

    作为一个用python的生信工程师,平时工作中除了用python来处理些文本文件和搭建流程,没事也想探索些其他有趣的功能.这几天就在网上学习了下如何用python编写验证码,感兴趣的同学也一起来学习下 ...

  • 用Python编写基于Supertrend“超级趋势线”强化策略

    『正文』 ˇ 简文: 什么是超级趋势指标SuperTrend Indicator? 超级趋势指标SuperTrend Indicator是一个在外汇交易中常用指标,它的设计者是Jason Robins ...