Python编译成.so文件进行加密后调用的实现

pyc的破解相对容易,使用cython将python文件编译成.so文件,能在一定程度上增强python源码的私密性。

编译成.so文件

环境准备:cython

测试脚本准备:test.py

#-*-coding: UTF-8 -* -
class test:
  def say(self):
    print 'hello'

脚本编译准备:

3.1 编写compile.py文件,内容如下:

#-*-coding: UTF-8 -* -
from distutils.core import setup
from Cython.Build import cythonize
setup(
  ext_modules = cythonize("test.py") #注意这里推荐使用相对路径,编译出的so文件在引用其他模块时可能会出现路径问题
)

3.2 编译出的so文件(test.so)在调用compile.py时所在目录的build/lib下

使用方式

编写useTest.py脚本:

#-*-coding: UTF-8 -* -
from test import test #注意test.so文件要在可访问到的路径下
test.say()

执行验证。

以上这篇Python编译成.so文件进行加密后调用的实现就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • Python编译为二进制so可执行文件实例

    通过cpython把python的文件转换为二进制文件,达到代码保护的目的 1.下载Cython-0.28.2.tar.gz python setup.py install安装 2.创建你需要打包成二进制的python文件 test.py def hello(s): print(s) 3.创建一个setup.py文件,内如如下: from distutils.core import setup from Cython.Build import cythonize setup( name = "t

  • Python hashlib加密模块常用方法解析

    这篇文章主要介绍了Python hashlib加密模块常用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 主要用于对字符串的加密,最常用的为MD5加密: import hashlib def get_md5(data): obj = hashlib.md5() obj.update(data.encode('utf-8')) result = obj.hexdigest() return result val = get_md5('12

  • Python 项目转化为so文件实例

    思路是先将py转换为c代码,然后编译c为so文件,所以要安装以下内容: python 安装:cython pip install cython linux 安装:python-devel,gcc yum install python-devel yum install gcc 初步编译 新建Test.py文件,内容如下 class test: def __init__(self): print('init') def say(self): print ('hello') 新建setup.py,内

  • Python编译成.so文件进行加密后调用的实现

    pyc的破解相对容易,使用cython将python文件编译成.so文件,能在一定程度上增强python源码的私密性. 编译成.so文件 环境准备:cython 测试脚本准备:test.py #-*-coding: UTF-8 -* - class test: def say(self): print 'hello' 脚本编译准备: 3.1 编写compile.py文件,内容如下: #-*-coding: UTF-8 -* - from distutils.core import setup f

  • Linux下将源文件编译成目标文件的过程解析

    简介 请讲一下linux如何源文件逐步编译成可执行文件. 解答 首先先上图对编译的整个过程有个感性的认识,然后再逐步分析各个过程. 以hello.c 程序为例 # include <stdio.h> main{ printf("hello\n"); } 一个.c源程序需要经过预处理器生成.i文件,再经过编译器生成.s文件,再经过汇编器生成可重定位目标文件.o文件,再与其他.o文件经过链接器生成最终的可执行目标程序. 预处理阶段.主要是处理源文件中以"#"

  • python打包成so文件过程解析

    这篇文章主要介绍了python打包成so文件过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 wget https://bootstrap.pypa.io/get-pip.py python get-pip.py pip install cython 编写setput.py文件: setup.py文件内容如下: from distutils.core import setup from distutils.extension import

  • 史上最详细的Python打包成exe文件教程

    打包成exe文件可以让python代码在没有python环境的条件下,依然能够运行,实在是码农们写追女朋友表白.情人节浪漫的必需品! 1.使用豆瓣镜像源下载: pyinstaller 有需要了解如何使用国内镜像的小伙伴可以滴滴到此: 国内镜像源详细使用教程! https://blog.csdn.net/xtreallydance/article/details/112596963 在python终端或者cmd中输入此命令: pip install pyinstaller -i https://p

  • Golang 编译成DLL文件的操作

    首先撰写golang程序exportgo.go: package main import "C" import "fmt" //export PrintBye func PrintBye() { fmt.Println("From DLL: Bye!") } //export Sum func Sum(a int, b int) int { return a + b; } func main() { // Need a main function

  • 如何将Python编译成C语言

    前言: 文章里用的Python环境是Anaconda3 2019.7这里测试的程序是找出所有1000以内的勾股数.a∈[1, 1000],b∈[1, 1000], c∈[1, 1000] 足a² + b² = c² 有多少种解? 如果用普通的python去写,代码如下: 创建一个main.py # encoding=utf-8 # cython: language_level=3 import time import pyximport pyximport.install() import py

  • Python打包成exe文件的详细操作指南

    目录 前言 一.安装pyinstaller 1.1 安装pyinstaller,使用安装命令: 1.2 如果遇到需要更新版本请输入: 1.3 检查是否正确安装 1.4 稍等,水一下; 二.python打包成exe文件(附带图标打包) 2.1 第一种:cd到指定文件夹打包存放 2.2 第二种方法:cd到py源文件夹内打包存放 2.3最终效果 参考:命令解释 总结 前言 我原本是学C\C++,这是本人第一篇关于python的文章.请多多关照! 对于python为什么要打包成exe文件,是因为传输源文

  • C#实现将javascript文件编译成dll文件的方法

    本文实例讲述了C#实现将javascript文件编译成dll文件的方法.分享给大家供大家参考,具体如下: 第一步:新建项目 添加js文件 写个测试Function (JScript.js) 单击JS文件属性.将 生成操作 改成嵌入的资源 第二步:在项目文件中添加一个类文件  该 类继承System.Web.UI.WebControl类 并重写控件预呈现的方法 代码如下: public class ClientScript:System.Web.UI.WebControls.WebControl

  • linux中把.c的文件编译成.so文件

    linux中共享库以so为后缀(shared object),与Windows下的DLL类似,是在程序运行时动态连接.多个进程可以连接同一个共享库. 以下以编译mylib.c为例讲如何编译.so文件. 首先,编译mylib.c: $gcc -c -fPIC -o mylib.o mylib.c -c表示只编译(compile),而不连接.-o选项用于说明输出(output)文件名.gcc将生成一个目标(object)文件mylib.o. 注意-fPIC选项.PIC指Position Indepe

  • python 多线程将大文件分开下载后在合并的实例

    废话不多说了,上代码吧: import threading import requests import time import os class Mythread(threading.Thread): def __init__(self,url,startpos,endpos,f): super(Mythread,self).__init__() self.url=url self.startpos=startpos self.endpos=endpos self.fd=f def downl

随机推荐