实际上,Dropbox 做得很好,他们能够保护用 python 制作的桌面应用程序;我对此进行了很多研究,但没有比混淆更好的解决方案,这不是很安全的方法,你最终会看到你的代码上传到某个地方。
我听了Giovanni Bajo(PyInstaller 创始人)的一次会议,他说 Dropbox 是这样做的:
- 通过重新编译 CPython 的解释器来进行字节码加扰,这样,标准 CPython 解释器将无法运行它,只能运行重新编译的 cpython 解释器。
- 您需要做的就是洗牌下面的数字
define loadup 8
。
我从来没有看过 Python 的源代码,所以,我不会声称我完全理解上面的话。
我需要听到专家的声音:这样的事情怎么办?如果重新编译后我将能够使用 PyInstaller 等可用工具打包我的应用程序?
更新:
我对 Dropbox 如何进行这种类型的混淆/突变进行了一些研究,我发现了这一点:
根据Hagen Fritsch的说法,他们分两个阶段进行:
他们使用 TEA 密码以及由每个 python 模块的代码对象中的一些值播种的 RNG。他们相应地调整了口译员,使其
a) 解密模块和
b) 防止访问解密的代码对象。
这本来是一条直接的路径,让 Dropbox 解密所有内容并使用内置编组器转储模块。
使用的另一个技巧是操作码的手动加扰。不幸的是,这只能半自动地修复,因此他们的单字母替换密码在赢得一些时间方面证明是非常有效的。
我仍然想要更多关于如何做到这一点的见解,此外,我不知道在这个过程中解密是如何发生的......我想要所有专家的声音......普通人你在哪里。