Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: PHP UnReader - Обфускатор PHP-кода
Форумы портала PHP.SU » Клиентская разработка » Программное обеспечение » PHP UnReader - Обфускатор PHP-кода

Страниц (2): [1] 2 »
 

1. V.Terentev - 17 Января, 2008 - 23:38:42 - перейти к сообщению
[http://altseotools.com/index.php?page=php_unreader]

PHP UnReader позволяет использовать 6 независимых методов обфускаци:
1. Удаление комментариев, переводов строк и лишних пробелов.
2. Замена всех кириллических символов HTML-сущностями в кодировке windows-1251. Этот метод не следует использовать, если PHP код генерирует код JavaScript, который оперирует кириллическими символами.
3. Замена содержимого всех кавычек последовательностями кодов символов (...chr(224).chr(225)...). Этот метод рекомендуется использовать всегда - один он заметно снижает мнемонические характеристики кода.
4. Кодирование имён переменных.
5. Кодирование названий функций.
6. Кодирование названий классов.

PHP UnReader позволяет провести обфускацию, используя один или несколько алгоритмов одновременно.

Можно отключить кодирование имён конкретных переменных, функций, классов. Также можно отключить кодирование отдельных файлов проекта.

Система реализован в виде PHP-скрипта. Его легко установить на локальном или удалённом сервере.

Вот пример обработанного кода:
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))
2. EuGen - 18 Января, 2008 - 11:02:51 - перейти к сообщению
Отлично, а как быть с быстродействием?
3. V.Terentev - 18 Января, 2008 - 12:01:33 - перейти к сообщению
Вы наверное говорите про chr(224)? Проведём тест:
1. Обфускация своего же кода, системой с неизменённым исходником: 2.36 сек.
2. Обфускация своего же кода, системой с обфусцированным исходником: 2.51 сек.
Видно, что заметного уменьшения быстродействия просто нет.
4. valenok - 18 Января, 2008 - 16:40:50 - перейти к сообщению
Только скрипт поддаётся дешифровке легко.
Если у вас украли скрипты с сервера - то вы пролетели, и будт они обфусцированными
или нет.
Просто и вам потом с таким кодом больше головной боли.
5. EuGen - 18 Января, 2008 - 17:07:27 - перейти к сообщению
Да, похоже на "сложную" задачу превращения 0 в sin(sqrt(16))*sin(sqr(2))+cos(sqrt(sqrt(256)))*cos(4*cos(0))
6. V.Terentev - 18 Января, 2008 - 19:38:49 - перейти к сообщению
Цитата:
Только скрипт поддаётся дешифровке легко

Вы пробовали "дешифровать" скрипт хотябы в 5000 строк? Не думаю, что это легко.

Цитата:
Просто и вам потом с таким кодом больше головной боли

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

Цитата:
Да, похоже на "сложную" задачу превращения 0 в sin(sqrt(16))*sin(sqr(2))+cos(sqrt(sqrt(256)))*cos(4*cos(0))

Задача в том, чтобы время понимания алгоритма работы скрипта сделать сравнимым с временем разработки скрипта с нуля.
7. valenok - 18 Января, 2008 - 21:17:32 - перейти к сообщению
CODE (text):
скопировать код в буфер обмена
  1. Вы пробовали "дешифровать" скрипт хотябы в 5000 строк? Не думаю, что это легко.


Я уже не пробую писать скрипты в 5000 строк =)
Да и потом дешифровывать руками точно никто не будет.

Цитата:
Просто и вам потом с таким кодом больше головной боли

Я к тому что каждый скрипт придётся прогонять через вот это вот и хранить две копии, того что у вас и того что на сервере.

Цитата:
Да и речь здесь идёт скорее не о краже, а о защите продуктов, которые продаются.

Для этого пойдёт ..
8. V.Terentev - 18 Января, 2008 - 22:24:11 - перейти к сообщению
Цитата:
Да и потом дешифровывать руками точно никто не будет

Машинные методы тоже осбо ничего не дадут - понять суть алгоритма будет крайне сложно.

Цитата:
Я к тому что каждый скрипт придётся прогонять через вот это вот и хранить две копии, того что у вас и того что на сервере.

Можно хранить один вариант в непубличной папке, а PHP UnReader будет брать файлы оттуда, обрабатывать и класть в публичную папку. Пускать его при желании можно даже кроном.

Цитата:
Для этого пойдёт

В том основной смысл.
9. ARTY - 19 Января, 2008 - 22:10:55 - перейти к сообщению
А чем хуже Zend Guard? Поддерживается на уровне модуля PHP, быстродействие очень хорошее.
10. valenok - 19 Января, 2008 - 22:45:51 - перейти к сообщению
zend не везде установлен
и фиг продашь такой скрипт
11. V.Terentev - 20 Января, 2008 - 00:58:37 - перейти к сообщению
Вот valenok попал в самую точку.

Ещё раз о целе классической обфускации: есть некоторый скрипт, который планируется продавать в широкие массы. Скрипт не содержит легко отламываемых ограничений типа $demo_mode = true; , однако содержит некоторый уникальный алгоритм. Необходимо защитить этот алгоритм от понимания человека, который не настолько квалифицирован чтобы быстро создать этот алгоритм самому.

Для решения такой задачи нельзя использовать методы кодирования/обфускации подразумевающие обязательную установку некоторого серверного ПО.
12. ARTY - 20 Января, 2008 - 16:45:50 - перейти к сообщению
У 90% хостеров установлен Zend Encoder, поэтому это не проблема Улыбка
13. V.Terentev - 20 Января, 2008 - 20:56:20 - перейти к сообщению
На нескольких десятках сайтов, которые я так или иначе веду ZendOptimizer есть только на нашем выделенном сервере. Хостинги выбирал не я, а клиент/предыдущий администратор. Поэтому, на данном этапе например я не могу использовать Zend-технологии для кодирования собственных скриптов.

Вообще при разработке PHP UnReader одной из основных задачь была задача отказа от любого дополнительного серверного ПО. Это классическая обфускация, а не кодирование.

К томуже есть ещё несколько особенностей. Например, PHP UnReader можно запускать на обфускацию по URL т.е. можно, например, полностью автоматизировать процесс продажи обфусцированного скрипта - приём денег по WebMoney Merchant, запуск обфускатора на сервере, генерация письма с вложением - отправка продукта покупателю.
14. valenok - 20 Января, 2008 - 22:19:19 - перейти к сообщению
V.Terentev пишет:
запуск обфускатора на сервере

???

Ещё потом удалять обфусцированный файл и повторя ть вот такое вот с каждым заказом??
Храните уже готовый файл на сервере и всё.
15. V.Terentev - 21 Января, 2008 - 22:15:23 - перейти к сообщению
>Храните уже готовый файл на сервере и всё
Также автоматом можно вносить некоторый измененя - прошивать владельца, например. Кроме того, повторная генерация меняет набор имён, что делает несовместимыми части скриптов сгенерированных в разное время.

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

 

Powered by ExBB FM 1.0 RC1