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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: разбор кода

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
mstan
Отправлено: 14 Августа, 2015 - 17:51:29
Post Id


Новичок


Покинул форум
Сообщений всего: 19
Дата рег-ции: Июнь 2015  


Помог: 0 раз(а)




Есть код, разбираюсь в его логике
PHP:
скопировать код в буфер обмена
  1. create_function('',"};".gzinflate(preg_match("#/\*\*(.*)\*\*/#se",implode("",file($_SERVER["SCRIPT_FILENAME"])),$match)?($match[1]):"")."//");


Поправьте, если не прав:
1) file($_SERVER["SCRIPT_FILENAME"]) - файл считывает сам себя, получаем массив;
2) трансформируем массив в строку (implode)
3) ищем совпадения по шаблону **(.*)**, пишем это дело в $match. Не очень разобрался с модификатором е, как-то все мудрено на php.net расписано
4) ,$match)?($match[1]):"" - вот тут я в тупике
5) распаковываем то, что получили, какой-то условный some_phpcode
6) создаем функцию create_function('',"};".some_phpcode."//");
Тут я тоже не понимаю, что за символы }; и // до и после some_phpcode

Подскажите, где неправ в логике, что за непонятные мне моменты в коде (п. 3, п.4 и п.6)
И по возможности, как создать обратный процесс?

ПС Сам исходник файла представляет собой нечто вида:
PHP:
скопировать код в буфер обмена
  1. <?PHP  /** тут_типичная_абракадабра_для_сжатого_файла **/ create_function('',"};".gzinflate(preg_match("#/\*\*(.*)\*\*/#se",implode("",file($_SERVER["SCRIPT_FILENAME"])),$match)?($match[1]):"")."//");
 
 Top
andrewkard
Отправлено: 14 Августа, 2015 - 18:23:06
Post Id


Участник


Покинул форум
Сообщений всего: 1372
Дата рег-ции: Нояб. 2014  


Помог: 30 раз(а)




mstan
Практически верно:
implode("",file($_SERVER["SCRIPT_FILENAME"])) - тут будет строка данных этого же файла;
preg_match ищет по маске "/**rrrrrr**/" где вместо r - любой символ и их может быть много, и если нашла, данные передаются в расшифровщик gzinflate.
И потом будет создана функция без аргументов, но тут не ясно, "};" в теле функции выводит ошибку...
(Добавление)
andrewkard пишет:
данные передаются в расшифровщик gzinflate

Только не первое вхождение, а второе: $match[1].

(Отредактировано автором: 14 Августа, 2015 - 18:29:13)

 
 Top
mstan
Отправлено: 14 Августа, 2015 - 20:54:35
Post Id


Новичок


Покинул форум
Сообщений всего: 19
Дата рег-ции: Июнь 2015  


Помог: 0 раз(а)




А как этот процесс произвести в обратном порядке? Т.е. получить именно ту самую /** тут_типичная_абракадабра_для_сжа того_файла **/? И что это за ,$match)?($match[1]):""?
 
 Top
andrewkard
Отправлено: 15 Августа, 2015 - 08:46:58
Post Id


Участник


Покинул форум
Сообщений всего: 1372
Дата рег-ции: Нояб. 2014  


Помог: 30 раз(а)




mstan пишет:
/** тут_типичная_абракадабра_для_сжа того_файла **/?

Ищите в файле Улыбка
mstan пишет:
И что это за ,$match)?($match[1]):""

preg_match записывает результаты в массив $match, и это короткая форма IF, т.е.:

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB