作为一个填坑的自我记录

使用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反编译出来是这样:

看起来还是多少有点效果的。

当然,这玩意儿防君子不防小人,只能说有胜于无,真想去壳破解肯定还是有办法的

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐