Python 代码混淆和加密技术

动机

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

混淆

为了增加代码阅读的难度, 源代码的混淆非常必要, 一个在线的Python代码混淆网站. http://pyob.oxyry.com/

同时需要注意的是, 这个混淆其实还是被很多人怀疑的, 因为即使混淆了, 也没有改变代码的结构. 这种方法只能”防君子,不防小人“

所以, 必要的话, 在编程的时候, 可以故意做点提高逆向难度的事情:

结构稍微改变, 合并几个类到同一个文件.

面向对象的结构中, 偶尔穿插一些无伤大雅的范式编程风格.

加密

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

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

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

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

总结

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

原文地址:https://www.cnblogs.com/dhcn/p/11077416.html

时间: 2024-10-08 21:16:55

Python 代码混淆和加密技术的相关文章

Python 代码混淆和不可告人的加密技术!

Python进行商业开发时, 需要有一定的安全意识, 为了不被轻易的逆向. 混淆和加密就有所必要了. 混淆 为了增加代码阅读的难度, 源代码的混淆非常必要, 一个在线的Python代码混淆网站. http://pyob.oxyry.com/ 同时需要注意的是, 这个混淆其实还是被很多人怀疑的, 因为即使混淆了, 也没有改变代码的结构. 这种方法只能"防君子,不防小人" 所以, 必要的话, 在编程的时候, 可以故意做点提高逆向难度的事情: 结构稍微改变, 合并几个类到同一个文件. 面向对

小试.NET代码保护软件(代码混淆、加密)

有着微软人性化的开发工具VISUAL STUDIO和MSDN详尽的帮助,.NET 的开发效率的确高. 但是由于.NET同JAVA一样都采用中间语言.虚拟机/SDK等诸多特质,而且高等语言的类库编码规范,MSIL微软中间语言可读性很高,所以代码很容易就能被反编译,或许这是一种“另类的开源”. 到目前为止.NET开发的桌面软件或者说共享软件真的很少,大多都是一些管理系统.ERP.等一些数据库软件,这些软件一般结构复杂,采用了架构或者平台等一些机制,而且一个功能都可以写N多个类,即使被反编译了别人也要

ProGuard代码混淆技术详解

前言 受<APP研发录>启发,里面讲到一名Android程序员,在工作一段时间后,会感觉到迷茫,想进阶的话接下去是看Android系统源码呢,还是每天继续做应用,毕竟每天都是画UI和利用MobileAPI处理Json还是蛮无聊的,做着重复的事情,没有技术的上提升空间的.所以,根据里面提到的Android应用开发人员所需要精通的20个技术点,写篇文章进行总结,一方面是梳理下基础知识和巩固知识,另一方面也是弥补自我不足之处. 那么,今天就来讲讲ProGuard代码混淆的相关技术知识点. 内容目录

代码混淆之道——控制流扁平与不透明谓词理论篇

控制流是指代码执行时指令的执行顺序.在各种控制逻辑的作用下,程序会沿着特定的逻辑顺序执行.一般控制逻辑包括有无条件分支.循环.函数调用等. 本文原创作者:i春秋签约作家--penguin_wwy 一.扁平化的定义 本篇讲代码混淆的一个重要手段,控制流扁平化. 所谓控制流是指代码执行时指令的执行顺序.在各种控制逻辑的作用下,程序会沿着特定的逻辑顺序执行.一般控制逻辑包括有\无条件分支.循环.函数调用等.在正常情况下程序的逻辑非常好理解(代码逻辑不好的程序员都死了...),开发过程中有各种人为的行为

Android代码混淆及反编译

概述: 如果你目前还是一名学生或是没有在应用商店中上传过应用,恐怕对此的感受不深.而在企业中对Java代码的混淆却是一步很重要的步骤,从安全的角度来说,代码混淆,防止居心不良的人对代码进行恶意篡改非常重要.下面就是对Android项目进行的代码混淆和加密签名过程. 步骤: 1.在项目的要目录中添加文件proguard.cfg 2.在项目中的project.properties文件中添加proguard.cfg 3.在proguard.cfg文件中添加 -ignorewarnings -libra

Android代码混淆技术

Android混淆是Android开发者经常使用的一种用于防止被反编译的常见手法.Android开发基于java语言的,很容易被别人反编译出来,一下就相当于裸奔了,特别是用于商业用途的时候,防止反编译是必要的措施.而Android混淆的确可以保证Android源代码的一定安全. Android混淆技术 Java类名.方法名混淆 Dalvik字节码包含了大量的调试信息,如类名.方法名.字段名.参数名.变量名等,使用反编译工具可以还原这些信息.由于类名.方法名等通常都会遵循一定的命名规范,破解者很容

浅谈代码混淆加固技术

随着移动互联网的快速发展,应用的安全问题不断涌现出来,于是越来越多的应用开发者将核心代码由java层转到native层,以对抗成熟的java逆向分析工具,然而如果native层的代码如果没有进行任何保护,还是比较容易被逆向分析工作者获取其运行逻辑,进而完成应用破解或者进行其他的操作.那么提高native代码的安全性有什么好办法吗?答案是肯定的,今天我们就来介绍一种有效对抗native层代码分析的方法--代码混淆技术. 那么,什么是代码混淆呢?代码混淆的学术定义如下: 代码混淆(code obfu

御安全浅析安卓开发代码混淆技术

御安全浅析安卓开发代码混淆技术[关键词:代码混淆,Android应用加固,移动应用保护,APP保护,御安全] 提高native代码的安全性有什么好办法吗?答案是肯定的,今天我们就来介绍一种有效对抗native层代码分析的方法--代码混淆技术.随着移动互联网的快速发展,应用的安全问题不断涌现出来,于是越来越多的应用开发者将核心代码由java层转到native层,以对抗成熟的java逆向分析工具,然而如果native层的代码如果没有进行任何保护,还是比较容易被逆向分析工作者获取其运行逻辑,进而完成应

Java常用加密技术和代码总结

总结类文章,把一些常用的Java加密技术和核心代码写在这边,供参考. 首先大家要记住现代密码学最重要的原则柯克霍夫原则: 数据的安全基于密钥而不是算法的保密.也就是说即使密码系统的任何细节已为人悉知,只要密匙未洩漏,它也应是安全的. 具体来说: 系统必须可用,非数学上不可译码. 系统不一定要保密,可以轻易落入敌人手中. 密匙必须可以不经书写的资料交换和记忆,且双方可以改变密匙. 系统可以用于电讯. 系统可以转移位置,它的功能必须不用经过几个人之手才可达到. 系统容易使用,不要求使用者的脑力过份操