如何记录服务器对php代码的处理?如何反编译php代码?

Posted

技术标签:

【中文标题】如何记录服务器对php代码的处理?如何反编译php代码?【英文标题】:How to record the processing of php code by the server ? how to decompile php code? 【发布时间】:2020-11-27 17:05:44 【问题描述】:

php代码是如何执行的,服务器又是如何处理的?

我们都知道所有的软件都会变成机器语言(01)。

我们还可以轻松地将机器语言(01) 转换为汇编语言。

最后我们完成了反编译操作,我们可以对软件进行逆向工程了!

这是真的?! 好的!

现在经过不同算法和不同软件(例如(zend,ioncube,...))加密的php代码最终将被转换为php代码,以便服务器能够处理它们?!

被加密的代码最终应该成为服务器可读的语言,对吧?

我想知道在服务器上反编译这段源码的过程是什么?

示例:

这是我的代码:

<?php

$x = 1;
$y = 2;
$sum = $x + $y;
echo $sum;

输出:

3

为了进行这个简单的计算,服务器获取 php 代码,然后对其进行处理并显示输出 ....

有没有办法记录服务器处理代码的过程? 就像最终成为机器语言的软件一样,我们得到该软件的机器代码以进行逆向工程!

我用谷歌翻译这个问题,希望你明白我的意思!谢谢大家。

【问题讨论】:

PHP 没有像 Java 或 C# 那样编译成机器语言或字节码。它由 PHP 程序在运行时解释和执行。因此,如果一开始就没有编译,就没有办法“反编译”。欲了解更多信息,请参阅stillat.com/blog/2014/04/02/… 不同软件加密的代码最终变成了php语言?如果是这样,有没有办法在服务器上运行时记录这些代码? "不同软件加密的代码最终变成了php语言?"我不确定你的意思。 PHP 源代码由 PHP 程序解释。就像 javascript 由您的浏览器解释一样。没有编译或编译发生。 PHP 是 PHP 并且仍然是 PHP 我们加密我们的 php 代码来保护它。当我们执行我们的 php 加密代码时,必须通过一组密钥对其进行解密,这样才能被服务器读取和处理。我们看不到服务器解码和处理这个过程,最后我们只看到输出。我想看看并记录这个过程。输出对我来说并不重要。 "我们加密我们的 php 代码来保护它" 如果你自己加密了代码,你也知道如何解密吧? 【参考方案1】:

上面的一些 cmets 是混乱的,并不完全准确。这应该会提供一些见解。

“我们都知道所有的软件都会变成机器语言”

撇开位于以下机器语言的代码,例如在 CISC 或 EISC 架构中发现的代码(例如,曾经制作唱片播放器的人的 Linn Rekursiv),软件可能不会变成 机器语言,而是简单地按原样解释或由实现虚拟机的程序编译和执行。所以它可能会被转换,但不一定是机器语言。

“php代码是如何执行的,服务器是如何处理的”

从 PHP 4 开始,PHP 源代码被编译为字节码,字节码由虚拟机执行,即所谓的“Zend 引擎”。由于编译的结果是确定性的,这自然适用于缓存,并且 PHP 安装通常会有一个缓存组件,用于优化和缓存已编译的字节码在共享内存中。缓存允许对缓存且未更改的文件跳过编译步骤,并通过确保满足与内存寻址相关的一些其他先决条件,可以直接从共享内存缓存执行编译后的代码,无需反序列化和最小开销,因此提供良好的加速。

服务器可以通过多种方式触发 PHP 执行,例如直接运行 PHP 命令行程序,将 PHP 内核链接到 Web 服务器,或者 PHP 进程在池中运行,并在服务器和服务器之间传输 I/O PHP 通过一些 IPC 机制。

Zend 和 ionCube 等保护系统不是保护源代码,而是首先通过将源代码编译为字节码来利用编译到字节码的过程,然后以各种方式进一步保护字节码,也许还利用自定义执行引擎.

字节码系统的机器指令往往比本机机器码更接近于它们所针对的高级语言,例如,PHP 字节码具有直接实现 foreach 和一些其他关键字的指令。因此,字节码往往更容易反编译,而 PHP 的反编译器从 2006 年左右开始出现在中国,后来出现了 XCache 等项目。

【讨论】:

以上是关于如何记录服务器对php代码的处理?如何反编译php代码?的主要内容,如果未能解决你的问题,请参考以下文章

php如何运行

安卓反编译出来的代码如何修改重新生成APK

如何反编译IMG(内核)文件?

PHP7 学习笔记如何使用zephir编译一个扩展记录

Unity3D之脚本反编译点滴记录

Zend 引擎如何编译 php 代码或 php 编译器如何工作?