На днях разбирал один скрипт . Не то чтобы у меня был в этом много опыта . Его вообще нет . Но пых есть пых . Код декриптуется в eval . Старый рецепт - поменял eval на echo - забрал новый код из браузера .
Новый код был странный .
Вообще это код распаковщика для новой строки с данными .Code:for($i = 0, $k = 0; $i = strlen($key)) $k = 0; $s[$i] = $s[$i] ^ $key[$k]; } $e = $s; for($i=0, $k=0; $i = strlen($key)) $k = 0; $e[$i] = $e[$i] & $key[$k]; }
Пол дня считал , что автор гуру . Он знает способ заставить цикл for работать без открывающей скобки и третьего условия. Другие пол дня я полагал что скобки есть . Но защита хитро прячет часть кода распаковщика и я не знаю как . Так прошел целый день .
Оригинальный код был таким .
Код <?php не отображается браузером тк считается за тег . Вместе с ним из видимости за компанию ушел кусок из середины цикла . Код из вполне нормального стал тем что выше .Code:<?php /* bla bha bha */ for($i = 0, $k = 0; $i < strlen($s); $i++, $k++) { if ($k >= strlen($key)) $k = 0; $s[$i] = $s[$i] ^ $key[$k]; } $e = $s; for($i=0, $k=0; $i<strlen($e); $i++, $k++) { if ($k >= strlen($key)) $k = 0; $e[$i] = $e[$i] & $key[$k]; } ?>
Со строками данных было еще интереснее . Из них удалялись отдельные символы , после чего они переставали расшифровываться даже совершенно рабочим декриптором . Или начинали расшифровываться кусками .
В итоге из-за браузера я потратил почти столько же времени , сколько на создание деобфускатора .
Надеюсь этим постом сэкономлю пару часов какому-нибудь чайнику , который решил распаковать скрипт . Eval нужно выводить в файл , а не в браузер .



Reply With Quote
Thanks