Кодирование скриптов ala Zend-Encoder

telepuzik

тинки-винки
Re: PHTML Encoder

Автор оригинала: rsn
Гляньте, http://www.rssoftlab.com
Там есть PHTML Encoder может кому пригодится, под Windows - freeware. Есть trial под Linux.
да но в том то и проблема что хостинг под линухом - где щас найдешь дешевый виндовый хостинг?
кроме того под виндой все решается установкой оптимайзера... то под линухом помойму это все намного сложней
 

Bermuda

Новичок
1) Некоторым людям пофиг имена переменных (вы бы видели как они свои перемнные называют, примерно так)

2) Никто не мешает шаг за шагом, по опдной переменной переименовать в удобочитаемый код + debugger поможет :)
 

telepuzik

тинки-винки
Автор оригинала: Bermuda
1) Некоторым людям пофиг имена переменных (вы бы видели как они свои перемнные называют, примерно так)

2) Никто не мешает шаг за шагом, по опдной переменной переименовать в удобочитаемый код + debugger поможет :)
ты видел текст сгенеренный POBS? (или как там его?)
имя переменной длиной в n (n>10) букв и цифр ... причем логики никакой... и все имена одинаковой длины... не думаю что ктото разберется.
ведь вопрос стоит не в краже скрипта полностью а в переделке его функциональности - например, добавлении чего-то - и выдаче за свой.
имена оригинальных переменных имеют для читающего (и пишушего) код какое-то значение. основываясь на имени можно чтото подправить.

я пробовал разобраться в перелопаченном скрипте... убранные переводы строки легко исправлются. но имена....
 

[VS]

Guest
Автор оригинала: AnToXa
и самое главное, говоря математическим языков, компиляция - взаимно-однозначное преобразование, а оптимизация - нет
Компиляция это НЕ взаимно однозначное преобразование, если говорить вообще о теории, так как несколько разных конструкций языка могут скомпилироваться в один и тот-же машинный код.
 

[VS]

Guest
Автор оригинала: SeregaP
Математики :)
Стоит ли цель получение ОРИГИНАЛЬНОГО исходного php текста? Если да, то вы правы, оригинальный исходный мы не получим из оптимизированного файла.
Но в 99% случаев достаточно получить исходный текст программы, по функционированию аналогичной оригинальной.
(Если что-то выглядит как утка, плавает как утка, крякает как утка, то я называю это уткой)

А какой-то исходный текст, пусть и с изменениями, мы все равно получим. Главное он делает то же самое. И притом быстрее работает!
Когда-то были популярны "декомпиляторы С++", которые реально просто деассемблировали код и приводили его к виду С++ кода. Естественно работать с ним невозможно.
 

STAH

Guest
Архитектура виртуальной машины очень отличается от реальной. В подобной системе некоторый байт-код имеет (почти всегда) прямое соответствие с некоторой конструкцией языка программирования (Java, php, ...). Это связано, в первую очередь с "природой" языка: он интерпретируем, а чем он "выше по уровню" ("ближе к языку высоко уровня"), тем быстрее можно интерпретировать програмный код... Поэтому конвертация [байт-код]-->[исходный текст] почти однозначна. (Реальный пример: дизассемблеры Java).
Для интереса, приведу небольшой php код и соответствующий байт код (оригинал: http://www.php-accelerator.co.uk/PHPA_Article.pdf):
Код:
<?
$x = 'inefficient';
echo "This is rather $x code\n";
?>
op 0 2 ZEND_FETCH_W str='x' fetch local
op 1 2 ZEND_ASSIGN var* 0 str='inefficient' R1 (unused)
op 2 3 ZEND_INIT_STRING R2
op 3 3 ZEND_ADD_STRING tvar T2 Vconst ‘This’ R2
op 4 3 ZEND_ADD_STRING tvar T2 Vconst ‘ ‘ R2
op 5 3 ZEND_ADD_STRING tvar T2 Vconst ‘is’ R2
op 6 3 ZEND_ADD_STRING tvar T2 Vconst ‘ ‘ R2
op 7 3 ZEND_ADD_STRING tvar T2 Vconst ‘rather’ R2
op 8 3 ZEND_ADD_STRING tvar T2 Vconst ‘ ‘ R2
op 9 3 ZEND_FETCH_R str='x' fetch local R3
op 10 3 ZEND_ADD_VAR T2 var* 3 R2
op 11 3 ZEND_ADD_STRING tvar T2 Vconst ‘ ‘ R2
op 12 3 ZEND_ADD_STRING tvar T2 Vconst ‘code’ R2
op 13 3 ZEND_ADD_CHAR ‘\n’ R2
op 14 3 ZEND_ECHO T2
op 15 5 ZEND_RETURN val=1
Самое интересное в данном коде, что он достаточно легко читается (в отличае от реального ассемблерного кода).
Вывод:
Зная формат сгенерированного енкодером файла + структуру байт кода + имея исходники простого декомпайлера Java (и зная как он функционирует) можно "спокойно" создать приличный декомпайлер (с почти 100% соответствием между байт кодом и исходником) для енкодера пхп за несколько дней ...

пока все :)
 
Сверху