分阶段代码保护思路

分阶段代码保护剖析

一个编译型语言,简单概括经历编译-》汇编-》链接-》目标代码,一个解释型语言从源码-》字节码-》虚拟机-》机器语言。基于虚拟机的java很特殊,Java程序也需要编译,但是没有直接编译成为机器语言,而是编译成了字节码,然后java虚拟机上用解释方式执行字节码。python的也采用了java的编译模型,现将python程序编译成python字节码,然后由一个专门的python字节码解释器负责解释执行字节码。python是一个解释性的语言,但是为了效率上的考虑,python提供了编译的方法,将py文件编译成pyc文件,最大的优点在于我们在运行程序的时候,不需要重新对该模块进行重新的解释,编译之后是bytecode的形式,这种bytecode也增加了反向工程的难度,一定程度上也保护了你的代码。

下面提供一些思路

各阶段思路

python

对于python代码,首先编写一个源码.py文件,在我们运行的时候会在内存中编译py代码,在内存中表示为pyCodeProject对象,有可重用的模块会编译成.pyc可重用模块,运行结束后写入到磁盘。pyCodeProject和可重用的.pyc文件代码会在python虚拟机上经过python解释器,逐步解释生成机器码用于控制pc。经过上述的过程代码就运行起来了,所以基本上每一个步骤都可以作为代码保护的切入点

源码阶段

.py代码基本上在项目开发阶段和交付阶段是处于裸奔状态的,无论是交付项目还是参加竞赛,乙方只是需要代码可运行,源码阶段是第一步防线。

该阶段常用的方式就是代码混淆,代码混淆的方式也分多种,感兴趣可以看看《》。然后目前市面上的工具自行探索

代码编译阶段

代码编译阶段,主要就是.py文件编译成pyc文件、pyd文件。或者是通过字节码加密的方式来保护代码编译阶段的代码

可执行文件

可以将py代码编译成可执行文件,提升代码的安全性

定制python解释器

定制python解释器主要是针对python代码解释运行的控制,通过加密技术对python解释器的.c源码进行修改,感兴趣的话可以自行去官方下载cpython的源码,搜索定制python解释器也有相关的教程。

license控制

license控制是建立在源码加密的基础之上的,没有加密过的代码已经到了客户手中,license控制就是没必要了。

包压缩加密

实在不行的话,把你的python代码打成一个压缩包,加上密码,在c的源码或者其他加密过的代码中器解压使用这个代码也是可以的。

总结

上述方式可以进行个性化的组合,每一种都有利有弊,比如混淆后的代码在看堆栈的时候很难受,基本不能排错。也不一定要用多种方法来保护代码,可能到了最后家里配了多把锁,自己却回不了家,那就得不偿失了

java

java代码简单来说是在内存中编译成了字节码文件,然后在JVM中运行。我们可以在以下多个阶段进行代码保护

码编译

通过GCJ等工具在代码编译阶段保护代码

代码混淆

通过代码混淆方法,对java字节码进行混淆,防止反编译

字节码加密

通过Java agent探针对字节码进行加密;

可执行文件

将java代码编译成exe文件

license控制

与python一样

包加密
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值