Qwe*_*rty -2 python compiler-construction decompiler
可以反编译.pyc文件:反编译Python 2.7 .pyc
是否有可能`编译'python文件,所以有一个人类不可读的代码,如c++ -> exe二进制文件?..不像明文.py和非常容易恢复的 .pyc文件?(我不介意它是否可以被蛮力破解)
Python是一种高度动态的语言,支持许多不同级别的内省.因此,混淆Python字节码是一项多山任务.
此外,您的嵌入式python解释器仍然需要能够执行产品附带的字节码.如果解释器需要能够访问字节码,那么其他人也可以.加密无济于事,因为您仍然需要自己解密字节码,然后其他人都可以从内存中读取字节码.混淆只会使默认工具更难,而不是无法使用.
话虽如此,这就是你要做的事情,让你真正难以阅读你的应用程序的Python字节码:
重新为所有python操作码值分配一个新值.重新连接整个解释器,为不同的操作码使用不同的字节值.
尽可能多地删除所有内省功能.你的函数需要有闭包,而代码对象仍然需要常量,但是对于代码对象中的locals列表来说,例如.中性sys._getframe()函数,斜杠追溯信息.
这两个步骤都需要深入了解Python解释器的工作方式,以及Python对象模型如何组合在一起.你肯定会介绍很难解决的bug.
最后,你必须问自己这是否值得.确定的黑客仍然可以分析您的字节码,进行一些频率分析以重建操作码表,和/或为您的程序提供不同的操作码以查看发生的情况,并解密所有混淆.创建转换表后,快速反编译您的字节码,重建代码并不遥远.
如果您只想阻止字节码文件被更改,请为您的.pyc文件嵌入校验和,并在启动时检查这些文件.如果不匹配则拒绝加载.有人会修补您的二进制文件以删除校验和检查或替换校验和,但您不必投入相当多的努力来提供至少一些令牌保护以防止篡改.