zoukankan      html  css  js  c++  java
  • 对源代码进行pyd加密

    因为需要将代码运行在外面的机器上,所以为了保护代码的安全,需要对核心代码进行加密,在网上找了很多资料, python有py,pyc,pyw,pyo,pyd等文件格式,其中,

    pyc是二进制文件.但很容易被反编译.

    pyw也不行,只是隐藏命令行界面而已,可以作为入门脚本.

    pyo和py差不多,也容易被反编译,最后只剩下pyd格式.

    pyd格式是D语言(c/c++综合进化版本)生成的二进制文件,实际也是dll文件(DLL是一个包含可由多个程序,同时使用的代码和数据的库). 该文件目前为止没有找到被反编译的方法,只能被反汇编,无返返回变成.py或.pyx 源文件,只能反汇编成.c文件,且反汇编出来的程序会和源程序会有许多不同.

    小结: .pyd文件 是由 .c文件生成的 .c文件 由 源.py 或 .pyx文件 基于Cython库 生成

    python的py文件生成pyd文件步骤:

    1. 安装 Cython:

      pip install Cython

    2. 在要被编译的py文件的当前目录下,创建一个setup.py文件,文件内写代码:

      from Cython.Build import cythonize
      from distutils.core import setup
      
      setup(name='nihao',ext_modules=cythonize(r"要被编译的py文件的绝对路径"))
      
      cythonize() 是Cython提供将python转换成c代码的API
      setup是Python提供的一种发布Python模块的方法.
      
    3. 警告:使用开发环境是python3时要注意:会报警告,出问题.

      FutureWarning:Cython directive 'language_level' not set, using 2 for now (Py2)

      只要在要被编译的文件内容上方加上 # cython: language_level=3 即可

    4. 使用命令行编译python setup.py build_ext --inplace

      要注意,输入命令时需要在setup相应的路径下输入该命令

    5. 输入命令后会出现“Unable to find vcvarsall.bat”错误。

      问题原因:python 编译器找不到计算机上面的 VC 编译器,计算机上没有安装 visual studio c++。
      
      解决方法1:
      
      下载相应的VC编译器,安装Build Tools for Visual Studio即可 
      
      解决方法2:
      
      在虚拟环境的cmd中执行 conda install libpython
      
      等待下载安装(可能需要一小段时间),然后再次执行python setup.py build_ext --inplace  即可,网上的方法,未尝试.
      
      解决方法明细:附一大佬的博客园地址:https://www.cnblogs.com/xunziji/p/7785021.html    内有更完美的方法,下在对应版本的.wsl文件 再在c盘下进行 pip install xxx.wsl 即可.
      

      5.执行完后会生成如下文件

      img

      img

      生成文件xxx.cp36-win_amd64.pyd
      手动将其重命名为xxx.pyd
      注意:这里重命名时去掉“.cp35-win_amd64”不要更改前面的名字,否则不能正常引用
      然后python环境下
      import xxx #保证当前文件夹下没有xxx.py或者xxx.pyc
      xxx.test()
      
      build是生成过程使用到的临时文件。xxx.c也是临时文件.
      
      xxx.pyd是我们所需的文件。在linux环境下,对应的是xxx.so
      
      pyd文件可以像平常一样使用
      
      这样将py核心代码改成pyd格式即可实现源码加密功能.
      

      img

      此处附上一个大佬的csdn地址:https://blog.csdn.net/Gavinmiaoc/article/details/84340736?utm_medium=distribute.pc_relevant.none-task-blog-baidujs-2

  • 相关阅读:
    Linux分区
    Vim 基本配置
    Ubuntu几种常见乱码解决方法
    ADB
    ubuntu下安装配置ADB
    Tinyos学习笔记(三)
    Tinyos学习笔记(二)
    Codeforces Round #249 (Div. 2) A题
    poj 2007 Scrambled Polygon(极角排序)
    MemSQL Start[c]UP 2.0
  • 原文地址:https://www.cnblogs.com/lingege/p/12933610.html
Copyright © 2011-2022 走看看