помощь в написании деобфускатора

java3000

Постоялец
Регистрация
3 Апр 2008
Сообщения
55
Реакции
15
Как задача.
1. Имеем Umi (для примера, амиро действует, например, также, вроде...)
2. Имеем "обфусцированные" файлы.
3. Все их обфусцирование заключается в изменении имен переменных на их md5 хеши.
3.1 Именв глобальны. Т.е. хеши в разных файлах совпадают со смыслом и именем (как бы)
3.2 Есть файлы, конкретно в umi? которые не обфусцированны.
Итого, родилось такое решение:
- Сканируем рекурсивно от указанного корня.
-Выбираем всё, что $xxx
-отсеиваем все, что равно длинне хеша (33 символа= v+ 32 байта хеша)
.....
а вот далее меня совсем смущает(((
- придумал, что имея имена, можно самим построить хеши и по совпадению заменить- но марока... да и это только изветные имена, а это не 100%
Что подскажете. Я зашел в тупик :(
 
Все заменяй на известные названия, а что осталось то ручками по смыслу кода и распознанное имя пиши с файл с известными именами. Так сказать дополняй на будущее.
 
Ну, собственно это я в своем посте и описал....
Но на это уходит много действий. Собрать переменные, отсеять. создать хеши,. найти совпадения, заменить совпадения...
Я тему создал для того, что как-то все не айс и наверняка более продвинутые в php знают путь кароче...
 
Ну, собственно это я в своем посте и описал....
Но на это уходит много действий. Собрать переменные, отсеять. создать хеши,. найти совпадения, заменить совпадения...
Я тему создал для того, что как-то все не айс и наверняка более продвинутые в php знают путь кароче...
В смысле много действий? Это же не руками нужно делать, напиши простенький скрипт на php (основные функции будут file_get_contents, file_put_contents и md5). Ну или если даже это лень, но есть деньги, можешь на купить пакет на кучу хешей и распознать их. Скорее всего все распознает, т.к. переменные имеют обычно осмысленные и недлинные названия.
 
ммм... раз писал про помощь, значит пишу сам.
Много действий- вот смысл:
1я часть скрипта создает хеши:
массив- куча файлов необфусцированных;
foreach массив как $a
$b=file($a);
foreach ($b as $c)
$d= preg_grep(условие, $c);
в массив попадают только строки в которых есть $xxxx или $_xxxx
потом, т.к. файлов много- массив переписывается в еще одном foreach в другой, глобальный в виде
arr[key]= ."$v".md5($value);

Это образный код. если надо- приведу точный.
Смысл в том, что я долго смотрел на php.su и php.net и в итоге для ся составил лучшее из того, что хотел, НО ЦЕЛЫХ 3 foreach один в другом!!!!!
Вот это- много действий. Вот это нерациональный код. Вот это я уже 100500 раз просматривал и не смог улучшить. Потому тут и написал....
З.Ы.: массив- первоначальный вариант. В реале уже делаю рекурсивный обход и запись переменных из файлов .php переменных менее 32 символов в длину.
 
Назад
Сверху