动机

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

混淆

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

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

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

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

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

加密

  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文件依赖的难度了.

总结

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

Python 代码混淆和加密技术相关推荐

  1. Python 代码混淆和加密技术简述

    Python 代码混淆和加密技术 1. 背景 Python进行商业开发时, 需要有一定的安全意识, 为了不被轻易的逆向还原. 混淆和加密就有所必要了. 2. 目前的混淆和加密方案 2.1 混淆 减少p ...

  2. Python代码混淆和加密技术

    背景 Python进行商业开发时, 需要有一定的安全意识, 为了不被轻易的逆向还原. 混淆和加密就有所必要了. 代码混淆是将程序中的代码以某种规则转换为难以阅读和理解的代码的一种行为. 1. 混淆 减 ...

  3. Python代码混淆技术

    Python代码混淆技术 1. .py代码混淆技术 我们一般对反汇编代码进行还原时,默认CALL就是对一个函数的调用,碰到RET就是函数返回,条件分支两侧的代码都有可能被执行.而代码混淆就是打破了这种 ...

  4. python 代码混淆 代码保护 pyminifier

    python 代码混淆 pyminifier 文章目录 python 代码混淆 pyminifier 安装 修改源码 混淆 python 代码 网站混淆 常用命令 安装 pip install pym ...

  5. Java代码混淆和加密--Jocky

    原文地址为: Java代码混淆和加密--Jocky 1.1 什么是Jocky? 我们知道,Java是一种跨平台的编程语言,其源码(.java文件)被编译成与平台无关的字节码(.class文件),然后在 ...

  6. Python代码加壳加密pyinstaller生成的exe反编译

    Python代码加壳加密反编译 phthon加壳 pyinstaller生成的exe反编译 加壳 pyinstaller 版本高于3.0 命令行: pyinstaller -F -key=xxxxxx ...

  7. APP加密,ios代码混淆工具,虚拟化技术 适用于移动应用程序的虚拟化加密软件

    概述: KiwiVM是用于移动应用程序的虚拟化加密软件. 它基于Clang编译器扩展,并且在编译项目时虚拟化指定的函数.借助自定义CPU指令的功能,一旦对代码进行加密并且从未解密,攻击者将无法恢复代码 ...

  8. JAVA项目实现离线授权日期授权解决方案 代码混淆 字符串加密 支持JDK16

    通常项目是通过 <系统名称 + 物理地址+硬盘序号+当前时间>等等一些能区别服务器的参数作为源,来加密成一个申请码,然后通过授权码的方式进行授权的方式 但是这里有一个问题,如果项目是离线放 ...

  9. 【如何给iOS APP加固】之代码混淆及加密 第一章【附代码】

    为了给iOS app加固,我们可以采取以下几种方式: 1.代码混淆 代码混淆是通过修改源代码结构和变量名,使得代码难以被理解和反编译.这可以防止黑客获取应用程序的代码,因为即使他们能够获得源代码,也会 ...

最新文章

  1. android 短信验证码的实现
  2. c语言exit和return区别,在fork和vfork中使用
  3. 7个使用PyTorch的技巧,含在线代码示例!网友:我连第一个都不知道?!
  4. 关于职业目标规划的一点讨论
  5. java跳转_java 跳转语句
  6. 计算某一段程序消耗的内存和时间【Java】
  7. 设置centos6 yum源为光盘
  8. C语言printf 和 scanf 用法
  9. 彩色人物创意灵感|C4D万物皆可造!
  10. Anchor 对象学习
  11. mysql字符集导出_关于mysql字符集及导入导出
  12. linux 自动清理var log,Linux 系统 /var/log/journal/ 垃圾日志清理-Fun言
  13. Spring Tool Suite环境搭建
  14. php网页源码库存管理系统进销存mysql数据库web结构html布局
  15. 【办公协作软件】万彩办公大师教程丨全能文档转换工具
  16. 泰坦尼克号幸存者预测所用函数
  17. 比知识更重要的,是元认知和深度思考
  18. 阿里云 windows 服务器卸载阿里云盾
  19. leetcode 5. 最长回文子串(c++)
  20. [LOJ6515]「雅礼集训 2018 Day10」贪玩蓝月

热门文章

  1. 【app.json】配置说明,不断更新中
  2. [poj] 2749 building roads
  3. python实现中文图片文字识别--OCR about chinese text--tesseract
  4. strlen和mb_strlen的区别
  5. 微软BI 之SSAS 系列 - 在SQL Server 2012 中开发 Analysis Services Multidimensional Project
  6. [CSS]BlendTrans滤镜
  7. html2canvas导出地图,Leaflet OpenStreetMap使用html2canvas使用地图标记导出图像
  8. java正则表达式 引用_java – 正则表达式检索引用的字符串和引用字符
  9. java:十六进制转十进制
  10. linux怎么释放内存占用,如何将linux占用的空间释放