Сейчас на форуме: (+7 невидимых)

 eXeL@B —› Протекторы —› Armadilo (8.0 видимо)
<< . 1 . 2 .
Посл.ответ Сообщение

Ранг: 488.1 (мудрец), 272thx
Активность: 0.350
Статус: Участник

Создано: 22 ноября 2011 17:04 · Поправил: VodoleY
· Личное сообщение · #1

Добрый день уважаемые. Попалась под руки прога, накрытая этим вот творением. До этого никогда с ним дел не имел. Первое, что сделал, покурил мануалы и попробовал стандартные утили Армагидон вроде чет распаковал, но бред.AI 0.9.5b определил армагу и отчитался о 8,0 версии. Тоже чет попытался с прогой сделать, тоже неудачно. Но общую картину описал как

Compression level: Best/Slowest
* Protection Options *
CopyMem-II & Debug Blocker
Enable Import Table Elimination
Enable Strategic Code Splicing
Enable Nanomite Processing
Enable Random PE Names
Полез во внутрь. Да, Debug Blocker на OpenMutexA таки поймался, при вызове VirtulaProtect просмотрел я как на длл, и секции ставяться новые права доступа (чтение/запись) , обещенных Push xxxx на возврате не наше, но вызовы армовой длл на функи dllEntryPoint и SetFunctionAdress нашлись немного ниже по коду. Вопрос первый. Есть ли мануалы по 8.0 версии (а вдруг, чтоб я никого не тревожил). Вопрос два. Пока проблема в том, что при вызове SetFunctionAdress идет терминейт процесса (работал на хардварных бряка) это меня гдето антидебаг палит или црц? вроде треады не создаюца или я чегото пропускаю.
PS наврал, создания потока я таки пропустил.
Хм. после создания потока, вайтфорсингл обжект терминейтит процесс. Может ктото рассказать побольше об функционале длл армы?

-----
Наша работа во тьме, Мы делаем, что умеем. Мы отдаем, что имеем, Наша работа во тьме....





Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 23 января 2012 22:41
· Личное сообщение · #2

Почему сразу с ядра. Можно и да, с ядра. Но в принципе можно и инжект длл, скажем, с хуком на вех, например, или вообще без исключений, типа зацикливанием через eb fe как Obsidian (вроде, он так) делает.



Ранг: 488.1 (мудрец), 272thx
Активность: 0.350
Статус: Участник

Создано: 23 января 2012 22:55 · Поправил: VodoleY
· Личное сообщение · #3

Archer вопрос немного в сторону. верно ли мое предположение, что страницы можно дампить квантами по 1000h байт. (я на верочку инжектился и перебирал через exception по байту.. долго.. но на верочку).
т.е по твоим словам надо заинжектить дллку, которая в себе будет содержать дебугер? я на такое марально не готов
З.Ы. за ключевое слово IAT elimination данкишон. читаю статьи

-----
Наша работа во тьме, Мы делаем, что умеем. Мы отдаем, что имеем, Наша работа во тьме....





Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 23 января 2012 22:59
· Личное сообщение · #4

Страницы по дефолту размера по 0х1000 байтов, да. Стало быть, оперировать можно сразу с этими байтами как с единым блоком. Смотря что пишешь/делаешь и вообще хочешь сделать. Я предложил вариант, делать так или нет-тебе виднее. Как вариант именно для дампа-можешь eXtreme dumper плаг для PETools от рема поглядеть, там на инжекте длл дамп сделан, как раз чтоб вызывать исключение и дампить расшифрованную страницу.



Ранг: 488.1 (мудрец), 272thx
Активность: 0.350
Статус: Участник

Создано: 23 января 2012 23:03 · Поправил: VodoleY
· Личное сообщение · #5

Archer имменно так дампер и делал. по РЕМу. даже стырил его функу сейфмемреад. прада он засранец сачконул, и вместо количество прочитанных байт, возвращает количество НЕДОЧИТАННЫХ но то детали. за подтверждение гипотизы спс. завтра погрызу новый материал.
З,Ы. про зацикливание не уловил сути... какой смысл циклить дебугер или отлаживаемую прогу. ну не будет дебугер отвечать на внешние раздражители. я то его привелегий не получу? дебаг АПИ думаю сойдет с ума. тем более наномиты еще никто не убирал у меня, и прога просто привратица в хлам, если я даже захвачу привилегии.
З.Ы.Ы, разве что.... перехватить вход в процедуру обработки ехепшинов армадиловского дебугера... типа первым получать исключения, а там уже либо ему отдавать либо нет...хм...

-----
Наша работа во тьме, Мы делаем, что умеем. Мы отдаем, что имеем, Наша работа во тьме....





Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 23 января 2012 23:12 · Поправил: Модератор
· Личное сообщение · #6

Почитай, как обсидиан сделан, поймёшь. По-моему, именно он циклы пишет. Суть в том, что он вообще не генерит исключений, вместо бряка ставит цикл сам на себя и регулярно проверяет контекст потока. Если застрял в цикле-типа бряк сработал, так и работает. Ну либо инжект длл и установка веха или аналоги. Либо ядро. Вот тебе 3 варианта отладки на выбор.
Наномиты в основном на место не тычут ввиду сложности покрытия кода и отделения реальных наномитов от ложных. Можешь сделать как арматул (армагеддон или как он там зовётся, это софтина от артим), дампятся таблицы всех наномитов и ставится вех или аналоги, при исключении сам по таблицам дампленым разбираешь и выставляешь нужный контекст. Другими словами, та же логика с наномитами 1 в 1, просто всё происходит в 1 процессе.



Ранг: 488.1 (мудрец), 272thx
Активность: 0.350
Статус: Участник

Создано: 23 января 2012 23:16 · Поправил: VodoleY
· Личное сообщение · #7

Archer вот 1го процесса и хотелось бы добица. ибо этот гимор уже парит. но до наномитов у меня еще борьба с импмортом и реконструкция секций до банальной загрузки образа дампа в память виндой. учусь . полюбому спс.
на работы арматул-ла есть линки? или хотябы его точный ник. я его материала не видел

-----
Наша работа во тьме, Мы делаем, что умеем. Мы отдаем, что имеем, Наша работа во тьме....




Ранг: 101.0 (ветеран), 344thx
Активность: 1.150
Статус: Участник

Создано: 24 января 2012 09:14
· Личное сообщение · #8

VodoleY пишет:
я его материала не видел

Весь материал на дропбоксе, чего тормозишь?

P.S. Для всех остальных интересующихся. Брать N-Rec 1.7, например, с васма http://www.wasm.ru/tools/6/n-rec.zip, а статью dragon'а прямо на нашем сайте: Исследование и распаковка Armadillo 3.10

| Сообщение посчитали полезным: hlmadip

Ранг: 488.1 (мудрец), 272thx
Активность: 0.350
Статус: Участник

Создано: 24 января 2012 19:13 · Поправил: VodoleY
· Личное сообщение · #9

пол дня седня убил на Сисер.. либо я дебил, но когда часть фунок не работает, а часть сыпить синюшными экранами это раздражает. (ноут чистая винда без антивиря и софты, ну кроме жертвы)
З.Ы. обрыл седня доки по импорт елеминейшин. общие принцыпи вроде совпадают. Ток к жертве подлазить крайне тяжко. Детачи уже не катят. Мечтаю об 1ом процессе

-----
Наша работа во тьме, Мы делаем, что умеем. Мы отдаем, что имеем, Наша работа во тьме....





Ранг: 681.5 (! !), 405thx
Активность: 0.420.21
Статус: Участник
ALIEN Hack Team

Создано: 24 января 2012 20:51
· Личное сообщение · #10

VodoleY пишет:
пол дня седня убил на Сисер.. либо я дебил...

Нет, с вами всё хорошо. Попробуйте на Варю ставить. У многих людей он глючит на реальном железе. Да и на Варе не очень стабилен, но всё же получше будет.

Детачи уже не катят
Технически DebugActiveProcessStop выполнит detach, но вот из-за наномитов программа упадёт. Так что вначале надо решить эту проблему.

Попробуйте для борьбы с наномитами действовать так. Дебажте родительский процесс, который отладчик. Когда бряк на WaitForDebugEvent срабатывает, смотрите адрес исключения и ExceptionCode, далее дампим дочернийй, грузим в Иду, и анализируя то, что сделает родитель (при анализе полезно сомтреть на код около наномита) пытаемся понять, как этот конкретный наномит (для начала) работает. Попутно пишем библиотеку, юзающую ВЕХ и работающую также, как и процесс-отладчик. Потом вы либо поймёте, где таблица наномитов и как по ней пройтись, чтоб в длл запихать эмуляцию всех этих наномитов с их последующим восстановлением, либо сможете просто сделать эмуляцию в распакованном варианте, и так и оставить.

-----
Stuck to the plan, always think that we would stand up, never ran.




Ранг: 101.0 (ветеран), 344thx
Активность: 1.150
Статус: Участник

Создано: 24 января 2012 22:28
· Личное сообщение · #11

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

По поводу наномитов могу сказать следующее. Есть два способа их вытащить. Первый - непосредственно изучить как арма их хранит внутри себя (о чем можно почитать у dragon'а), или сделать как в ArmaInliner (он на Visual Basic, но это не должно испугать настоящего реверсера) - пройтись по всем байтам 0xCC и генерить исключения, смотреть как "броненосец" будет изменять контекст потока. Ест-но для Jcc надо играться с флагами. Получаем функцию многих переменных (переменные - флаги процессора). Отбрасываем фиктивные переменные. Потом по анализу того, какие флаги используются определяем группу переходов. По длине перехода (поскольку переход может и не сработать, "броненосец" вынужден хранить длину КОПа - 2, 5 или 6 байт) определяем группу переходов, например, JNZ и JZ, а дальше по тому факту, насколько изменяется EIP в контексте, определяется точный КОП. Повторюсь, что данная операция делается ДЛЯ КАЖДОГО найденного 0xCC в программе. Таким образом, получаем табличку, с которой уже можно работать. И тут три базовых варианта дальнейших действий:

1. Lame way (Armagedon style). Пихать в программу эту таблицу. Дальше либо опять отладочный процесс, который следит за прерываниями, либо SEH/VEH/сплайс KiUserExceptionDispatcher (для любителей драйверов можно еще использовать сплайс KiDispatchException). Обычно делают не как в арме - эмуляцию переходов через изменение контекста, а переводят EIP обратно на инструкцию и "чинят" КОП по таблице. Можно также щелкать по опциям исследуемой программы, выполнять сохранение/загрузку прикладных форматов и прочее. Ну т.е. использовать ВСЕ возможности и альтернативы использования программы, после чего сделать дамп и сравнить его с оригиналом. Так можно восстановить 90% наномитов, а остальные "не долго" починить руками. А можно ничего не чинить и использовать со сплайсом.
2. Good way (dragon/infern0 style). Пройтись по тулзе "грязным" анализатором, вбив ему таблицы виртуальных функций и таблицы switch-переходов. Много ручной работы, нет гарантии сделать файл нерабочим и тем более нет гарантии полного восстановления.
3. Nice way (dragon/progopis dreams). Полный анализ графа. Если на пути прохода по графу встретили 0xCC чиним его по таблице. Не обязательно писать свой анализатор для этого, можно сделать плагин для IDA или OllyDbg. Но int'а уже по 10 раз описывал в своих мануалах, какие говно анализаторы в этих продуктах, приводил доводы и методы (не реализованные программно) для улучшения их функций. А вот Archer и Mikae упорно не хотят чинить Mediana, чтобы он (int) мог свой анализатор дописать без тупых костылей, а то в Mediana до сих пор инструкция TEST является арифметической, например.

P.S. BoRoV упорно не хочет обновлять релизенг письки сиськи в разделе Скачать.



Ранг: 488.1 (мудрец), 272thx
Активность: 0.350
Статус: Участник

Создано: 24 января 2012 22:37
· Личное сообщение · #12

Вобщем на моем этапе познания армы ща требуеца нормальная загрузка дампа в память. для этого надо реконструкция секций, импорта и ресурсов. с наноми я думаю справлюсь. мнеб от 2го процесса отвязаца, чтоб дебажить нормально. И думаю будет щасте

-----
Наша работа во тьме, Мы делаем, что умеем. Мы отдаем, что имеем, Наша работа во тьме....




Ранг: 617.3 (!), 677thx
Активность: 0.540
Статус: Участник

Создано: 24 января 2012 23:45
· Личное сообщение · #13

Ищешь на форуме tuts4you скрипты от Fungus'a, там же ищешь ArmInline от Admiral 2006
1. Детачишь CopyMem-II скриптом
2. Аттачишься олькой ко второму процессу, восстанавливаешь oep
3. В отдельной ольке детачишь Debug Blocker, патчишь magic jmp доходишь до OEP и копируешь таблицу импорта в первый отдетаченный процесс.
4. ArmInlin'om восстанавливаешь Import Table Elimination, Strategic Code Splicing
5. Дампишь, восстанавливаешь импорт.
6. Из ArmaG3ddon_v1.9 берешь Armadillo Nanomites Fixer v1.2 и восстанавливаешь наномиты.
Всё прога распакована.



Ранг: 101.0 (ветеран), 344thx
Активность: 1.150
Статус: Участник

Создано: 25 января 2012 11:27
· Личное сообщение · #14

Vovan666
Боюсь, что речь идет о создании принципиально нового инструмента, который должен объединить в себе весь накопленный опыт взлома этой защиты.

CopyMem-II и так уже обошли, читай тред. А для API я сам буду писать инструмент для восстановления.



Ранг: 488.1 (мудрец), 272thx
Активность: 0.350
Статус: Участник

Создано: 25 января 2012 12:10
· Личное сообщение · #15

Vovan666Vovan666 пишет:
2. Аттачишься олькой ко второму процессу, восстанавливаешь oep


а вот туто проблемака детатчеры старые у мну фиг работают. олька не может приатачица. если почитаеш высше мы с Арчи эту тему обговаривали

-----
Наша работа во тьме, Мы делаем, что умеем. Мы отдаем, что имеем, Наша работа во тьме....




Ранг: 617.3 (!), 677thx
Активность: 0.540
Статус: Участник

Создано: 25 января 2012 12:55
· Личное сообщение · #16

х.з. на днях распаковывал саму арму 8.60 ни каких проблем не было, ни с детачем ни с наномитами.




Ранг: 57.3 (постоянный), 67thx
Активность: 0.060
Статус: Участник

Создано: 25 января 2012 15:45
· Личное сообщение · #17

Vovan666, а видяху можешь снять?



Ранг: 488.1 (мудрец), 272thx
Активность: 0.350
Статус: Участник

Создано: 25 января 2012 15:52
· Личное сообщение · #18

так.. с пинками Vovan666 дело вроде пошло дальше. Vovan666 благодарствую.

-----
Наша работа во тьме, Мы делаем, что умеем. Мы отдаем, что имеем, Наша работа во тьме....




Ранг: 315.1 (мудрец), 631thx
Активность: 0.30.33
Статус: Модератор
CrackLab

Создано: 25 января 2012 15:58
· Личное сообщение · #19

-Sanchez-
видях по арме больше чем видях по упх сделано



Ранг: 488.1 (мудрец), 272thx
Активность: 0.350
Статус: Участник

Создано: 03 февраля 2012 21:26 · Поправил: VodoleY
· Личное сообщение · #20

Уважаемые, а никто импорт расшифровывать не пробывал, с целью достать имена фунок и либ. Я впринципи сделал. Но подозреваю что это частный случай. Еще какоето время уйдет на получение базовой константы. Вопрос собственно в числе, которое всему начало. 32бита начальное, которое стартует всю остальную псевдо рандом последовательность, которая являеца ключами к расшифровке. Оно постоянно или для каждой версии/екзешника разное?
З.Ы. оговорюсь. расшифровка не с самого экзешника а из дампа памяти, на этапе формирования импорта. кто в теме тот поймет
З.Ы. формирование базовой константы тоже поднял. Вопрос тот же, насколько это постоянный эффект
З.Ы.Ы.хм... а тут походу в арме.. образовалась дырочка. и брут не такой уж долгий.

-----
Наша работа во тьме, Мы делаем, что умеем. Мы отдаем, что имеем, Наша работа во тьме....




Ранг: 30.8 (посетитель), 1thx
Активность: 0.010
Статус: Участник

Создано: 04 февраля 2012 09:18
· Личное сообщение · #21

Поздравляю, нашел дырку, там где и так распаковывается.
Стань на GetProcAddress и увидишь.
Туторы по восстановлению импорта надо читать, а не изобретать велосипед.
А число меняется при каждой упаковке.
Скачай себе протектор и пакуй блокнот.
Сразу многие вопросы отпадут.



Ранг: 488.1 (мудрец), 272thx
Активность: 0.350
Статус: Участник

Создано: 04 февраля 2012 11:44 · Поправил: VodoleY
· Личное сообщение · #22

Iona за поздравления спасибо. Касательно GetProcAddress он же емулирован польностью Армой, но не в этом суть. А в вилосипедах, есть очень полезный момент, это опыт.Через руки доходит гораздо быстрее, чем пытаца перерыть тонны туторов, в которых в основном жуеца одно и тоже, десятка 2 прочитал/просмотрел, пару интересных на мой взляд добавил в вики и тебя об этом прошу (про тот же импорт было бы уже интерсно почитать, когда с основным механизмом разобрался). Ну и спасибо за подтверждения моих догадок про это базовое число.
PS. Iona кем бы ты ты был/была спасибо. порыл еще. вся картина на руках. остался последний вопрос по импорту. Он в полу раскриптованном виде появляеца лиж на мнгновенье, эта работа копимема? т.е. эта такаяже страница 1000Н длиной, которая по томуже алго расшифровываеца? если так то можно сделать статик декрипт импорта

-----
Наша работа во тьме, Мы делаем, что умеем. Мы отдаем, что имеем, Наша работа во тьме....




Ранг: 18.9 (новичок), 15thx
Активность: 0.010
Статус: Участник

Создано: 06 февраля 2012 00:22
· Личное сообщение · #23

Кроме мультика с tuts4you Armadillo 8.00 (Standard Protection + UPX)
нашел ещё один, может вам пригодится
Armadillo v8.0 (Debug Blocker+Import Elimination+Code Splicing+Nanomites+Extras) by perceptron



Ранг: 488.1 (мудрец), 272thx
Активность: 0.350
Статус: Участник

Создано: 06 февраля 2012 10:20
· Личное сообщение · #24

L0ST пишет:
нашел ещё один, может вам пригодится
Armadillo v8.0 (Debug Blocker+Import Elimination+Code Splicing+Nanomites+Extras) by perceptron

2 раза перекачивал... чет битый. Пероложить можно? (пробежался по инету, ссылки дохлые)

-----
Наша работа во тьме, Мы делаем, что умеем. Мы отдаем, что имеем, Наша работа во тьме....





Ранг: 275.9 (наставник), 340thx
Активность: 0.22=0.22
Статус: Участник
RBC

Создано: 06 февраля 2012 10:57
· Личное сообщение · #25

VodoleY пишет:
2 раза перекачивал... чет битый. Пероложить можно?

http://rghost.ru/36366799

-----
Array[Login..Logout] of Life


| Сообщение посчитали полезным: VodoleY


Ранг: 529.0 (!), 110thx
Активность: 0.290.04
Статус: Участник
5KRT

Создано: 07 февраля 2012 19:22 · Поправил: daFix
· Личное сообщение · #26

Подскажите, кто знает... Борюсь с CopyMem II, отлаживаю родитель, нашёл фунуцию расшифровки, нарисовал цикл вокруг её,
подаю на вход первую страницу и увеличиваю в цикле, пока не расшифрованы все страницы. Только первая половина секции
почему-то забита мусором, вторая распакована нормально. Вот её код:

Code:
  1. <008F0546>
  2.  
  3.         *JMP SHORT @L00000002
  4.         *NOP
  5.         *NOP
  6.         *NOP
  7.         *NOP
  8.  
  9. @L00000001:
  10.         *ADD DWORD PTR DS:[EAX],EAX   // 1
  11.         *ADD BYTE PTR DS:[EAX],AL
  12.  
  13. @L00000002:
  14.         *NOP
  15.         *NOP
  16.  
  17. @L00000003:
  18.         *MOV ECX,DWORD PTR DS:[@L00000001]    //Заносим в ECX номер страницы 
  19.         *MOV DWORD PTR SS:[EBP-88],ECX
  20.          PUSH 0
  21.          MOV ESI,DWORD PTR SS:[EBP-88]
  22.          SHL ESI,4
  23.          MOV EAX,DWORD PTR SS:[EBP-88]
  24.          AND EAX,80000007
  25.          JNS SHORT @L00000004
  26.          DEC EAX
  27.          OR EAX,FFFFFFF8
  28.          INC EAX
  29.  
  30. @L00000004:
  31.          MOVZX ECX,BYTE PTR DS:[EAX+9AB7F8]
  32.          MOV EDX,DWORD PTR SS:[EBP-88]
  33.          AND EDX,80000007
  34.          JNS SHORT @L00000005
  35.          DEC EDX
  36.          OR EDX,FFFFFFF8
  37.          INC EDX
  38.  
  39. @L00000005:
  40.          MOVZX EAX,BYTE PTR DS:[EDX+9AB7F9]
  41.          MOV EDX,DWORD PTR DS:[9BF818]
  42.          MOV EDI,DWORD PTR DS:[9BF818]
  43.          MOV EBX,DWORD PTR DS:[EDX+ECX*4]
  44.          XOR EBX,DWORD PTR DS:[EDI+EAX*4]
  45.          MOV EAX,DWORD PTR SS:[EBP-88]
  46.          AND EAX,80000007
  47.          JNS SHORT @L00000006
  48.          DEC EAX
  49.          OR EAX,FFFFFFF8
  50.          INC EAX
  51.  
  52. @L00000006:
  53.          MOVZX ECX,BYTE PTR DS:[EAX+9AB7FA]
  54.          MOV EDX,DWORD PTR DS:[9BF818]
  55.          XOR EBX,DWORD PTR DS:[EDX+ECX*4]
  56.          MOV EAX,DWORD PTR SS:[EBP-88]
  57.          CDQ
  58.          MOV ECX,1C
  59.          IDIV ECX
  60.          MOV ECX,EDX
  61.          SHR EBX,CL
  62.          AND EBX,0F
  63.          ADD ESI,EBX
  64.          MOV EDX,DWORD PTR DS:[9BF7D8]
  65.          LEA EAX,DWORD PTR DS:[EDX+ESI*4]
  66.          PUSH EAX
  67.          MOV ECX,DWORD PTR SS:[EBP-88]
  68.          PUSH ECX
  69.          CALL 008F19E0 ; DECRYPT
  70.          ADD ESP,0C
  71.         *INC DWORD PTR DS:[@L00000001]       //Увеличиваем номер страницы
  72.         *JMP @L00000003


Звёздочками пометил то что написано мной. Или это не правильный способ? Пересмотрел много туторов, но ни где не
нашёл ручного решения проблемы

-----
Research For Food





Ранг: 500.6 (!), 7thx
Активность: 0.260
Статус: Участник

Создано: 08 февраля 2012 15:03
· Личное сообщение · #27

VodoleY пишет:
2 раза перекачивал... чет битый. Пероложить можно?


7 зип обновить наверно нужно, такаяже фигня.


<< . 1 . 2 .
 eXeL@B —› Протекторы —› Armadilo (8.0 видимо)
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати