Комментарии 34
Может ссылку на расшифрованный файл убрать? Все-таки, платный продукт.
-10
я думал об этом, но автор мало того что не помог, но еще и обхамил меня. В данном продукте этот файл не самая соль, там их еще около 10 штук, я выбрал самый не важный но и не маленький по объему.
+24
Молодец, что сказать! Один раз при расшифровке сталкивался с двухсторонним кодированием. 1- часть — зашифрованный php который выводит зашифрованный javascript. Это был какой-то вирус. Без подобных инструментов промучился целый день, но в итоге расшифровал.
+1
да скриптец этот какашками попахивает, подсчитайте сколько раз встречаются эти строчки и сколько раз вызываются.
Может человеку просто стыдно стало, вот и решил он скрыть от чужих глаз это дело.
$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());
}
}
Может человеку просто стыдно стало, вот и решил он скрыть от чужих глаз это дело.
+6
В таком случае, надо было делать SaaS-сервис :-)
+9
согласен, не самое лучшее исполнение кода, видимо поэтому автор меня и обхамил, побоялся что я это куда-либо выложу на посмешище ))) но надо отдать должное, он постарался и сделал довольно таки муторную работу, за которую многие с удовольствием отдавали 100$. Продавать кому либо чужой труд я всё равно не собираюсь, на то он и чужой, на то он и труд.
+2
отписал автору в аську, он мне еще спасибо говорит за обзор
+1
Про Evalhook не знал, спасибо. Самому, если приходилось, то заменял eval на echo, ставил после die() и смотрел, что в браузер вводилось. Дальше замена eval на выведенный кусок и по-новой.
На мой взгляд, сейчас ещё модная фишка — это часть скрипта записать в виде текста в сам файл и потом с использованием __FILE__ раскодировать.
На мой взгляд, сейчас ещё модная фишка — это часть скрипта записать в виде текста в сам файл и потом с использованием __FILE__ раскодировать.
0
Это еще раз доказывает, что смысла в такой навороченной обфускации нет.
Если кому-то понадобится очень, все равно напишет деобфускатор. А какой ущерб производительности от такой обфускации — вообще жесть, одни евалы чего стоят.
У меня была задача сделать код проекта не читаемым. Долго искал обфускаторы php-кода, все слишком навороченные и многие просто не работают в режиме, когда есть часть кода обфусциорваная, а часть нет. В итоге, написал сам из 100 строчек, используя php-токинайзер и md5.
Если кому-то понадобится очень, все равно напишет деобфускатор. А какой ущерб производительности от такой обфускации — вообще жесть, одни евалы чего стоят.
У меня была задача сделать код проекта не читаемым. Долго искал обфускаторы php-кода, все слишком навороченные и многие просто не работают в режиме, когда есть часть кода обфусциорваная, а часть нет. В итоге, написал сам из 100 строчек, используя php-токинайзер и md5.
+6
у меня когда-то такая же задача стояла, у меня была идея пропустить все файлы через eAccelerator, сохранить их byte-code версии в отдельную папку, настроить eAccelerator так чтобы он их никогда не стирал, и вуаля )) но т.к. сервер был мой, то я тупо зашифровал винт и никому доступ не даю, программа работает и ладно. Зато теперь не мучаюсь с обновлением.
Вообще минус таких скриптов, это то что их поддерживать в актуальном состоянии сложно. Чуть что какую закорючку поправить, надо расшифровывать, менять что надо и, зашифровывать обратно.
Вообще минус таких скриптов, это то что их поддерживать в актуальном состоянии сложно. Чуть что какую закорючку поправить, надо расшифровывать, менять что надо и, зашифровывать обратно.
+2
Самый смешной был случай, когда я понял что это утопия, это когда кто-то выложил разэнкоженный файл проверки лицензии продукта, который старательно энкодился зенд-гардом платным.
Так в этом файле даже переносы строк были аккуратнее расставлены, чем в оригинальном ))))
Так в этом файле даже переносы строк были аккуратнее расставлены, чем в оригинальном ))))
+4
А зачем обратно зашифровывать?
0
Расшифровывать вручную всегда интересно, но если нужно быстро получить исходный код поможет сервис dezend.me (недавно о нем писал). На сайте есть универсальный декодер, вот расшифрованный скрипт из статьи, правда с русскими символами у него проблемы.
+4
Вот еще: Методика деобфускации PHP-скриптов (достаточно развернуто все описано)
+1
В результате несложных, монотонных действий получен исходный код с осмысленными именами переменных и не запутанной логикой?
Называя это «защитой» php-crypt.com вводит своих пользователей в заблуждение.
Называя это «защитой» php-crypt.com вводит своих пользователей в заблуждение.
0
Ой, позвольте нубо-вопрос:
дано: допустим, есть сайт. Где-то там в недрах веб-сервера лежит классный php-скрипт, который, скажем, выводит… таблицу умножения :)
собственно вопрос: может ли пользователь скачать сам скрипт, а не его результат?
дано: допустим, есть сайт. Где-то там в недрах веб-сервера лежит классный php-скрипт, который, скажем, выводит… таблицу умножения :)
собственно вопрос: может ли пользователь скачать сам скрипт, а не его результат?
0
Нет, не может.
0
может, лови 4 способа навскидку:
1. если web-server не правильно настроен либо админ чего-то обновляет, например закосячит в nginx с конфигами
2. на опять же не правильно настроенном виртуальном хостинге, когда например можно от одного аккаунта, читать файлы другого. Например в файле /home/anton_slim/public_html/hack.php зная путь до твоего супер секретного скрипта прописать:
3. если ты используешь ftp, вместо например безопасного sFTP с ключем, твой пароль легко угоняется, ну а дальше мы получим доступ не только к одному файлу, но и ко всем что доступны для твоего юзверя
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. предыдущий админ твоего сервера, оставил дыру
можно дальше продолжать, случаи разные бывают, не зарекайтесь, особенно это видно по топикам с залитыми вирусами на сервера/сайты.
0
Что-то из pastebin.com/HHhZbYs2 у меня получилось сделать это pastebin.com/7fNLEP76 что я не так сделал?
пользовался любимым echo ) убираем eval и ставим echo.
Дайте что-нибудь посложней! хочу позаморачиваться))
пользовался любимым echo ) убираем eval и ставим echo.
Дайте что-нибудь посложней! хочу позаморачиваться))
+1
это не тот скрипт что я расшифровывал, но из той же оперы, поправил ссылку, спасибо большое что заметили.
0
А я так сделал:
1)
2)
3) Дальше после массивов было дописано:
4) Результат выполнения php 3.php был такой:
5)
6) Готово. Можно удалить добавленные в 3ем пункте строчки + массивы. они теперь не нужны.
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ем пункте строчки + массивы. они теперь не нужны.
0
Было дело, мучился с подобным, сначала просто интересно было, потом срочно нужно было исправить что-то. Разобрался, для «массовой» деобфускации написал скрипт на том же php, где в цикле (мало что декодируется за один проход), пока в тексте есть 'eval', делаем несколько замен (в т.ч eval на echo), включаем буферизацию, и сами eval'им полученный код, итоговый буфер скидываем в файл. Ну а далее только к читаемому виду привести.
Кстати, подобно сжатию js-скриптов, можно сжимать php-скрипты, в т.ч складывать много файлов в один, но это всё весьма специфично. Для усложнения же чтения надо не забывать делать замены имён и прочее, что часто может привести к неработоспособности скриптов. Зато очень весело выглядят скрипты, где каждое имя состоит из определённого количества/последовательности подчеркиваний или набора символов типа 1,I,l…
Кстати, подобно сжатию js-скриптов, можно сжимать php-скрипты, в т.ч складывать много файлов в один, но это всё весьма специфично. Для усложнения же чтения надо не забывать делать замены имён и прочее, что часто может привести к неработоспособности скриптов. Зато очень весело выглядят скрипты, где каждое имя состоит из определённого количества/последовательности подчеркиваний или набора символов типа 1,I,l…
0
НЛО прилетело и опубликовало эту надпись здесь
«от автора скрипта» «но код пишет программист, а не я»
Что-то я не понимаю
Что-то я не понимаю
0
НЛО прилетело и опубликовало эту надпись здесь
Зарегистрируйтесь на Хабре , чтобы оставить комментарий
Деобфускация PHP кода