В продолжение тем «Война с гоблинами…», рассмотрим сегодня новые функции, которые были добавлены в разрабатываемую мой программу по проверке шаблонов WordPress на «вшивость».
Как я уже упоминал, зачастую, ссылки на ГС выводятся на страницы наших с Вами сайтов при помощи php-функций, имена которых «зашифрованы» под вполне безобидные тэги шаблонов WordPress, например bloginfo и другие. Исходя из этого, проверка шаблона вручную может значительно осложняться, может возникнуть ситуация, когда в порыве праведного гнева, вы можете удалить нормальный тег и т.д.
Чтобы этого не произошло я немного расширил возможности поиска «вшей» в шаблонах и сделал подробный вывод информации о каждой найденной ошибке. Например, возьмем тему, содержащую файл functions.php в котором содержится вредоносная для нас функция.
Вид главного окна программы после проверки темы:
Как видите, теперь все файлы, в которых найдены ошибки, выделяются в списке красным цыетом. Выбираем файлс ошибками и получаем их список:
В файле functions.php как минимум содерится две нежелательные функции и закодированный участок текста.
Теперь делаем двойной клик по первой ошибке и получаем всю интересующую нас информацию:
Помимо того, что программа теперь определяет название функции и содержащиеся в этой функции ссылки на внешние ресурсы, теперь также ищутся строки, где встречается имя функции. В данном случае, необходимо «убить» вызов функции в файле index.php на двадцатой строке.
Следующий момент, который для нас важен — это закодированные участки текста. В большинстве случаев закодированный участок может выглядеть так:
echo(base64_decode("PGEgaHJlZj0....
реже, так:
eval(gzinflate(base64_decode('DdBJkqJAAA....
Во втором случае происходит распаковка закодированой строки. К сожалению, аналогичная функция в Delphi и Lazarus работает, используя более новый стандарт, поэтому пока такие куски кода не расшифровываются. А вот, что касается первого случая, то в программе расшифровка поддерживается следующим образом.
Выбираем опять двойным кликом ошибку и получаем подробный вывод:
Тепер, если нам необходимо получить расшифрованную строку, жмем кнопку «Пробовать расшифровать» и получаем, то, что хотели:
Как видите, в закодированном участке шаблона, содержалась ссылка на ресурс, который никак не связан с созданием шаблона. Следовательно, такой участок кода следует удалить.
В настоящее время продолжаю разбираться с другими способами обмана блоггеров. Надо сказать, способов непочатый край. Также планирую добавить в программу проверки на вызов eval, т.к. это также может быть очень и очень пагубным для нас действием.
Если есть ещё какие-либо идеи, пожелания по поводу развития программы — пишите, не стесняйтесь. Пока не выложена версия для масштабного использования Вы ещё можете повлиять на развитие программа, а дальше скорее всего останется только работа над ошибками, если таковые найдуться.

Описание радует, остаётся опробовать данную фичу на практике.