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

V.Terentev

Новичок
Ето осложнит создание деобфускатора, но никак не исключит
Исключить его создание нельзя. Задача - сделать этот "деобфускатор" сложнее скрипта, который пытаются деобфусцировать - тогда его создание будет нерационально.

Мне не нравиться поиск совпадения с <?php и баг
Это был код одной из ранних версий - в дэмке жёсткое "<?php" осталось.

Голодные студенты/аутсорсеры сделают ето дешево и сердито
Не думаю что у них хватит квалификации. Они обычно как раз создают неумышленно обфусцированный код - как раз в тему о индусах.

в несколько раз превышает стоимость лицензионной копии и тем не менее
Объём продаж пиратского ВинХР очень высок - тем и компенсируется "превышение". Но, даже если говорить о ВинХР - Гейтс совсем не бедствует, значит пираты не убили его бизнес. Достич же таких объёмов продавая пиратский скрпт в 5000 строк... думаю таких случаев ещё небыло.
 

TutanXamoN

Новичок
Достич же таких объёмов продавая пиратский скрипт в 5000 строк... думаю таких случаев ещё небыло.
Если Вы привыкли продавать всё и вся ето не значит что так поступают все.
Как отреагирует клиент которому Вы обещали защиту плодов интеллектуальной собственности если увидит свой скриптик в свободной скачке?

Не думаю что у них хватит квалификации. Они обычно как раз создают неумышленно обфусцированный код - как раз в тему о индусах.
Мне потребовалось на написание деобфускатора 15 минут, на понимание кода - 30 секунд.

Ето при том что мне 17 лет, я учусь на первом курсе на специальности "Мостовые и тоннельные переходы", php&&web-программирование для меня лишь увлечение + копеечка на жизнь.
Так что насчёт квалификации Вы слегка ошибаетесь.
 

Alexandre

PHPПенсионер
меня до сих пор удивляет, что тему не перевели в офффтоп,
какие же это Новости если это коммерческий продукт, при том сырой..
 

V.Terentev

Новичок
Как отреагирует клиент которому Вы обещали защиту плодов интеллектуальной собственности если увидит свой скриптик в свободной скачке
Уважаемый, TutanXamoN, существуют различные статегии маркетинга и далеко не все они сводятся к выпуску дэмки с ограничениями.

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

Мне потребовалось на написание деобфускатора 15 минут, на понимание кода - 30 секунд
1. Вы ничего не деобфусцировали - мнемоника не восстановлена и не могла быть восстановлена.
2. Это были 27 строк - почти 30. Вы думаете, что в 1000 строк Вы разберётесь за 1000 секунд, а в 20000 строк за 20000 секунд? На деле "понимание" с целью редакции кода ощутимого размера будет просто невозможно.

какие же это Новости если это коммерческий продукт
В описании трида написано "Пишите сюда новости по: php, базам данных, xml, apache, pear, интересные проекты, пхп-редакторы".
 

master_x

Pitavale XXI wieku
V.Terentev
Пишите сюда новости по: php, базам данных, xml, apache, pear, интересные проекты
где он -- интересный проект?
пока что это
коммерческий продукт, при том сырой..
+1 за оффтоп, потому как вся тема скатилась в оффтоп.
 

kode

never knows best
Вот если бы вы написали класс сериализации/десериализации шифрованых обьектов с сохранение кода тогда может в этом бы и был толк. За это так - просто yet another, к тому-же платное....
 

fixxxer

К.О.
Партнер клуба
методы, начинающиеся с __, переименовывать нельзя никода.
неужто это сложно учесть :)

-~{}~ 21.01.08 22:53:

PHP:
<?php

interface foo {
  function a();
}

class bar implements foo {
  function a() { return "a"; }
}

class bar2 extends bar {
  function a() { return bar::a(); }
}
bar:: в предпоследней строке не кодируется

лажа полная вобщем
 

TutanXamoN

Новичок
Не далее чем сегодня я разбирался с продуктом одной крупной кампании. Это билинговая система на Перле, объём исходников около 500 мегабайт.
Чесно говоря поверить в заложенные баги гораздо проще чем в обьем исходников.
Из курса школьной информатики: 500мб=1024*1024*500=52428800(байт).
Средняя строка при нормальном форматировании кода 35-50 символов. Возьмём по макисмуму (50).
Итого 10485760 строк.
Я очень сомневаюсь что даже такой высококвалифицированный специалист как Вы способны за день зотя бы прочитать ето.
Сужу по себе в школьное время скорость чтения достинала 200 слов в минуту слово 5-7 симолов.
Только для полного прочтения потребуеться около 9 месяцев.
 

V.Terentev

Новичок
Вот если бы вы написали класс сериализации/десериализации шифрованых обьектов
Это опять предполагает серверное ПО. Я не хочу конкурировать с Зендом - для меня это трудно.

неужто это сложно учесть
Вот я сейчас это учёл.

bar:: в предпоследней строке не кодируется
Этим сейчас займусь.

лажа полная вобщем
Вы про продукт или про обфускацию в целом?

Для тех кто хотел проверить свои способности в деобфускации: ТЕСТ. Вот скрипт, обфусцированный [PHP UnReader]: http://www.pilotstudio.ru/download/index.zip - это основная часть многофайлового проекта. Задача: более или менее ПОДРОБНО изложить алгоритм. Кроме того, заметить сколько на это потребовалось времени.

-~{}~ 22.01.08 00:29:

Только для полного прочтения потребуеться около 9 месяцев
Надо думать, что прочитал я не всё - благодаря мнемонике там всёже можно понять какие модули смотреть.

Если интересно, это был «Билл-Мастер» от http://www.in-line.ru.
 

kode

never knows best
500 мб исходных кодов? Не порите чушь.....исходники Вантуза без ресурсов весят меньше....я достаточно работал с Биллингами (UTM5, LanBilling, FreeNIBS, etc), приходилось даже самому реализовывать некое подобие, но 500 Мб это чушь......
 

V.Terentev

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

fixxxer

К.О.
Партнер клуба
> Вы про продукт или про обфускацию в целом?

про коммерческие продажи столь сырого продукта. надо хотя бы минимально тестировать пройдясь по всему функционалу php, прежде чем делать коммерческие предложения.

-~{}~ 22.01.08 01:59:

вот еще

PHP:
<?php

class ZZZ {
   function bbb(ZZZ $a) { }
}
ZZZ::bbb(new ZZZ);
результат
PHP:
<?php class l1l111l1l1 { function ll11111l11(ZZZ $lllll1l1l1) { } } ZZZ::ll11111l11(new l1l111l1l1);
-~{}~ 22.01.08 02:05:

ну то что про SPL оно ничего не знает это ожидаемо, если даже на __construct валится ;)

-~{}~ 22.01.08 02:16:

"замусоривание" кода сделано криво - мусорить надо присваиваниями, на штуки типа $l1l1l1l1l++ разумеется будет E_NOTICE

-~{}~ 22.01.08 02:27:

class B {};$n=new B;if ($n instanceof B) exit;
вобщем автор похоже о php5 имеет смутное представление
 

Андрейка

Senior pomidor developer
http://www.pilotstudio.ru/download/index.zip - это основная часть многофайлового проекта. Задача: более или менее ПОДРОБНО изложить алгоритм. Кроме того, заметить сколько на это потребовалось времени.

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

PHP:
for($llll11l1l1 = 0; $llll11l1l1 < $lll1ll11l1 && $lll1ll1111 < $lll1lll111; $111l1l1l11 = chr(210).chr(229).chr(234).chr(241).chr(242).chr(32).chr(238).chr(242).chr(241).chr(243).chr(241).chr(242).chr(226).chr(243).chr(229).chr(242); $llll11l1l1 ++) {}
конечно в перле разрешены переменные, начинающиеся с цифры(человек, разобравший 500мб перловых исходников не может не ошибаться).. в пхп наверное тоже, хотя он чета ругается на unexpected
а вот for(A; B; C; D) - это чисто перловый синтаксис, хз как он у вас работает на сайте

-~{}~ 22.01.08 17:05:

зы. чет мы тут бесплатными бетатестерами записались.. оно нам надо?
 

StUV

Rotaredom
чет мы тут бесплатными бетатестерами записались.. оно нам надо?
чет чтобы до этого допереть у вас много времени уходит ;)

V.Terentev
вам бы ваш продукт в опенсорсном состоянии потестить около года
потом появилось бы моральное право просить за него хотя бы 5 баксов
 

phprus

Moderator
Команда форума
Андрейка
а вот for(A; B; C; D) - это чисто перловый синтаксис, хз как он у вас работает на сайте
:-D А с каких пор в perl есть такой странный фор? Чтото я такого не припомню.

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

зы. чет мы тут бесплатными бетатестерами записались.. оно нам надо?
Смех продлевает жизнь.
 

V.Terentev

Новичок
зы. чет мы тут бесплатными бетатестерами записались.. оно нам надо?
Из нескольки форумов, куда я постил этот оказался самым продуктивным - за что всем огромное спасибо. Я с радостью проведу "бесплатное бетатестирование" Ваших продуктов. Кроме того тестирующие получат скидки от 10до100%, если пожелают приобрести продукт, когда он будет полностью доведён до ума.

вам бы ваш продукт в опенсорсном состоянии потестить около года
потом появилось бы моральное право просить за него хотя бы 5 баксов
Почему не опенсорс:
Трид превратился бы тогда в обсуждение синтаксиса, а не функционала.
Почему не 0баксов и не 5:
Уменьшая вероятность покупки уменьшается вероятность претензий :). Я конечно понимаю, что некоторые вопросы ещё не отработаны.

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

Собираем косяки:
1. Да "ZZZ::" пока не обрабатывается, как и "interface ", "instanceof " тоже.
2. Классы spl не убираются из списка к замене (хотя функции да), НО заменятся только определяемые в скрипте классы - разве можно переопределить в скрипте класс spl?
2. "Замусориванию" пока только сутки, поэтому здесь:
2.1. "переменные, начинающиеся с цифры" - просто забыл добавить префикс.
2.2. "for(A; B; C; D)" - не исключил точки с запятой внутри конструкций, хотя односточные блоки (без {}) не портятся.
2.3. "штуки типа $l1l1l1l1l++ разумеется будет E_NOTICE" - да, конечно это правильно.

пока на приведение сего чуда в читаемый вид понадобилось минут 40
Значит что это всё в целом делает пока не ясно ? :) Там несколько сотен переменных - для редакции нужно понять что делает большая часть из них.
 

StUV

Rotaredom
V.Terentev
прогоните через обфускатор zend framework
думаю багов будет на месяц работы ;)
 

fixxxer

К.О.
Партнер клуба
переменные, кстати, можно писать в виде ${'blabla'}, тогда хоть с цифры, хоть с \x0 =)
 
Сверху