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

Тема в разделе "PHP", создана пользователем java3000, 13 ноя 2011.

Модераторы: latteo
  1. java3000

    java3000 Постоялец

    Регистр.:
    3 апр 2008
    Сообщения:
    54
    Симпатии:
    15
    Как задача.
    1. Имеем Umi (для примера, амиро действует, например, также, вроде...)
    2. Имеем "обфусцированные" файлы.
    3. Все их обфусцирование заключается в изменении имен переменных на их md5 хеши.
    3.1 Именв глобальны. Т.е. хеши в разных файлах совпадают со смыслом и именем (как бы)
    3.2 Есть файлы, конкретно в umi? которые не обфусцированны.
    Итого, родилось такое решение:
    - Сканируем рекурсивно от указанного корня.
    -Выбираем всё, что $xxx
    -отсеиваем все, что равно длинне хеша (33 символа= v+ 32 байта хеша)
    .....
    а вот далее меня совсем смущает(((
    - придумал, что имея имена, можно самим построить хеши и по совпадению заменить- но марока... да и это только изветные имена, а это не 100%
    Что подскажете. Я зашел в тупик :(
     
  2. komyak

    komyak

    Регистр.:
    4 фев 2009
    Сообщения:
    486
    Симпатии:
    187
    Все заменяй на известные названия, а что осталось то ручками по смыслу кода и распознанное имя пиши с файл с известными именами. Так сказать дополняй на будущее.
     
  3. java3000

    java3000 Постоялец

    Регистр.:
    3 апр 2008
    Сообщения:
    54
    Симпатии:
    15
    Ну, собственно это я в своем посте и описал....
    Но на это уходит много действий. Собрать переменные, отсеять. создать хеши,. найти совпадения, заменить совпадения...
    Я тему создал для того, что как-то все не айс и наверняка более продвинутые в php знают путь кароче...
     
  4. dani.

    dani. Создатель

    Регистр.:
    19 сен 2008
    Сообщения:
    32
    Симпатии:
    6
    В смысле много действий? Это же не руками нужно делать, напиши простенький скрипт на php (основные функции будут file_get_contents, file_put_contents и md5). Ну или если даже это лень, но есть деньги, можешь на http://cmd5.ru/password.aspx купить пакет на кучу хешей и распознать их. Скорее всего все распознает, т.к. переменные имеют обычно осмысленные и недлинные названия.
     
  5. java3000

    java3000 Постоялец

    Регистр.:
    3 апр 2008
    Сообщения:
    54
    Симпатии:
    15
    ммм... раз писал про помощь, значит пишу сам.
    Много действий- вот смысл:
    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 символов в длину.