Распаковка Темиды

Тема в разделе "WASM.RESEARCH", создана пользователем blueboar, 13 авг 2009.

  1. blueboar

    blueboar New Member

    Публикаций:
    0
    Регистрация:
    29 авг 2004
    Сообщения:
    110
    Адрес:
    Россия, Курган
    Решил тут поразбираться со страшным зверем которого зовут Themida. Причем не так, как большинство - как бы получше сграбить дамп, чтоб проверки протектора обмануть, а именно по хакерски - дизассемблировать и понять структуру протектора.

    Я понимаю, что в каждом случае штамм Themida отличается друг от друга (из-за ее возможностей, и разных настроек при запуске). Но не будете же вы спорить, что один раз ее дизассемблировав второй и последующие разы пойдут проще?

    Как подопытный кролик пошел The Bat 4.0.24 (авторские права автора The Bat я не нарушаю, так как взламывать его прогу я не собираюсь, а сам использую Outlook). Естественно, пока я Themida не взломал, но несколько шагов уже сделал. Результаты моих изысканий оформил тут:

    http://bigblueboar.narod.ru/kill_themida.doc

    Собственно просьба к умным и знающим людям - где поправить, где наставить на путь истинный, а где и поругать. Я думаю, в конце концов мы таки разберемся в данном протекторе.
     
  2. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
    blueboar
    лучше дампи
     
  3. blueboar

    blueboar New Member

    Публикаций:
    0
    Регистрация:
    29 авг 2004
    Сообщения:
    110
    Адрес:
    Россия, Курган
    Ну вот все так - лучше дампи, лучше дампи :dntknw:. Можно подумать красотой защиты уже никто не восхищается, всем лишь бы побыстрее сдампить.
     
  4. Killer

    Killer New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2008
    Сообщения:
    316
    Начнем с того, что загрузив фемиду в дизассемблер ты ничего нормального не увидишь. Нужно грузить в отладчик, таким образом у тебя намного больше шансов понять структуру фемиды. Итак, вот анти-отладка в фемиде:

    1.IsDebuggerPresent
    2.NtGlobalFlag
    3.ProcessHeapFlag
    4.ZwQueryInformationProcess
    5.ZwSetInformationThread
    6.CheckRemoteDebuggerPresent
    7.OutputDebugStringA

    Кажется это все(или я что то забыл). Поставив нужный плагин(ы) в отладчик, ты с этим справишься. Эхх... там еще VM... И в последних версиях(а хакать мы будем ведь только последние версии, верно?:)) VM очень, очень, ОЧЕНЬ усилена. Полюбому придется писать декомпилятор...

    Ну все в таком духе.
     
  5. Killer

    Killer New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2008
    Сообщения:
    316
    Читал твой файл kill_themida. Ну так ты точно ничего не сделаешь. Фемида прячет точку входа, притом что там еще могут быть фейковые переходы. Остановись, пока не поздно:) Глупости все это. Бери ольку и распаковывай. Так НАМНОГО лучше исследуешь прот.
     
  6. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
    я по глупости пытался "распаковать" фемиду статически, снял 3 слоя шифрации, дошел до момента когда она импортирует апишки для самой себя, и понял что дальше лучше не трогать, ибо нужен деобфускатор
     
  7. Killer

    Killer New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2008
    Сообщения:
    316
    "Деобфускатор" - просто возьми трейсер, потом очисть трассу...
     
  8. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
    Killer
    чем очистить? и как по трассе восстановить алгоритм, циклы и ветвления?
    и там трасса будет сотни миллионов инструкций, пока до OEP дойдет, и трассироваться будет сутки
     
  9. blueboar

    blueboar New Member

    Публикаций:
    0
    Регистрация:
    29 авг 2004
    Сообщения:
    110
    Адрес:
    Россия, Курган
    Я вот тоже снял три слоя шифрации и дошел до момента, когда запускается виртуальная машина. Нашел все опкоды (в смысле адреса перехода для каждого опкода) и адрес начала "виртуальной программы". Никаких API Themida еще не загружала. Судя по всему в новой версии даже APIшники виртуальная машина грузит.

    Ну что ж - тем интереснее - будем виртуалку развиртуаливать
     
  10. blueboar

    blueboar New Member

    Публикаций:
    0
    Регистрация:
    29 авг 2004
    Сообщения:
    110
    Адрес:
    Россия, Курган
    А вот и снова я. Нет, это я не 4 месяца ковырял Фемиду, нет :)). От силы две недели.
    Пока расковыряно 9 опкодов виртуальной машины и около 25 команд

    Результаты как обычно http://bigblueboar.narod.ru/kill_themida.rar
     
  11. blueboar

    blueboar New Member

    Публикаций:
    0
    Регистрация:
    29 авг 2004
    Сообщения:
    110
    Адрес:
    Россия, Курган
    Да, и насчет трассы - а как вообще трассу с программы снять, просвятите, а?
     
  12. lobzik

    lobzik New Member

    Публикаций:
    0
    Регистрация:
    9 апр 2009
    Сообщения:
    34
    Черт седня тоже столкнулся с тэмидой (фемидой кому как угодно). Это ДЛЛка, могу даже под олей грузануть, не без плагинов, как снять дамп так чтоб потом она загружалась нормально ?)
     
  13. blueboar

    blueboar New Member

    Публикаций:
    0
    Регистрация:
    29 авг 2004
    Сообщения:
    110
    Адрес:
    Россия, Курган
    в http://bigblueboar.narod.ru/kill_themida.rar - то, что удалось докопать к текущему моменту

    - около 20 обработчиков команд
    - две полностью разобранных программы виртуалки
    - Фемида нашла базу KERNEL32.DLL, прошерстила экспорты, нашла адрес LoadLibraryA, загрузила USER32.DLL
     
  14. Vam

    Vam New Member

    Публикаций:
    0
    Регистрация:
    16 июл 2008
    Сообщения:
    149
    Посмотрел я на ваши листинги обработчиков команд, и что тут можно сказать, красиво, но насколько красиво, настолько и бесполезно, а времени затрачена уйма.
    1. Реализаций ВМ много, одинаковых среди них нет.
    2. Каждая ВМ имеет свою систему команд (опкоды примитивов).
    3. Каждая ВМ имеет свою таблицу регистров РС.
    4. Каждая ВМ имеет свой алгоритм хеширования примитивов.
    5. Каждый примитив имеет свой обфускированный код.
    и этот список можно ещё продолжить...

    Рекомендую почитать эту тему с поста 208.
    Успехов...