Как записать обработку сервером кода php? как декомпилировать код php? - PullRequest
0 голосов
/ 07 августа 2020

Как выполняется код php и как сервер его обрабатывает?

Все мы знаем, что все программное обеспечение становится машинным языком (01).

Мы также можем легко преобразовать машинный язык (01) на язык ассемблера.

И, наконец, мы выполнили операцию декомпиляции и можем перепроектировать программное обеспечение!

это правда ?! ok!

Теперь код php, зашифрованный разными алгоритмами и различным программным обеспечением, таким как (zend, ioncube, ...), в конечном итоге будет преобразован в код php, чтобы сервер мог обработать их?!

Зашифрованный код должен со временем стать читаемым языком для сервера, верно?

Я хочу знать, как происходит процесс декомпиляции этого исходного кода на сервере?

пример:

Это мой код:

<?php

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

вывод:

3

Для выполнения этого простого вычисления сервер принимает php код, а затем обрабатывает его и отображает результат ....

Есть ли способ записать процесс обработки кода сервером? Например, программное обеспечение, которое в конечном итоге становится языком машины, и мы получаем машинный код этого программного обеспечения для обратного проектирования!

Я перевел этот вопрос с помощью google translate, надеюсь, вы понимаете, о чем я! всем спасибо.

1 Ответ

0 голосов
/ 13 августа 2020

Некоторые комментарии выше запутаны и не совсем точны. Это должно дать небольшое понимание.

«Мы все знаем, что все программное обеспечение становится машинным языком»

Оставляя в стороне код, который находится под машинным языком, например, найденный в CIS C или EIS C (например, Linn Rekursiv от тех, кто раньше делал проигрыватели), программное обеспечение не может становиться машинным языком, а просто интерпретироваться как есть или компилироваться и выполняться программа, реализующая виртуальную машину. Таким образом, он может быть преобразован, но не обязательно на машинный язык.

«Как выполняется php код и как сервер его обрабатывает»

По состоянию на PHP 4, PHP исходный код компилируется в байт-код, а байт-код выполняется виртуальной машиной, так называемым «Zend Engine». Поскольку результат компиляции является детерминированным c, это, естественно, поддается кэшированию, и в PHP установках часто будет компонент кэширования, который оптимизирует и кэширует скомпилированный байт-код в общей памяти. Кэш позволяет пропускать этап компиляции для файлов, которые кэшируются и не изменяются, и, гарантируя выполнение некоторых других предварительных требований, связанных с адресацией памяти, скомпилированный код может выполняться непосредственно из кеша общей памяти без десериализации и минимальных накладных расходов, таким образом обеспечивает хорошее ускорение.

Существуют различные способы, которыми сервер может запускать выполнение PHP, например, непосредственный запуск программы PHP командной строки, подключение ядра PHP к веб-серверу или PHP процессы, выполняемые в пуле с передачей ввода-вывода между сервером и PHP через некоторый механизм IP C.

Вместо защиты исходного кода системы защиты, такие как Zend и ionCube, используют компиляцию для Процесс байт-кода сначала также компилирует исходный код в байт-код, а затем идет дальше, чтобы защитить байт-код различными способами, возможно, также используя пользовательский механизм выполнения.

Системы байт-кода, как правило, имеют машинные инструкции, которые близки r на язык высокого уровня, на который они нацелены, а не на собственный машинный код, с байт-кодом PHP, содержащим инструкции для непосредственной реализации foreach и некоторых других ключевых слов, например. В результате байт-код, как правило, легче декомпилировать, и примерно с 2006 года для PHP появились декомпиляторы, впервые появившиеся в Китае, а затем с такими проектами, как XCache.

...