【Python 源代码加密】pyinstaller的伪加密,以及easycython的 “future feature annotations is not defined“ 问题

0. 对pyinstaller打包的exe进行破解

  1. 需要一个python脚本
    github传送门 https://github.com/extremecoders-re/pyinstxtractor
  2. 把脚本放到exe同级目录下,命令行运行
python pyinstxtractor.py xxxx.exe
  1. 运行之后,源码的pyc字节码文件会出现在
xxx.exe_extracted/PYZ-00.pyz_extracted/*.pyc
  1. 对字节码pyc进行反编译

1. pyinstaller 打包时加密

  1. pyinstaller打包加密使用的是对称加密算法AES,需要提前安装tinyaes
pip install tinyaes
  1. 安装之后,在打包命令行加入参数key,指定密钥
pyinstaller --key xxxx
  1. 再运行破解脚本,生成的目录下将不再是.pyc字节码文件,而是加密后的.pyc.encrypted
  2. 注意 如果你仔细的话,你会发现你的密钥key也在破解目录下的pyimod00_crypto_key文件里了,打开后你能发现你的密码。
    而pyinstaller使用的是AES对称加密算法,有了密钥就能解密你的.pyc.encrypted文件。所以说使用使用pyinstaller加密参数进行加密形同虚设。
    把密钥也打包进exe,不知道pyinstaller的开发者咋想的。。。。

2. easycython加密源码成pyd文件

pyinstaller的加密不行,只能另辟蹊径,把源代码编译成动态链接库的形式pyd文件

  1. 首先需要安装easycython
pip install easycython
  1. 运行easycython xxx.py
    会生成三个文件:
  • C源代码文件
  • 注释文件html
  • 动态链接库pyd文件,这是我们需要的
  1. 对pyd进行pyinstaller的打包

3.easycython编译遇到的问题

如果代码中使用了

 from __future__ import annotation

或者类似的 from __future__ import *
在编译时可能会出现

SyntaxError: future feature annotations is not defined

出现该问题是因为安装easycython的时候自带安装cython版本为0.29.34,该版本不支持future feature,需要卸载掉,安装3.0版本的cython

pip uninstall cython

cython的最新版本在此查看 https://pypi.org/project/Cython/#history

pip install cython==3.0.0b2

再次编译可通过。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值