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

telepuzik

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

Вобщем, спасите покемонов. Вопрос этот поднимался но ответа, который меня бы удовлетворил, я не прочитал.

Есть такой вопрос (к знающим людям) - есть Zend Encoder. Можно ли раскодировать закодированный скрипт, если можно - то какими усилиями (насколько например, дорого и трудоемко)?
Есть ли действительно возможность это сделать (не подумайте, наоборот свое хочу защитить.)
И второй вопрос - есть ли какая альтернатива? Допустим таким образом это дело зашифровать/энкодить/т.п. чтобы за разумную цену (200-300-400-500) не стоило браться за расшифровку?

спасиба заранее...
 

[VS]

Guest
Методов расшифровки нет, и имхо они не возможны, так как восстановить оригинальный код с названиями переменных, классами, теми-же функциями, и.т.д. - не возможно, вся эта информация теряется при кодировании.

Далее, простой вывод - практически всегда проще написать свой понятный код - чем разбираться с этим "деассемблированным".
 

Crazy

Developer
Слухи о потери информации явно преувеличены. Берем простой пример:

PHP:
<?php

$foo = 1;
$bar = 2;
$buzz = 3;

$name = $HTTP_GET_VARS["name"];

echo $$name;

?>
Просто эксперимент показывает, что скрипт работает как в исходном, так и в закодированном виде. Однако, он принципиально не может работать, если уничтожить информацию об именах переменных.

Аналогичный эксперимент показывает, что все метаданные классов также сохранены.

Соответственно "потеря информации" не более чем миф. И не исключено что нерасшифрованность сродни неуловимости знаменитого Неуловимого Джо. :)
 

telepuzik

тинки-винки
ок тогда какие альтернативы есть для encoder'a? просто дороговато получается... кроме того, это ж надо на хостинге чтоб был оптимайзер... а не каждый хостер это даст...
 

Crazy

Developer
То, что encoder ТЕОРЕТИЧЕСКИ можно вскрыть, еще не означает, что это может сделать первый встречный. Я пока о достоверным случаях его вскрытия данных не имею.

Но, IMHO, если ты пишешь настолько важный для тебя код, что боишься подсматривания и модификации, то кто мешает простот написать на сях свой модуль к апачу? :]
 

telepuzik

тинки-винки
не не то, времени нету... да и опять же его надо в конфиг апачевский пихать - покажи хостера который по доброй воле (без угроз физической расправы) это сделает...
вопрос в том что нуна показать скрипт, скрипты лежат не на своем серваке (то есть за зелененькую бумажку хостер даст пароль). вот и хотелось бы защититься... если кто знает способы (ну кроме зенд енкодера), допустим сокрытия кода либо жесткой привязки к хосту либо еще чего-то - плз, жду.
думаю тема интересует не только меня... вы ж знаете (ну тони точно знает :) ) какие у нас тут на украине жадные люди... особенно до чужого добра.

ЗЫ. мона на аську 141429063.
 

tony2001

TeaM PHPClub
>Просто эксперимент показывает, что скрипт работает как в
>исходном, так и в закодированном виде. Однако, он
>принципиально не может работать, если уничтожить информацию
>об именах переменных.
согласен, но кто тебе сказал, что имена переменных/функций/объектов остаются ТЕ ЖЕ ?
 

si

Administrator
те же, иначе как ты их будеш вызывать из другого файла ?
 

Crazy

Developer
согласен, но кто тебе сказал, что имена переменных/функций/объектов остаются ТЕ ЖЕ ?
Если имена изменить, то приведенный код сразу изменит свое поведение. Этого не происходит. Следовательно -- имена не изменяются.

Простая логика.

Плюс к тому можешь проверить функции для работы с метаданными -- все они сохраняют свою функциональность.

Но, как я уже говорил, тулза для расшифровки по рукам не ходит даже если и существует в природе...
 

telepuzik

тинки-винки
про тулзу понятно... но кто нить когда нить слышал про такую фичу? чтоб раскодировал скрипт?

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

Зы. а если закодировать триальным/ломаным - мона это узнать, и как? повторю, что вопрос идет именно о том что никак низя отдать свой код нехорошим людям. у кого есть ломаный - !!! ссылочку или по почте... оч. надо.
 

si

Administrator
кстати, вот такой вопрос - вроде где-то проскакивало, да и сам видел, но хотелось бы знать от реально пользовавшихся енкодером. можно например закодировать один скриптик с наиболее стратегическими данными и классами, а из других обращаться к нему?
Можно

а если закодировать триальным/ломаным - мона это узнать, и как?
По лицензии с которой закодировали скрипт, кому надо тот узнает.

Триальный замедляет выполнение в 2 раза и еще header на странице добавляет.

Странно как-то, вы не хотите чтобы у вас украли ваш код, при этом хотите защитить его ВОРОВАННЫМ энкодером ...
 

Crazy

Developer
Я согласен, что $2400 -- не та сумма, что можно съэкономить на школьнгых завтраках. Но это одновременно означает, что и защищаемый проект не стОит этих денег.

Т.е. беспокоиться, собственно, не о чем.
 

Sad Spirit

мизантроп (Старожил PHPClub)
Команда форума
Re: Кодирование скриптов ala Zend-Encoder

Автор оригинала: telepuzik
Вобщем, спасите покемонов. Вопрос этот поднимался но ответа, который меня бы удовлетворил, я не прочитал.

Есть такой вопрос (к знающим людям) - есть Zend Encoder. Можно ли раскодировать закодированный скрипт, если можно - то какими усилиями (насколько например, дорого и трудоемко)?
Есть ли действительно возможность это сделать (не подумайте, наоборот свое хочу защитить.)
И второй вопрос - есть ли какая альтернатива? Допустим таким образом это дело зашифровать/энкодить/т.п. чтобы за разумную цену (200-300-400-500) не стоило браться за расшифровку?

спасиба заранее...
Вот цитата из файла README.compiler из дистрибутива Alternative PHP Cache. Он свободный, поэтому создателям не надо гнать пургу про security, чтобы впарить лохам продукт.

This document describes how to use the APC mmap version as a pre-compiler/
loader. Many people have likened this concept to an 'encoder' a la the
Zend Encoder. I refuse to call APC setup an encoder, choosing instead the
term compiler, as it really does no 'encoding' in the sense that it does
not obfuscate the compiled code at all. It should be an easy excercise
to write a tool to take an APC compiled file and turn into php code (and
although I have never tried , nor have any interest in trying, I would wager
that it would not be enormously more dificult to de-compile Zend Encoder
files). To paraphrase Bruce Schneier, using APC to protect your code is a
method that may work against your kid sister, but not against anyone willing to
invest resources into decompiling it.

What does a compiler bring you?
A compiler allows you to store the compiled apc objects as files, which can
then be moved to different (but similair platform) systems, where they
will be used in place of (or more accurately in preference to) uncompiled php
source files. While this may be a convenient method of distributing code, as
noted above this is not a secure method. The compiled php op-tree contains
more than enough information to recover equivalent php code.
Резюме: кому надо --- раскодируют.
 

si

Administrator
Резюме: кому надо --- раскодируют.
Кто бы сомнивался. "То что один человек построил, другой всегда сломать может". Не бывает не ломаемых программ и их защит, особенно учитывая такие способы как паяльник ...

Тоже считаю что с ценой у них беда, тем более если вспонмить первую - она была 6000$

Есть "альтернативы":
http://pobs.mywalhalla.net/
 

telepuzik

тинки-винки
Автор оригинала: si
Есть "альтернативы":
http://pobs.mywalhalla.net/
хорошая штука :) всем советую.
раскодируется конечно, но жизнь затрудняет конкретно, особенно если юзаете кучу классов в разных файлах.
текст вообще становиться нечитабельным, а соблюдение нестрогих правил позволяет сохранить работоспособность скрипта (я ж думаю что тут давно все знают про register globals = off).
вот левый кусок кода:
PHP:
$this->Vb3f83f20->SetValue($V8ce4b16b, "0");else
$this->Vb3f83f20->SetValue($V8ce4b16b, "1");break;}}}}}function F4831ed22()
{if ($this->V15d61712=="E")
{if ($this->V848e0cf3)
{if ($this->V89885eff['onCheckValues']!="")
{$Vd05b6ed7=array();foreach($this->Va4ca5edd as $V8ce4b16b=>$V9e3669d1)
{$Vd05b6ed7[$V8ce4b16b]=$this->Vb3f83f20->F68920240($V8ce4b16b);}$V07213a01=array();call_user_func($this->V89885eff['onCheckValues'], $Vd05b6ed7, &$V07213a01);$this->V8705b4ad=$V07213a01;}if (count($this->V8705b4ad)==0)
{$V4b43b0ae=array();foreach($this->Va4ca5edd as $V8ce4b16b=>$V9e3669d1)
{if ($V8ce4b16b!="id")
хрен поймешь!
вот а кто нить еще юзал эту вещь? интересно так ли по поводу радуюсь или всетки нечего?
 
Сверху