资讯专栏INFORMATION COLUMN

Python 代码混淆和加密技术

didikee / 3286人阅读

动机

Python进行商业开发时, 需要有一定的安全意识, 为了不被轻易的逆向. 混淆和加密就有所必要了.
混淆

为了增加代码阅读的难度, 源代码的混淆非常必要, 一个在线的Python代码混淆网站. http://pyob.oxyry.com/
同时需要注意的是, 这个混淆其实还是被很多人怀疑的, 因为即使混淆了, 也没有改变代码的结构. 这种方法只能”防君子,不防小人“
所以, 必要的话, 在编程的时候, 可以故意做点提高逆向难度的事情:
结构稍微改变, 合并几个类到同一个文件.
面向对象的结构中, 偶尔穿插一些无伤大雅的范式编程风格.
加密

最基本的方法是发布pyc文件, 也就是将所有的.py源文件转换成pyc对外发布. pyc有一个局限性是依赖于python解析器的版本, 使用某一个版本的python解释器生成的pyc必须要在相同版本下的python解释器下才可以正常工作.

使用上述方法可以方便的生成pyc, 初步的隐藏代码了. 不过pyc依然可以被容易的破解

另一种方案是借助cython. Cython是属于PYTHON的超集,cython可以将python文件转换成c, 并编译成pyd文件. 一般将核心模块编译成pyd, 这样被破解的风险就大大降低了. 优势:资源丰富,适合快速开发。翻译成C后速度比较快。缺点是:无法支持JIT技术(导致纯python的执行速度比JAVA、JAVASCRIPT等要慢,于是有了PyPy)

有一个经验之谈, 你可以将所有每个模块中的某个一个位置的变量抽出, 放到一个python文件中, 使用cython来处理这个文件. 这样就会增加破解者从其他pyc文件中移除pyd文件依赖的难度了.
总结

作为一门解释型的语言,加密的难度超级大的,开源代码是王道, 但是遇到非加密不可情况, 可以选择上面的加密方法或者混淆方法。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/43290.html

相关文章

  • 知乎最新版模拟登陆详解,小白也能懂

    摘要:模拟登陆知乎这个知乎的登陆也是坑满满,我也给踩了几个,这个就直接说坑吧,其他的就不多说了。 以下内容仅交流学习,请勿用于非法用途 如果你现在想模拟登陆知乎,会发现 fromdata 是一串加密的字符串 showImg(https://segmentfault.com/img/remote/1460000018245629); 看了之后是不是很痛苦?你是不是就想使用 selenium 来...

    buildupchao 评论0 收藏0
  • 知乎最新版模拟登陆详解,小白也能懂

    摘要:模拟登陆知乎这个知乎的登陆也是坑满满,我也给踩了几个,这个就直接说坑吧,其他的就不多说了。 以下内容仅交流学习,请勿用于非法用途 如果你现在想模拟登陆知乎,会发现 fromdata 是一串加密的字符串 showImg(https://segmentfault.com/img/remote/1460000018245629); 看了之后是不是很痛苦?你是不是就想使用 selenium 来...

    xuxueli 评论0 收藏0
  • Android 开发怎样做代码加密混淆

    摘要:网易资深安全工程师钟亚平在今年的安卓巴士全球开发者论坛上做了安卓逆向与保护的演讲完整演讲内容请见这里一文了解安卓逆向分析与保护机制,其中就谈到了关于代码混淆的问题。就是一个混淆代码的开源项目,能够对字节码进行混淆缩减体积优化等处理。 欢迎访问网易云社区,了解更多网易技术产品运营经验。 在大公司怎么做android代码混淆的?发现他们的软件用apktool反编译居然没看到classes....

    incredible 评论0 收藏0

发表评论

0条评论

didikee

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<