Как стать автором
Обновить

Комментарии 34

Может ссылку на расшифрованный файл убрать? Все-таки, платный продукт.
я думал об этом, но автор мало того что не помог, но еще и обхамил меня. В данном продукте этот файл не самая соль, там их еще около 10 штук, я выбрал самый не важный но и не маленький по объему.
Тогда вопросов нет.)
Молодец, что сказать! Один раз при расшифровке сталкивался с двухсторонним кодированием. 1- часть — зашифрованный php который выводит зашифрованный javascript. Это был какой-то вирус. Без подобных инструментов промучился целый день, но в итоге расшифровал.
да скриптец этот какашками попахивает, подсчитайте сколько раз встречаются эти строчки и сколько раз вызываются.
$connect = mysql_connect($host, $login, $password) or die(mysql_error());
$select_db = mysql_select_db($database, $connect) or die(mysql_error());
while ($i < $num_pages) {
 ....
foreach($items as $it) {
   $connect = mysql_connect($host, $login, $password) or die(mysql_error());
$select_db = mysql_select_db($database, $connect) or die(mysql_error());
}
}


Может человеку просто стыдно стало, вот и решил он скрыть от чужих глаз это дело.
В таком случае, надо было делать SaaS-сервис :-)
согласен, не самое лучшее исполнение кода, видимо поэтому автор меня и обхамил, побоялся что я это куда-либо выложу на посмешище ))) но надо отдать должное, он постарался и сделал довольно таки муторную работу, за которую многие с удовольствием отдавали 100$. Продавать кому либо чужой труд я всё равно не собираюсь, на то он и чужой, на то он и труд.
отписал автору в аську, он мне еще спасибо говорит за обзор
Про Evalhook не знал, спасибо. Самому, если приходилось, то заменял eval на echo, ставил после die() и смотрел, что в браузер вводилось. Дальше замена eval на выведенный кусок и по-новой.
На мой взгляд, сейчас ещё модная фишка — это часть скрипта записать в виде текста в сам файл и потом с использованием __FILE__ раскодировать.
Это еще раз доказывает, что смысла в такой навороченной обфускации нет.
Если кому-то понадобится очень, все равно напишет деобфускатор. А какой ущерб производительности от такой обфускации — вообще жесть, одни евалы чего стоят.
У меня была задача сделать код проекта не читаемым. Долго искал обфускаторы php-кода, все слишком навороченные и многие просто не работают в режиме, когда есть часть кода обфусциорваная, а часть нет. В итоге, написал сам из 100 строчек, используя php-токинайзер и md5.
у меня когда-то такая же задача стояла, у меня была идея пропустить все файлы через eAccelerator, сохранить их byte-code версии в отдельную папку, настроить eAccelerator так чтобы он их никогда не стирал, и вуаля )) но т.к. сервер был мой, то я тупо зашифровал винт и никому доступ не даю, программа работает и ладно. Зато теперь не мучаюсь с обновлением.

Вообще минус таких скриптов, это то что их поддерживать в актуальном состоянии сложно. Чуть что какую закорючку поправить, надо расшифровывать, менять что надо и, зашифровывать обратно.
Самый смешной был случай, когда я понял что это утопия, это когда кто-то выложил разэнкоженный файл проверки лицензии продукта, который старательно энкодился зенд-гардом платным.
Так в этом файле даже переносы строк были аккуратнее расставлены, чем в оригинальном ))))
А зачем обратно зашифровывать?
Чтобы потом кто-то не расшифровал либо наоборот )) это вечная война, как вирусов и антивирусов.
В этой статье я не рассматриваю этот момент, но моё мнение смысл шифровать скрипты никакой. Самая лучшая защита — это отсутствие актуальности и тех поддержки.
Расшифровывать вручную всегда интересно, но если нужно быстро получить исходный код поможет сервис dezend.me (недавно о нем писал). На сайте есть универсальный декодер, вот расшифрованный скрипт из статьи, правда с русскими символами у него проблемы.
На счёт кодировки, мне просто повезло, консоли использую cp-1251 и в зашифрованных скриптах такая же были, в противном случае пришлось бы менять кодировку консоли чтобы скопировать русский текст.
блин столько опечаток, извиняюсь.
Да и не только методика, там и готовый деобфускатор есть.
В результате несложных, монотонных действий получен исходный код с осмысленными именами переменных и не запутанной логикой?
Называя это «защитой» php-crypt.com вводит своих пользователей в заблуждение.
Это защита от пользователей, компетентных и уважающих себя на столько, что они позволяют себе покупать обфусцированные скрипты. У них ума точно не хватит всё это деобфусцировать.
Ой, позвольте нубо-вопрос:

дано: допустим, есть сайт. Где-то там в недрах веб-сервера лежит классный php-скрипт, который, скажем, выводит… таблицу умножения :)
собственно вопрос: может ли пользователь скачать сам скрипт, а не его результат?
Нет, не может.
может, лови 4 способа навскидку:
1. если web-server не правильно настроен либо админ чего-то обновляет, например закосячит в nginx с конфигами
location ~ ^.+\.p.hp.*$ {
а по дефолту задано что nginx отдаёт
http {
    include       mime.types;
    default_type  application/octet-stream;
...
кстати подобная тема неправильной настройки nginx и к чему это приводит уже освещалась на хабре, тынц

2. на опять же не правильно настроенном виртуальном хостинге, когда например можно от одного аккаунта, читать файлы другого. Например в файле /home/anton_slim/public_html/hack.php зная путь до твоего супер секретного скрипта прописать:
<?php

readfile('/home/zyamilon/public_html/your/super/secret/0000/script.php');


3. если ты используешь ftp, вместо например безопасного sFTP с ключем, твой пароль легко угоняется, ну а дальше мы получим доступ не только к одному файлу, но и ко всем что доступны для твоего юзверя

4. предыдущий админ твоего сервера, оставил дыру

можно дальше продолжать, случаи разные бывают, не зарекайтесь, особенно это видно по топикам с залитыми вирусами на сервера/сайты.
Что-то из pastebin.com/HHhZbYs2 у меня получилось сделать это pastebin.com/7fNLEP76 что я не так сделал?
пользовался любимым echo ) убираем eval и ставим echo.
Дайте что-нибудь посложней! хочу позаморачиваться))
это не тот скрипт что я расшифровывал, но из той же оперы, поправил ссылку, спасибо большое что заметили.
А я так сделал:
1) cat 1.php |sed -e "s/eval(/echo /g"|sed -e "s/)));/));/g" > 2.php
2) php 2.php > 3.php
3) Дальше после массивов было дописано:
$n=0;
foreach ($GLOBALS['_888028985_'] as $value){
echo "sed -e \"s/\\\$GLOBALS\['_888028985_'\]\[$n\]/$value/g\"|";
$n++;
}
exit;

4) Результат выполнения php 3.php был такой:
sed -e "s/\$GLOBALS\['_888028985_'\]\[0\]/str_replace/g"|sed -e "s/\$GLOBALS\['_888028985_'\]\[1\]/unlink/g"|sed -e "s/\$GLOBALS\['_888028985_'\]\[2\]/preg_match/g"|sed -e "s/\$GLOBALS\['_888028985_'\]\[3\]/mysql_connect/g"|sed -e "s/\$GLOBALS\['_888028985_'\]\[4\]/mysql_error/g" и тд ....
5) cat 3.php | sed -e "s/\$GLOBALS\['_888028985_'\]\[0\]/str_replace/g"|sed -e "s/\$GLOBALS\['_888028985_'\]\[1\]/unlink/g"|sed -e "s/\$GLOBALS\['_888028985_'\]\[2\]/preg_match/g"|sed -e "s/ .... > 4.php
6) Готово. Можно удалить добавленные в 3ем пункте строчки + массивы. они теперь не нужны.
вот вы заморочились, для ненормального программирования самое то!
Было дело, мучился с подобным, сначала просто интересно было, потом срочно нужно было исправить что-то. Разобрался, для «массовой» деобфускации написал скрипт на том же php, где в цикле (мало что декодируется за один проход), пока в тексте есть 'eval', делаем несколько замен (в т.ч eval на echo), включаем буферизацию, и сами eval'им полученный код, итоговый буфер скидываем в файл. Ну а далее только к читаемому виду привести.
Кстати, подобно сжатию js-скриптов, можно сжимать php-скрипты, в т.ч складывать много файлов в один, но это всё весьма специфично. Для усложнения же чтения надо не забывать делать замены имён и прочее, что часто может привести к неработоспособности скриптов. Зато очень весело выглядят скрипты, где каждое имя состоит из определённого количества/последовательности подчеркиваний или набора символов типа 1,I,l…
да в том то и дело, что шифровать до рабочего состояния будешь дольше, чем обновления выкладывать, и ведь даже по измененным переменным хороший программист увидит логику, как Нео видит код в матрице.
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
«от автора скрипта» «но код пишет программист, а не я»
Что-то я не понимаю
НЛО прилетело и опубликовало эту надпись здесь
Зарегистрируйтесь на Хабре , чтобы оставить комментарий

Публикации

Истории