[

пятница, 8 июля 2011 г.

Перегрузка функций закодированых ionCube и т.п. в PHP 5.3

Хотел порадовать вас Django и Dojo, но волею судьбы пришлось возиться с PHP.

Итак, проблема: имеет файл file.php закодированный, например, ionCube. Надо узнать какие функции есть в нем и перегрузить какую-либо.

1. С помощью get_defined_functions() и Reflection или Doqumentor смотрим что есть в файле.

2. Далее, переименовываем файл в base.file.php и создаем file.php со следующим содержимым:

<?php
namespace testns;
require("base.file.php");
?>

3. Все хорошо, можем перегрузить, например, функцию test_func():

<?php
namespace testns;
require("base.file.php");

function test_func()
{
}
?>

Внутри файла вызов test_func() вызовет нашу новую функцию. Старую можно вызвать так: \test_func().

Вот, собственно, и все. За одним исключением: Если в файле base.file.php есть классы, то их нужно явно импортировать в текущий namespace. Например для класса TestClass это будет выглядеть так:

<?php
namespace testns;
require("base.file.php");

use \TestClass as TestClass;

function test_func()
{
}
?>

Надеюсь это кому-то поможет!

Комментариев нет:

Отправить комментарий