Python代码混淆和加密技术
动机
Python进⾏商业开发时, 需要有⼀定的安全意识, 为了不被轻易的逆向. 混淆和加密就有所必要了.
混淆
为了增加代码阅读的难度, 源代码的混淆⾮常必要, ⼀个在线的Python代码混淆⽹站.
同时需要注意的是, 这个混淆其实还是被很多⼈怀疑的, 因为即使混淆了, 也没有改变代码的结构. 这种⽅法只能”防君⼦,不防⼩⼈“
所以, 必要的话, 在编程的时候, 可以故意做点提⾼逆向难度的事情:
结构稍微改变, 合并⼏个类到同⼀个⽂件.
java源代码加密⾯向对象的结构中, 偶尔穿插⼀些⽆伤⼤雅的范式编程风格.
加密
1. 最基本的⽅法是发布pyc⽂件, 也就是将所有的.py源⽂件转换成pyc对外发布. pyc有⼀个局限性是依赖于python解析器的版本, 使⽤
某⼀个版本的python解释器⽣成的pyc必须要在相同版本下的python解释器下才可以正常⼯作.
使⽤上述⽅法可以⽅便的⽣成pyc, 初步的隐藏代码了. 不过pyc依然可以被容易的破解
1. 另⼀种⽅案是借助cython. Cython是属于PYTHON的超集,cython可以将python⽂件转换成c, 并编译成pyd⽂件. ⼀般将核⼼模块
编译成pyd, 这样被破解的风险就⼤⼤降低了. 优势:资源丰富,适合快速开发。翻译成C后速度⽐较快。缺点是:⽆法⽀持JIT技术(导致纯python的执⾏速度⽐JAVA、JAVASCRIPT等要慢,于是有了PyPy)
有⼀个经验之谈, 你可以将所有每个模块中的某个⼀个位置的变量抽出, 放到⼀个python⽂件中, 使⽤cython来处理这个⽂件. 这样就会增加破解者从其他pyc⽂件中移除pyd⽂件依赖的难度了.
总结
作为⼀门解释型的语⾔,加密的难度超级⼤的,开源代码是王道, 但是遇到⾮加密不可情况, 可以选择上⾯的加密⽅法或者混淆⽅法。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论