eXeLab
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС
выпущен 4 ноября!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

Русский / Russian English / Английский

Сейчас на форуме: (+4 невидимых)
 · Начало · Статистика · Регистрация · Поиск · ПРАВИЛА ФОРУМА · Язык · RSS · SVN ·

 eXeL@B —› Протекторы —› Исследование защиты Themida
<< . 1 . 2 . 3 .
Посл.ответ Сообщение

Ранг: 16.0 (новичок)
Статус: Участник

Создано: 13 августа 2009 09:51 · Поправил: blueboar2 New!
Цитата · Личное сообщение · #1

Решил тут поразбираться со страшным зверем которого зовут Themida. Причем не так, как большинство - как бы получше сграбить дамп, чтоб проверки протектора обмануть, а именно по хакерски - дизассемблировать и понять структуру протектора.

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

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

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

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

Ранг: 137.9 (ветеран)
Статус: Участник

Создано: 23 декабря 2009 23:14 New!
Цитата · Личное сообщение · #2

esec.fr.sogeti.com/blog/index.php?2009/10/02/71-how-to-implement-a-new-process-in-metasm интересная статтья, думаю в тему. если что не взыщите

Ранг: 16.0 (новичок)
Статус: Участник

Создано: 25 декабря 2009 12:28 New!
Цитата · Личное сообщение · #3

Обновил документ. 15 обработчиков, около 70 разобранных команд виртуальной машины

Ранг: 16.0 (новичок)
Статус: Участник

Создано: 1 февраля 2010 16:16 New!
Цитата · Личное сообщение · #4

Итак, первый этап пройден. Виртуальная машина ЗАКОНЧИЛАСЬ. Оно и ежу понятно, что закончилась она только первая VM, а там еще куча предстоит. Но пока она вышла обратно в ассемблерный код и пытается найти экспорты KERNEL32.DLL

А вся виртуалка (к слову сказать около 400 байт) делала следующее:

- Сохранила на стеке некую константу непонятного вида
- Сохранила на стеке базу KERNEL32.DLL (найденную ранее в ассемблерном коде)
- Сохранила на стеке адрес, по которому находится код, запускающий следующую VM

И... все. Для этого нужно 400 байт

Ранг: 16.0 (новичок)
Статус: Участник

Создано: 2 февраля 2010 11:08 New!
Цитата · Личное сообщение · #5

Продвинулись далее. В связи с этим откорректированное предыдущее сообщение:

А вся виртуалка (к слову сказать около 400 байт) делала следующее:

- Сохранила на стеке ХЭШ строки 'LoadLibraryExA'
- Сохранила на стеке базу KERNEL32.DLL (найденную ранее в ассемблерном коде)
- Сохранила на стеке адрес, по которому находится код, запускающий следующую VM
- Сохранила букву 'L' в памяти

А ассемблерный код за ней делал следующее

- Нашел экспорты KERNEL32.DLL
- Нашел из них те, что на букву L
- Из них вычислил хэш и нашел функцию LoadLibraryExA
- Сохранил ее адрес.

И снова занырнул в виртуалку. Разбираюсь

Ранг: 16.0 (новичок)
Статус: Участник

Создано: 3 февраля 2010 07:40 New!
Цитата · Личное сообщение · #6

Очередное дополнение. Функция все-таки вызывала не LoadLibraryExA, а просто LoadLibraryA. Во второй ВМ она занесла на стек адрес строки 'USER32.DLL' и вызвала LoadLibraryA чтобы ее загрузить. Ковыряю третью ВМ

Ранг: 159.1 (ветеран)
Статус: Участник

Создано: 3 февраля 2010 13:25 New!
Цитата · Личное сообщение · #7

blueboar2 пишет:
Ковыряю третью ВМ

Это не виртуальные машины.

Ранг: 16.0 (новичок)
Статус: Участник

Создано: 3 февраля 2010 14:04 New!
Цитата · Личное сообщение · #8

Да знаю я. Одна виртуальная машина, но разные программы. Извиняюсь за нарушение терминологии


Ранг: 520.1 (!)
Статус: Участник
Победитель турнира 2010

Создано: 3 февраля 2010 14:14 New!
Цитата · Личное сообщение · #9

а покрыто ВМ что нибудь такое
Code:
  1. loc_56CAAC:
  2.                 mov     byte ptr ss:SL_1stCharOfProcName[ebp], 'L'
  3.                 push    0D9DA1CE9h      ; kernel32_LoadLibraryA
  4.                 push    ss:SL_hKernel32_fake[ebp]
  5.                 lea     eax, SecurLib_GetProcAddress1[ebp]
  6.                 call    eax
  7.                 push    eax
  8.                 lea     ecx, _USER32_DLL[ebp] ; "USER32.dll"
  9.                 push    ecx
  10.                 call    eax             ; kernel32_LoadLibraryA
  11.                 test    eax, eax
  12.                 jnz     short loc_56CAE2
  13.                 pop     eax
  14. loc_56CAD5:
  15.                 mov     eax, 0
  16.                 lea     ecx, SL_ErrorHandle[ebp]
  17.                 jmp     ecx
  18. loc_56CAE2:
  19.                 mov     ss:SL_hUser32[ebp], eax
  20.                 pop     eax
  21.                 lea     ecx, _ADVAPI32_DLL[ebp] ; "ADVAPI32.dll"
  22.                 push    ecx
  23.                 call    eax
  24.                 test    eax, eax
  25.                 jz      short loc_56CAD5
  26.                 mov     ss:SL_hAdvapi32[ebp], eax
  27.                 cmp     ss:SL_flNT[ebp], 1
  28.                 jnz     short loc_56CB32
  29.                 mov     byte ptr ss:SL_1stCharOfProcName[ebp], 'L'
  30.                 push    0D9DA1CE9h      ; kernel32_LoadLibraryA
  31.                 push    ss:SL_hKernel32_fake[ebp]
  32.                 lea     eax, SecurLib_GetProcAddress1[ebp]
  33.                 call    eax
  34.                 lea     ecx, _NTDLL_DLL[ebp] ; "NTDLL.dll"
  35.                 push    ecx
  36.                 call    eax             ; kernel32_LoadLibraryA
  37.                 test    eax, eax
  38.                 jz      short loc_56CAD5
  39.                 mov     ss:SL_hNtdll[ebp], eax
  40. loc_56CB32:
  41.                 mov     byte ptr ss:SL_1stCharOfProcName[ebp], 'G'
  42.                 push    0A817731Ah      ; kernel32_GetLocalTime
  43.                 push    ss:SL_hKernel32_fake[ebp]
  44.                 lea     eax, SecurLib_GetProcAddress1[ebp]
  45.                 call    eax
  46.                 lea     ecx, dword_56CA8D[ebp]
  47.                 push    ecx
  48.                 call    eax             ; kernel32_GetLocalTime
  49.                 lea     eax, dword_56CA8D[ebp]
  50.                 movzx   ebx, word ptr [eax+0Eh]
  51.                 movzx   eax, word ptr [eax+0Ch]
  52.                 shl     eax, 10h
  53.                 or      eax, ebx
  54.                 shl     ebx, 10h
  55.                 add     ebx, ecx
  56.                 add     eax, 0B8736746h
  57.                 xor     eax, ebx


Адреса конечно-же другие, т.к. версия Фимы другая

Ранг: 16.0 (новичок)
Статус: Участник

Создано: 3 февраля 2010 14:19 New!
Цитата · Личное сообщение · #10

А в конце это что? SEED? Или хэш какой-нить? Из времени то


Ранг: 520.1 (!)
Статус: Участник
Победитель турнира 2010

Создано: 3 февраля 2010 16:12 New!
Цитата · Личное сообщение · #11

генерятся константы для антидампинга

Ранг: 17.0 (новичок)
Статус: Участник

Создано: 30 октября 2012 14:47 New!
Цитата · Личное сообщение · #12

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

Ссылка не активна будьте добры у кого остались архивы, залейте на обменник.

Ранг: 114.8 (ветеран)
Статус: Участник

Создано: 30 октября 2012 20:23 New!
Цитата · Личное сообщение · #13

neoBlinXaker пишет:
Ссылка не активна будьте добры у кого остались архивы, залейте на обменник.

http://zalil.ru/33908860
<< . 1 . 2 . 3 .
 eXeL@B —› Протекторы —› Исследование защиты Themida

Оригинальный DVD-ROM: eXeL@B DVD !

Вы находитесь на форуме сайта EXELAB.RU
Проект ReactOS