python发布exe混淆(防止反编译)
pyarmor使用方法
作为一个填坑的自我记录
使用python结合thinter进行开发一个有界面的程序,程序发布后需要考虑防止反编译的问题。
问了AI,也百度搜了一些方法,说的过于复杂。挑个比较简单的来说下,也是我当前使用的方式:pyarmor。
安装方法不必多说,使用pip进行下载。
当前我的发布配置:
Python 3.8.10
pyarmor==7.3.0(最新版的9.x的用不了,所以我安心用旧版本)
pyinstaller(随便什么版本)
使用方法:
pyarmor pack ***.py
就这么简单,看了AI说的一堆,还有很多教程说的一堆东西,实际上就这么简单。本质上是加了代码混淆后再使用pyinstaller进行编译出exe。当然,pyarmor还有其他很多功能,目前我用不到,如有需要可自行探索。
打包出来的exe文件就在dist文件夹内,打包后的exe并不是一个独立的exe,并且还带有cmd窗口。找了很多办法,东拉西扯说了半天也无法解决问题。
目前我的解决思路是,直接去找pack这个函数,然后修改pyinstaller的打包参数。
找到pyarmor文件夹,是在环境路径下的:\Lib\site-packages\pyarmor,实在找不到直接用everything搜。
找到文件夹之后找到packer.py这个文件,打开后找到,定位到250行:
def _pyi_makespec(hookpath, src, entry, packcmd, modname='pytransform'):
options = ['在这里加','-p', hookpath, '--hidden-import', modname,
'--additional-hooks-dir', hookpath, os.path.join(src, entry)]
cmdlist = packcmd + options
# cmdlist[:4] = ['pyi-makespec']
cmdlist[:4] = [sys.executable, '-m', 'PyInstaller.utils.cliutils.makespec']
run_command(cmdlist)
在-p前面加需要使用pyinstaller打包的参数。-F 输出单个exe,-w去除cmd窗口。改完了直接保存然后重新调用上面那个命令就好了。
编译出来的exe我自己使用pycdc反编译了一下,大概是长这样:
没有用pyarmor编译的代码,pycdc反编译出来是这样:

看起来还是多少有点效果的。
当然,这玩意儿防君子不防小人,只能说有胜于无,真想去壳破解肯定还是有办法的
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐

所有评论(0)