PHP UnReader - Обфускатор PHP-кода

V.Terentev

Новичок
В общем, самая крутая обфускация
Даже "неумышленную" обфускацию не просто расковырять до вменяемого вида.

Обфускация - это не кодирование, а осложнение понимания/редакции.
 

cDLEON

Онанист РНРСlub
я знаю что такое обфускация.
Только вот переименовав ваши переменные в $var{$i++}
и поставив на место форматирование фъехать будет не очень трудно.
 

V.Terentev

Новичок
фъехать будет не очень трудно
Смотря для чего въезжать. Найти одну место типа $demo_version = true; может будет и можно, но нормально осознать сложный проект или его отредактировать будет очень сложно.
 

cDLEON

Онанист РНРСlub
ну убью денёк второй на растановку всех точег над Ы...
Но разберусь полностью. Уверен. Тем более если это сложный проект, то времени будет не жалко убить :D
 

kode

never knows best
http://ru2.php.net/manual/en/ref.bcompiler.php

In terms of code protection, it is safe to say that it would be impossible to recreate the exact source code that it was built from, and without the accompanying source code comments. It would effectively be useless to use the bcompiler bytecodes to recreate and modify a class. However it is possible to retrieve data from a bcompiled bytecode file - so don't put your private passwords or anything in it.
:) Ну это я так между делом :) Причём бесплатно

А требовать деньги, за неготовое решение, без должной поддержки, и такими ошибками, имхо свинство. Такое на ум может прийти только пропитиетарщикам....
 

V.Terentev

Новичок
Причём бесплатно
К этому же списку можно добавить ещё несколько отсюда: http://www.hotscripts.com/search?q=obfuscator&cat=All&imageField.x=0&imageField.y=0.

kode, попробуйте использовать их для решения реальных задачь и увидите все их недостатки.


без должной поддержки
Что значит БЕЗ. Посмотрите хотябы архив новостей на нашем сайте.

такими ошибками
Какими именно? Есть ограничения методов.

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

-~{}~ 20.01.08 13:29:

ну убью денёк второй на растановку всех точег над Ы
Ну можно только позавидовать мотивации и рвению :). Думаю не все будут этим заниматься, а из тех кто будет у большинства не получится.
 

Андрейка

Senior pomidor developer
но нормально осознать сложный проект или его отредактировать будет очень сложно.
ну вот вас и просил, в свое время, выложить нормальный сложный проект(можно чужой опенсурсный), после обработки вашим мегапродуктом

продукт должен продаваться
ну и как, продается?

-~{}~ 20.01.08 20:40:

Обфускация позволяет привести код в абсолютно нечитабельный вид для защиты Вашей интеллектуальной собственности.
взяли бы и защитили вашу интеллектуальную собственность и выложили её полным скриптом с тем же ограничеием для демки в 500 символов.. у вас ведь хороший продукт и вам нечего опасаться, что вашу интеллектуальную собственность будут незаконно использовать, не так ли?)
 

FreeSpace

Чукча-читатель
Автор оригинала: Андрейка
взяли бы и защитили вашу интеллектуальную собственность и выложили её полным скриптом с тем же ограничеием для демки в 500 символов.. у вас ведь хороший продукт и вам нечего опасаться, что вашу интеллектуальную собственность будут незаконно использовать, не так ли?)
Браво! Это как раз то, что вертелось у меня в голове при чтении этой темы. Только я оформить в слова не смог :(
Ещё раз браво!
 

kode

never knows best
Автор оригинала: V.Terentev
К этому же списку можно добавить ещё несколько отсюда: http://www.hotscripts.com/search?q=obfuscator&cat=All&imageField.x=0&imageField.y=0.

kode, попробуйте использовать их для решения реальных задачь и увидите все их недостатки.



Что значит БЕЗ. Посмотрите хотябы архив новостей на нашем сайте.


Какими именно? Есть ограничения методов.


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

-~{}~ 20.01.08 13:29:


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

Должная поддержка это когда я могу позвонить вам и сказать всё что я о вас думаю :) http://62.181.58.128/support.mp3
+ При достаточном кол-ве усилий можно написать "де-обфускатор" для вашего варианта.....
 

V.Terentev

Новичок
Андрейка и FreeSpace
В ответах на вопросы здесь я несколько раз писал, что система призвана скрыть АЛГОРИТМ. Место вроде $xxxx = 500; Вы конечно найдёте, но понять общий ход или внести более глубокие изменения (например, сделать чтобы переменные парсились не только в двойных кавычках, но и в одинарных) будет очень трудно.

ну и как, продается?
Да. Вас интересуют данные отчётности?

bcompiler преобразует ваш код в оп-коды
Это очень хорошо, но на данный момент ZendOptimizer установлен не везде, хотя и распространён. Сейчас трудно продавать скрипт, который работает только на Zend-технологиях - как, например, трудно продавать программу, которая не работает на WindowsVista.

Должная поддержка это когда я могу позвонить вам всё что я о вас думаю
Могу дать Вам свой личный телефон. Поддерджка по Аське почти круглосуточна. Наконец есть юридический адрес, возможность договора.

При достаточном кол-ве усилий можно написать "де-обфускатор" для вашего варианта
Восстановить прежний вид простоневозможно. Некоторые здесь говорят, что легко воспримут продукт с удалённой мнемоникой имён переменных, функций, классов - помоему, это почти нереально, когда монотонный аглоритм превышает хотябы 500 строк.

Специально для большего осложнения "понимания" обфусцированного кода людьми, всёже способными его осознать, возникла мысль дополнительного кодирования переменных через создание 20-30 синонимов каждой переменной. "Деобфускатор" при этом будет сравним по сложности с парсером кода, что снизет вероятность его создания.

Кроме того, есть ещё несколько особенностей. Например, PHP UnReader можно запускать на обфускацию по URL т.е. можно, например, полностью автоматизировать процесс продажи обфусцированного скрипта - приём денег по WebMoney Merchant, запуск обфускатора на сервере, генерация письма с вложением - отправка продукта покупателю.

-~{}~ 20.01.08 22:36:

Кстати, Андрейка и FreeSpace, ограничение по врмемени Zend для дэмки скрипта такде довольно легко отломать. Я уже об этом писал и давал сслку: http://hax.himki.net/articles/html_pages3.html.
 

kode

never knows best
Автор оригинала: V.Terentev
Андрейка и FreeSpace
Это очень хорошо, но на данный момент ZendOptimizer установлен не везде, хотя и распространён. Сейчас трудно продавать скрипт, который работает только на Zend-технологиях - как, например, трудно продавать программу, которая не работает на WindowsVista.
bcompiler - не является ZendOptimizer'om, как и APC и опен сурсен.....дело тут в другом - это всё таки раширения для ядра PHP, и ваша правда есть мало где, но есть же APC который более распостранён :)
 

AP

Новичок
Это очень хорошо, но на данный момент ZendOptimizer установлен не везде, хотя и распространён.
какая проблема его установить!!!
Сейчас трудно продавать скрипт, который работает только на Zend-технологиях - как, например, трудно продавать программу, которая не работает на WindowsVista.
ыыыыыыыыыыыыы
Трудно продавать то, что не работает, а ваш Обфускатор на наипростейшем примере смог лишь вывести ошибку!
 

TutanXamoN

Новичок
Место вроде $xxxx = 500; Вы конечно найдёте, но понять общий ход или внести более глубокие изменения (например, сделать чтобы переменные парсились не только в двойных кавычках, но и в одинарных) будет очень трудно.
Очевидно вы никогда не разбирали программы в которых самое осмысленное название переменной
PHP:
$i
ИМХО:
1. скрипт - не отличаеться умом и сообразительностью.
2. людей которые его купят на век разработчика хватит.

-~{}~ 20.01.08 22:43:

Вот пример обработанного кода:
if(strlen($lll111111l1) <= $lll11l11ll1) { if($lll111111l1 != "") $lll1ll1l1l1 = $lll111111l1; else $llllllll1l1 = chr(202).chr(238).chr(228).chr(32).chr(238).chr(242).chr(241).chr(243).chr(242).chr(241).chr(242).chr(226).chr(243).chr(229).chr(242); } else $llllllll1l1 = chr(202).chr(238).chr(228).chr(32).chr(239).chr(240).chr(229).chr(226).chr(251).chr(248).chr(224).chr(229).chr(242).chr(32).$lll11l11ll1.chr(32).chr(241).chr(232).chr(236).chr(226).chr(238).chr(235).chr(238).chr(226); } if($llllllll1l1 == "") { if($lllll1l11ll) { $lll1ll1l1l1 = chr(32).chr(32).chr(32).chr(32).$lll1ll1l1l1.chr(32); $lll1111l111 = strlen($lll1ll1l1l1); $llll1l111ll = false; $lll1l1ll111 = false; $llll1lll11l = false; $lll1llllll1 = false; $lllll11llll = false; $llll1l11ll1 = ""; for($lll11ll11ll = 4; $lll11ll11ll < $lll1111l111 - 1; $lll11ll11ll ++) { if(!$llll1l111ll) { if($lll1ll1l1l1[$lll11ll11ll] == chr(112) && $lll1ll1l1l1[$lll11ll11ll - 1] == chr(104) && $lll1ll1l1l1[$lll11ll11ll - 2] == chr(112) && $lll1ll1l1l1[$lll11ll11ll - 3] == chr(63) && $lll1ll1l1l1[$lll11ll11ll - 4] == chr(60))
Восстановить прежний вид простоневозможно. Некоторые здесь говорят, что легко воспримут продукт с удалённой мнемоникой имён переменных, функций, классов - помоему, это почти нереально, когда монотонный аглоритм превышает хотябы 500 строк.
PHP:
if(strlen($a) <= $b)
{
	 if($a != "")
	 $n = $a;
	 else 
	 $j = "Код отсутствует";
}
else 
$j = "Код превышает".$b."символов";
}
if($j == "")
{
	if($k)
	{
	$n = "    ".$n." ";  
	$l = strlen($n);
	$c = false;  
	$d = false;
	$e = false;
	$f = false;
	$g = false;
	$h = "";
	for($m = 4; $m < $l - 1; $m ++)
	{
		if(!$c)
		{
			if($n[$m] == "p" && $n[$m - 1] == "h" && $n[$m - 2] == "p" && $n[$m - 3] == "?" && $n[$m - 4] == "<")
ЗЫ тут на форуме в юморе есть тема про индусский код предлагаю кинуть туда ету проверку строки на соответствие <?php
 

V.Terentev

Новичок
есть же APC который более распостранён
Сейчас я посмотрел на хостингах сайтов своих клиентов - на 3х точно нет :) Такчто... На данный момент нет такой системы раскодирования PHP-кода, которая была бы везде, поэтому есть потребность именно в классической обфускации.

какая проблема его установить!!!
Проблема возникает, когда хостинг НЕ Ваш. Когда Вы продаёте скрипт, который должен идти в широкие массы.

ваш Обфускатор на наипростейшем примере смог лишь вывести ошибку
Где этот пример? Можно конкретнее? Есть 2 ограничения:
1. Хередок, поддержка которого будет скоро реализована.
2. Неявные имена переменных, вроде ${$a.func($d).$c}. Это просто невозможно отпарсить без трансляции кода, поэтому ПРЕДУСМОТРЕНА возможность отключить кодирование отдельных переменных, чтобы избежать проблемм.

TutanXamoN, я читал Ваше сообщение и не понял иронично оно или нет, поэтому отвечаю серьёзно.

Очевидно вы никогда не разбирали программы в которых самое осмысленное название переменной
Доводилось, но даже когда эффект обфускации стал следствием малого ума программиста, разобраться сложно. Если же код довольно сложный и большой, то разобраться без комментариев и мнемоники имён нереально.

А вот необработанная версия
Вам он понятен? Что делают переменные $n, $l или $g ? А там такого кода ещё пару тысяч строк.

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

Обращаясь отдельно к TutanXamoN, как бы Вы оценили такой ананс:
Специально для большего осложнения "понимания" обфусцированного кода людьми, всёже способными его осознать, возникла мысль дополнительного кодирования переменных через создание 20-30 синонимов каждой переменной. "Деобфускатор" при этом будет сравним по сложности с парсером кода, что снизет вероятность его создания.
предлагаю кинуть туда ету проверку строки
А что Вам собственно не нравится?

Ещё, TutanXamoN, давайте проведём простой расчёт:
1. Есть некоторый скрипт, обработанный моим PHP UnReader. Скрипт довольно сложный, скажем 5000 строк.
2. Требуется его "переделать" т.е. разобраться в нём и что-то изменить.
3. Думаю, для сколь-нибудь значительной переделки потребуется разбираться допустим 3 рабочих дня.
4. Примем средний оклад не слишком "дорогого" программиста за 20000р в месяц. Т.е. 3 дня стоят 2700.
5. Выходит, что если скрипт, который хотят "раскодировать" стоит меньше 2700, то делать это просто не разумно - проще его купить.

TutanXamoN, Вы считаете расчёт разумным?
 

AP

Новичок
Где этот пример? Можно конкретнее?
пример я приводил...

Неявные имена переменных, вроде ${$a.func($d).$c}. Это просто невозможно отпарсить без трансляции кода, поэтому ПРЕДУСМОТРЕНА возможность отключить кодирование отдельных переменных, чтобы избежать проблемм.
а вот об этом я и говорю...
Проблема возникает, когда хостинг НЕ Ваш. Когда Вы продаёте скрипт, который должен идти в широкие массы.
проблем с Zend Optimiser'om еще вообще не было!!!
 

TutanXamoN

Новичок
Обращаясь отдельно к TutanXamoN, как бы Вы оценили такой ананс:
Специально для большего осложнения "понимания" обфусцированного кода людьми, всёже способными его осознать, возникла мысль дополнительного кодирования переменных через создание 20-30 синонимов каждой переменной. "Деобфускатор" при этом будет сравним по сложности с парсером кода, что снизет вероятность его создания.
Как Вам сказать... Ето осложнит создание деобфускатора, но никак не исключит.

предлагаю кинуть туда ету проверку строки



А что Вам собственно не нравится?
Мне не нравиться поиск совпадения с <?php и баг, уж не знаю есть он только в демо или в фулл вершион тоже, когда в случае использования <? //here is code скрипт просто не работает.
TutanXamoN, Вы считаете расчёт разумным?
Не совсем:
1. Голодные студенты/аутсорсеры сделают ето дешево и сердито.
2. Я уверен что стоимость времени работы "не очень дорогого программиста" затраченного на взлом механизма активации ВинХР в несколько раз превышает стоимость лицензионной копии и тем не менее...


TutanXamoN, я читал Ваше сообщение и не понял иронично оно или нет
Малая доля иронии в нём присутствует.
 

V.Terentev

Новичок
а вот об этом я и говорю
Ткнуть на одну галочку - это не проблема. Если предполагатся заменить имя переменной, то надо ожидать что оно всётаки заменится.

проблем с Zend Optimiser'om еще вообще не было
Вы что продаёте - и главное кому? Есть продукты, которые продаются на хостинги, где нет даже баз данных. Вы можете сказать, что это не профессионально или не серьёзно, но таких случаев много. Среди хостингов сайтов моих клиентов Zend Optimiser'а нет почти нигде.
 

TutanXamoN

Новичок
Вам он понятен? Что делают переменные $n, $l или $g ? А там такого кода ещё пару тысяч строк.
$n ето собственно переданный в демку код причём ето синоним $a.
$l есть длинна кода используемая в цикле как условие его окончания
Касательно $g - фрагмент слишком мал для понимания предназначения переменной
 
Сверху