应打包群的群友要求将py文件打包pyd来防止被破解,大家 熟知用cython可以做到,可是我们pythonic的精神是人生苦短,我用Nuitka。
在以前的文章中,我们提到将需要打包的py代码放在need文件夹中,运行速度快了,编译速度也快了,还是有一些聪明的群友提到。如果数据库部分没有打包成C++,是不是可以在数据库的地方把用户名和密码等print出来,这个考虑是对的
这只是我写这篇文章的主要原因之一,还有一半的原因是很多的py程序直接打包的话会失败,还不如分成两部或者多部来打包,中间通过pyd来衔接。这样的话我们解决python领域的以下几个问题:
- 加密预防反编译,虽然对方可以读到pyd的函数,读到的是数据可以通过md5加上随机进行二次加密,或者绑定多个硬件信息;随机函数即便拿到下次就用不了,破解就没有用了(如果对方比较变态,OK,做两个随机并绑定mac和cpu信息的pyd发送和接收控制)
- python3x.dll对pyd的敏感度没有像py文件那么严,通过这个方法把打包失败的地方分开来进行,改善复杂模块的打包失败率,打包成功的几率又大大提高了
- pyd的快速实现
这一行命令很简单:
nuitka --mingw64 --module --show-progress --output-dir=o 你的.py
以下是昨天我们nuitka打包群朋友的案例来进行的,打包一个包含peewee模块的程序
这个peewee中包含pymysql和其他模块,直接用Nuitka打包会失败,报错如下
执行 nuitka –mingw64 –module –show-progress –output-dir=o peewee.py
几分钟后pyd文件就出来了
然后试着删除peewee.py,把这个pyd文件放到Python37\Lib\site-packages\目录下,程序完美运行,再打包整个exe,打完收工