Сейчас на форуме: (+7 невидимых) |
eXeL@B —› Протекторы —› Исследование защиты Themida |
. 1 . 2 . 3 . >> |
Посл.ответ | Сообщение |
|
Создано: 13 августа 2009 09:51 · Поправил: blueboar2 · Личное сообщение · #1 Решил тут поразбираться со страшным зверем которого зовут Themida. Причем не так, как большинство - как бы получше сграбить дамп, чтоб проверки протектора обмануть, а именно по хакерски - дизассемблировать и понять структуру протектора. Я понимаю, что в каждом случае штамм Themida отличается друг от друга (из-за ее возможностей, и разных настроек при запуске). Но не будете же вы спорить, что один раз ее дизассемблировав второй и последующие разы пойдут проще? Как подопытный кролик пошел The Bat 4.0.24 (авторские права автора The Bat я не нарушаю, так как взламывать его прогу я не собираюсь, а сам использую Outlook). Естественно, пока я Themida не взломал, но несколько шагов уже сделал. Результаты моих изысканий оформил тут: Собственно просьба к умным и знающим людям - где поправить, где наставить на путь истинный, а где и поругать. Я думаю, в конце концов мы таки разберемся в данном протекторе. |
|
Создано: 13 августа 2009 10:19 · Личное сообщение · #2 чтобы понять стурктуру протектора - нужно разбирать стуртуру протектора, а именно ВМ, т.к. вся основная логика находится там. в твоем доке по сути вообще ничего нет!!! ну показал ты как проиходит декомпрессия кода фемиды + как она заполняет первоначальный импорт после поиска базы kernel32.dll и переходит на свой основной код. это вообще самый первый слой. в нем и так нет смысла, это считай что фемиду накрыли UPX и ты счас снял UPX. далее ты идешь в код фемиды, где она подгрузит копии kernel32.dll, user32.dll, advapi32.dll и сама оттуда себе заполнит импорт. далее идет антиотладка: дешифрует строки со всякими дровами, именами окон, и ищет их в процессах. это и так все известно. далее идет распаковка коды программы, если есть маркеры, то выделение областей ВМ + настройка антидампа. далее идет заполение импорта по ее таблице в коде все вызовы в импорт заполняются через 0xE9 (jmp). ну и се. запуск проги. это все и так было всем известно в общих чертах. а вот основное что творится в ВМ протектора, это вопрос!!!!! P.S. неясно зачем делал коментарии для каждой строчки кода, думаешь новичку расписать весь стаб фемиды на 200 листах с коментариями в каждой ? |
|
Создано: 13 августа 2009 10:33 · Личное сообщение · #3 Это только начало. Я просто хотел проверить нужно это кому-то или нет. Стоит продолжать ковырять или нет. А насчет того, что это "всем известно в общих чертах" - так именно что "в общих чертах". Да, я снял UPX. Но я ведь не останавливаюсь - и дешифрую дальше. Насчет PS: Даже если и так - это что, плохо? Новичкам тоже нужно просвящаться |
|
Создано: 13 августа 2009 10:35 · Личное сообщение · #4 Ведь она монстровидная – и поэтому пакует сама себя Ну я бы сказал что в большинстве протов основной код прота упакован чем-нибудь. На счёт декомпрессии согласен с RSI. Наверно не стоило так подробно процесс расписывать. Для взлома прота это не нужно. Тем не менее хорошая работа, наверно долго сидел. А терпение и труд всё перетрут. |
|
Создано: 13 августа 2009 10:49 · Личное сообщение · #5 |
|
Создано: 13 августа 2009 11:10 · Личное сообщение · #6 |
|
Создано: 13 августа 2009 12:23 · Личное сообщение · #7 |
|
Создано: 13 августа 2009 12:26 · Личное сообщение · #8 |
|
Создано: 13 августа 2009 12:30 · Поправил: OKOB · Личное сообщение · #9 blueboar2 пишет: Но не будете же вы спорить, что один раз ее дизассемблировав второй и последующие разы пойдут проще? Буду спорить... Подход топикстартера к Фиме в корне неверен. И больше чем формирование усидчивости ничего не даст. Фима - аля набор кубиков и из этих кубиков в зависимости от опций защиты и положения звезд на небе формируется стаб защиты. При этом при одних и тех-же опциях защиты порядок следования большинства "кубиков" произвольный, раскриптовщики участков генерируются каждый раз разные, или находящиеся в коде перед участком или висящие на 16 потоках. При всем этом и сами участки-кубики и декрипторы каждый раз уникальным образом обсфуцированы. Из версии в версию все больше из них покрыты виртуальной машиной. Посему применяемый подход для дальнейшего использования результатов потребует кропотливой деобфускации кода и однозначной идентификации его с опцией защиты. Находящееся под ВМ вообще останется скрытым так как добраться до него при таком подходе не удастся. В этом случае верным подходом является работа все-же в статике с нерабочим дампом самой Фимы, где в юните AsmBridge в необсфуцированном виде можно найти все "кубики" и код настраивающий константы в коде этих кубиков до обфускации, криптования или виртуализации и т.п. ----- 127.0.0.1, sweet 127.0.0.1 |
|
Создано: 13 августа 2009 12:35 · Личное сообщение · #10 Skarabey пишет: Предупреждаю, что фемида настолько самоупорядовачная что может удалять файлы, я знаю два из них oreans.sys и oreans32.sys Её файлы, что хочет то и делает. Они все равно сидят у нее в середине стаба и по необходимости она их всегда "сгенерит". Кроме указаных тогда еще узнай oreans64.sys и xprot.vxd. ----- 127.0.0.1, sweet 127.0.0.1 |
|
Создано: 13 августа 2009 12:42 · Поправил: Skarabey · Личное сообщение · #11 blueboar2 Надеюсь тебе это поможет в твоих иследованиях: ссылка:http://wasm.ru/article.php?article=themida2005 файл: 0599_13.08.2009_CRACKLAB.rU.tgz - themi.docx |
|
Создано: 13 августа 2009 13:33 · Личное сообщение · #12 |
|
Создано: 13 августа 2009 13:43 · Личное сообщение · #13 |
|
Создано: 13 августа 2009 15:35 · Поправил: OKOB · Личное сообщение · #14 blueboar2 пишет: Добрался я таки до виртуальной машины. И немного повезло - это похоже CISC виртуальная машина (опкоды однобайтовые) и основной цикл ее из стааааарой Фимы в чистом виде выглядит так: Code:
а вот это проверка флага занятости виртуальной машины в ее контексте lock cmpxchg [edi+30h], ecx получено так как советовалось в посте 9. Двойные NOPы по тексту листинга, разметка Фимы для участков кода которые не должны быть подвергнуты обфускации. А что касается описаной процедуры распаковки, то это стандартный aPLib depack, он всюду используется в Фиме. 3d78_13.08.2009_CRACKLAB.rU.tgz - depack.asm ----- 127.0.0.1, sweet 127.0.0.1 |
|
Создано: 13 августа 2009 16:37 · Личное сообщение · #15 |
|
Создано: 13 августа 2009 16:53 · Личное сообщение · #16 |
|
Создано: 13 августа 2009 18:26 · Личное сообщение · #17 OKOB, я конечно понимаю, ты умный и все такое. Но есть одно НО. Может ты все и знаешь о фемиде, чего рассказываешь. И я даже готов поверить что твой способ ее взлома действенен и лучше моего погружения. Но где описание твоего способа? На русском и по пунктам. Для новичков. Чтобы пользоваться твоим способом нужно быть дядькой со знанием ассемблера, иды, олли, софтайса и еще пятидесяти приблуд за плечами. Я знаю половину из них, а с половиной могу разобраться, но таких как я (а тем более ты) - единицы. Оно может быть и хорошо - быть элитарным клубом, куда чужаки не допускаются, но я придерживаюсь мнения, что если уж описываешь как сделать что-то, то описывай так, чтобы тебя поняли все - и новички, и гуру. Если сказать что косинус это такая функция, которая получается извлечением корня из единицы минус квадрата синуса, это может будет и правильно математически, но изучающему или новичку абсолютно ничего не даст. А когда он выучит синусы и косинусы, до всего этого он дойдет сам. Извините, если обидел или резко выразился. Это ИМХО |
|
Создано: 13 августа 2009 19:23 · Поправил: OLEGator · Личное сообщение · #18 blueboar2 пишет: Как подопытный кролик пошел The Bat 4.0.24 а вроде там юзается старая версия темиды. Лучше всётаки практиковаться на свежих? Текущая Beta-версия The Bat! - v4.2.9.6 _http://www.ritlabs.com/download/files3/the_bat/beta/tb4296.rar заоодно и страждующим на руборде поможешь RSI пишет: неясно зачем делал коментарии для каждой строчки кода Опытному человеку это кажется через чур, а для новичков - самое то! 2 blueboar2: Небольшое пожелания... Если собрался досконально разбираться, то плиз распиши подробно как и по каким признакам темида определяет, что запущена под виртуальной машиной (Vmware, Virtbox и тд) з.ы. палишься... Сотри в свойствах дока инфу о предприятии... ворд- зло ----- AutoIt |
|
Создано: 13 августа 2009 21:21 · Поправил: neprovad · Личное сообщение · #19 2 blueboar2: имхо начинать разобраться с виртуальной машиной лучше со своих образцов. Делаем простое приложение, допустим на Delphi, защищаем его с нужными настройками вирт. машины, убираем упаковку и прочие опции, чтоб они не мешали исследованию и начинаем смотреть как все это будет выглядеть внутри вм. Code:
|
|
Создано: 13 августа 2009 22:46 · Личное сообщение · #20 blueboar2 пишет: Но где описание твоего способа? На русском и по пунктам Понимаешь что реверсинг это не тупое повторение чьих то действий, это решение "загадки". вот люди которые ее решили помогают с наводящими советами, а ты должен этими советами пытаться воспользоваться, напрячь свой мозг. а то что-то пошло такое понятие, что мол взлом программы это 1,2,3,4,5. и все. P.S. это мое ИМХО. но сама задумка по исследованию хороша! |
|
Создано: 14 августа 2009 03:31 · Личное сообщение · #21 neprovad пишет: имхо начинать разобраться с виртуальной машиной лучше со своих образцов. Делаем простое приложение, допустим на Delphi, защищаем его с нужными настройками вирт. машины, убираем упаковку и прочие опции, чтоб они не мешали исследованию и начинаем смотреть как все это будет выглядеть внутри вм. +1 RSI пишет: Понимаешь что реверсинг это не тупое повторение чьих то действий, это решение "загадки". вот люди которые ее решили помогают с наводящими советами, а ты должен этими советами пытаться воспользоваться, напрячь свой мозг. +1 А вообще нормальный подход чел сам пытается разобраться . А подход верен или не верен вопрос риторический . Не бросит фиму может наработает свой подход. |
|
Создано: 14 августа 2009 04:39 · Поправил: ClockMan · Личное сообщение · #22 blueboar2 пишет: Но где описание твоего способа? На русском и по пунктам. Для новичков на разбор сложного прота могут уйти годы и делиться этими знаниями со "сканерами" (наверное за эти слова меня запинают) не кому неохото темболее это может приносить неплохой доходНовичёк пускай начинает с upx ----- Чтобы правильно задать вопрос, нужно знать большую часть ответа. Р.Шекли. |
|
Создано: 14 августа 2009 05:21 · Личное сообщение · #23 |
|
Создано: 14 августа 2009 05:27 · Личное сообщение · #24 |
|
Создано: 14 августа 2009 11:08 · Личное сообщение · #25 blueboar2 пишет: Извините, если обидел или резко выразился Да ради бога, на то оно и ИМХО. А по делу... Я тебе предлагаю удочку, а ты хочешь сразу жареную рыбу. Тем более, что ты смело перешагнул через ту всю инфу, что есть в сети и решил изобрести свой велосипед. А по пунктам того, что я тебе советую: 1) берешь старую версию Фимы, именно Фимы, а не приложение защищенное ею, хотя она собою и защищена (начиная с версии 1.8.0.0). 2) берешь UnThemida v3.0 (ColdFever) TmdUnPacker v2.0 (okdodo) и "распаковываешь" 3) Далее грузишь в ИДУ и ищешь строку 'AsmBridge' 4) И исследуешь ниже этого адреса (много кусков покрыто ВМ и покриптовано wsprintf) Если последуешь совету и возьмешь версию 1.8.5.5, то поделюсь ключами для wsprintf OLEGator пишет: распиши подробно как и по каким признакам темида определяет, что запущена под виртуальной машиной (Vmware... Vmware стандартным образом Code:
----- 127.0.0.1, sweet 127.0.0.1 |
|
Создано: 14 августа 2009 17:35 · Поправил: Модератор · Личное сообщение · #26 |
|
Создано: 17 августа 2009 07:35 · Личное сообщение · #27 |
|
Создано: 17 августа 2009 11:04 · Поправил: OKOB · Личное сообщение · #28 to blueboar2 упорно идешь своим путем, тогда хоть вместо того, чтобы выполнять деобфускацию в 8 дублей используй наработки других а в 23 посте в этом же топе попытка замутить дизасм КИСК виртуальной машины. Подход там исследовательский, но можно юзать - только нужно хэндлеры подеобфускатить и поставить их в соответствие с опкодами. Архив из 23 поста не качается поэтому в прицепе 1f83_17.08.2009_CRACKLAB.rU.tgz - rev.rar Из 1го тоже (в редактировании файл не цепляется, поэтому постом ниже) ----- 127.0.0.1, sweet 127.0.0.1 |
|
Создано: 17 августа 2009 11:08 · Личное сообщение · #29 Сырцы деобфускатора из 1го поста в www.woodmann.com/forum/showthread.php?t=12015 5728_17.08.2009_CRACKLAB.rU.tgz - oreans.rar ----- 127.0.0.1, sweet 127.0.0.1 |
|
Создано: 17 августа 2009 11:58 · Поправил: blueboar2 · Личное сообщение · #30 Я читал про этот "деобфускатор". Мне пока удобнее делать вручную. Возможно потом я устану и напишу что-нибудь свое. Возможно я изобретаю велосипед. Но его интересно изобретать . Файл переименовал И потом - я правильно понимаю, что запаковав одну и ту же программу ДВА раза (с одними опциями) мы получим абсолютно идентичные виртуальные машины с одинаковыми же командами, они будут отличаться лишь: - Степенью обфускации (т.к. она зависит от генератора случайных чисел) - Сами опкоды будут другие, так как зависят от ключа (BL). Но после расшифровки будут опять одинаковыми - Может они будут и разными, но только в том случае, если в "виртуальных опкодах" тоже есть динамические опкоды или свой вид обфускации, зависящий от случайных чисел |
. 1 . 2 . 3 . >> |
eXeL@B —› Протекторы —› Исследование защиты Themida |