php 模块 编译到源码-PHP 代码的加密被揭露

PHP语言作为一种脚本语言,不需要编译,因此PHP程序的发布一般都是直接发布源代码。 对于一些开源软件来说,这并不是问题,因为它本来希望有更多的人阅读代码,有更多的人参与,但是对于商业代码来说,这并不是一个好主意。 信息,无论是商业秘密还是公司产权保护,都是一个问题。 在此基础上,提出了对PHP代码进行加密和解密的议程。 比如国外的Discuz峰会程序必须安装Zend Optimizer才可以开源。 Zend官方的代码加密软件是Zend Guard,可以用来对PHP代码进行加密和混淆,使得分发的代码可以避免直接分发源代码。 ,但是加密后的代码很难直接运行。 需要解密的模块才能在运行时运行加密的程序。 要运行Zend Guard加密代码,需要安装Zend Optimizer(PHP5.2之前的版本),或者安装Zend Guard Loader(PHP5.3版本)扩展才能运行。

加密的本质

本质上,程序在运行时就是在执行机器代码,而基于虚拟机的语言的加密一般都加密到这个级别,这意味着PHP加密的程序在执行之前会被解密成操作码来执行。

php 模块 编译到源码-PHP 代码的加密被揭露

PHP在执行之前有一个编译步骤。 编译的结果是操作码,然后由Zend虚拟机执行。 从这个角度来看,如果只需要对源代码进行加密,然后在执行前将代码暴露出来。

从这里开始,只要代码可以被揭示为操作码,就总是可以反编译源代码。 在其他语言中也是类似的。 例如,objdump程序可以反汇编二进制程序,对于.NET和Java程序也是如此。 有一些反编译程序,但通常此类厂商也会提供代码混淆工具。 混淆后的代码可读性极差。 很多人都关注过Gmail等网站的混淆JS代码。 他们可以阅读它。 这个非常困难。 混淆后的代码即使被反编译php 模块 编译到源码,读者也很难分析代码中的逻辑,大大降低了应用程序的安全性。

实践中揭示的简单代码加密

php 模块 编译到源码-PHP 代码的加密被揭露

根据前面的介绍,作为例子,本文将编译一个简单的代码加密扩展,用于加密PHP代码。 我们只需要能够加密源代码。 单纯通过浏览源码很难获得源代码。 那么我们的目的就达到了,为了正确执行加密后的代码,我们还需要另一个模块:解密模块。

简单的想法就是将所有PHP文件代码加密并保存为同名的PHP文件。 这是一个非常简单的做法,只是为了避免代码中赤裸裸地暴露源代码。

加密的方法有很多种。 第一种简单的方法是简单地对源代码本身进行一些可逆加密,这样我们就可以在运行之前解码真正的源代码。 然而,这些方法存在一个问题。 只要知道加密算法,我们就可以解码代码。 我们用这些方法唯一能做的就是尽可能降低加密的复杂度。 由于接下来的代码在运行之前会转换成PHP源代码,因此完全可以通过hacking的方式来完成。 如果获得PHP源代码,保密的效果将非常有限。

php 模块 编译到源码-PHP 代码的加密被揭露

因为Zend引擎最终执行的是opcode,那么只要我们能够保证opcode能够被揭示,就可以满足需求。 我们只需要简单地序列化操作码或者像Zend Guard一样对其进行混淆,并在运行之前恢复操作码,那么源代码信息就不再存在,这样我们就可以保证源代码的安全,防止其被窃取。

加密

前面提到的加密的目的是为了防止程序源代码被轻易获取。 对于PHP来说,将源代码编译成opcode已经可以达到目的了,因为PHP引擎最终需要执行opcode。 虽然加密可以进一步提高,但是如果需要改Zend引擎的话,成本会有点高,因为需要改Zend引擎,而这很难通过简单的扩展机制来实现,所以成本泄露秘密也会变得太高。 ,没有实际意义。

php 模块 编译到源码-PHP 代码的加密被揭露

本例中,为了方便起见,代码的加密和解密实现在同一个模块中实现。

熟悉PHP的朋友可能会发现,这种加密方式与操作码缓存并没有本质上的区别。 操作码缓存的工作就是将源代码编译成操作码然后进行缓存。 在执行过程中,直接执行操作码,绕过编译。 确实是这样。 这里唯一的区别是:操作码缓存是动态透明的,加密后我们要做的就是分发加密的代码。 那么我们是否可以只翻新APC等缓存扩展呢? 事实上,理论上是可行的。 不过三者的定位还是有区别的:加密的目的是为了降低源代码被分析破解的可能性,而缓存只是为了提升程序运行的速度。

解密

php 模块 编译到源码-PHP 代码的加密被揭露

虽然这个例子中的代码没有加密,但是相对于源代码php 模块 编译到源码,操作码编译本身可以被视为一种加密,因为尽管通过阅读操作码仍然很难理解程序的逻辑。

完成

去做

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悟空资源网 源码编译 php 模块 编译到源码-PHP 代码的加密被揭露 https://www.wkzy.net/game/200742.html

常见问题

相关文章

官方客服团队

为您解决烦忧 - 24小时在线 专业服务