Сейчас на форуме: (+7 невидимых) |
![]() |
eXeL@B —› Протекторы —› Armadilo (8.0 видимо) |
<< . 1 . 2 . |
Посл.ответ | Сообщение |
|
Создано: 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 наврал, создания потока я таки пропустил. Хм. после создания потока, вайтфорсингл обжект терминейтит процесс. Может ктото рассказать побольше об функционале длл армы? ----- Наша работа во тьме, Мы делаем, что умеем. Мы отдаем, что имеем, Наша работа во тьме.... ![]() |
|
Создано: 23 января 2012 22:41 · Личное сообщение · #2 |
|
Создано: 23 января 2012 22:55 · Поправил: VodoleY · Личное сообщение · #3 Archer вопрос немного в сторону. верно ли мое предположение, что страницы можно дампить квантами по 1000h байт. (я на верочку инжектился и перебирал через exception по байту.. долго.. но на верочку). т.е по твоим словам надо заинжектить дллку, которая в себе будет содержать дебугер? я на такое марально не готов З.Ы. за ключевое слово IAT elimination данкишон. читаю статьи ----- Наша работа во тьме, Мы делаем, что умеем. Мы отдаем, что имеем, Наша работа во тьме.... ![]() |
|
Создано: 23 января 2012 22:59 · Личное сообщение · #4 Страницы по дефолту размера по 0х1000 байтов, да. Стало быть, оперировать можно сразу с этими байтами как с единым блоком. Смотря что пишешь/делаешь и вообще хочешь сделать. Я предложил вариант, делать так или нет-тебе виднее. Как вариант именно для дампа-можешь eXtreme dumper плаг для PETools от рема поглядеть, там на инжекте длл дамп сделан, как раз чтоб вызывать исключение и дампить расшифрованную страницу. ![]() |
|
Создано: 23 января 2012 23:03 · Поправил: VodoleY · Личное сообщение · #5 Archer имменно так дампер и делал. по РЕМу. даже стырил его функу сейфмемреад. прада он засранец сачконул, и вместо количество прочитанных байт, возвращает количество НЕДОЧИТАННЫХ ![]() З,Ы. про зацикливание не уловил сути... какой смысл циклить дебугер или отлаживаемую прогу. ну не будет дебугер отвечать на внешние раздражители. я то его привелегий не получу? дебаг АПИ думаю сойдет с ума. тем более наномиты еще никто не убирал у меня, и прога просто привратица в хлам, если я даже захвачу привилегии. З.Ы.Ы, разве что.... перехватить вход в процедуру обработки ехепшинов армадиловского дебугера... типа первым получать исключения, а там уже либо ему отдавать либо нет...хм... ----- Наша работа во тьме, Мы делаем, что умеем. Мы отдаем, что имеем, Наша работа во тьме.... ![]() |
|
Создано: 23 января 2012 23:12 · Поправил: Модератор · Личное сообщение · #6 Почитай, как обсидиан сделан, поймёшь. По-моему, именно он циклы пишет. Суть в том, что он вообще не генерит исключений, вместо бряка ставит цикл сам на себя и регулярно проверяет контекст потока. Если застрял в цикле-типа бряк сработал, так и работает. Ну либо инжект длл и установка веха или аналоги. Либо ядро. Вот тебе 3 варианта отладки на выбор. Наномиты в основном на место не тычут ввиду сложности покрытия кода и отделения реальных наномитов от ложных. Можешь сделать как арматул (армагеддон или как он там зовётся, это софтина от артим), дампятся таблицы всех наномитов и ставится вех или аналоги, при исключении сам по таблицам дампленым разбираешь и выставляешь нужный контекст. Другими словами, та же логика с наномитами 1 в 1, просто всё происходит в 1 процессе. ![]() |
|
Создано: 23 января 2012 23:16 · Поправил: VodoleY · Личное сообщение · #7 Archer вот 1го процесса и хотелось бы добица. ибо этот гимор уже парит. но до наномитов у меня еще борьба с импмортом и реконструкция секций до банальной загрузки образа дампа в память виндой. учусь ![]() на работы арматул-ла есть линки? или хотябы его точный ник. я его материала не видел ----- Наша работа во тьме, Мы делаем, что умеем. Мы отдаем, что имеем, Наша работа во тьме.... ![]() |
|
Создано: 24 января 2012 09:14 · Личное сообщение · #8 VodoleY пишет: я его материала не видел Весь материал на дропбоксе, чего тормозишь? P.S. Для всех остальных интересующихся. Брать N-Rec 1.7, например, с васма http://www.wasm.ru/tools/6/n-rec.zip, а статью dragon'а прямо на нашем сайте: ![]() |
|
Создано: 24 января 2012 19:13 · Поправил: VodoleY · Личное сообщение · #9 пол дня седня убил на Сисер.. либо я дебил, но когда часть фунок не работает, а часть сыпить синюшными экранами это раздражает. (ноут чистая винда без антивиря и софты, ну кроме жертвы) З.Ы. обрыл седня доки по импорт елеминейшин. общие принцыпи вроде совпадают. Ток к жертве подлазить крайне тяжко. Детачи уже не катят. Мечтаю об 1ом процессе ![]() ----- Наша работа во тьме, Мы делаем, что умеем. Мы отдаем, что имеем, Наша работа во тьме.... ![]() |
|
Создано: 24 января 2012 20:51 · Личное сообщение · #10 VodoleY пишет: пол дня седня убил на Сисер.. либо я дебил... Нет, с вами всё хорошо. Попробуйте на Варю ставить. У многих людей он глючит на реальном железе. Да и на Варе не очень стабилен, но всё же получше будет. Детачи уже не катят Технически DebugActiveProcessStop выполнит detach, но вот из-за наномитов программа упадёт. Так что вначале надо решить эту проблему. Попробуйте для борьбы с наномитами действовать так. Дебажте родительский процесс, который отладчик. Когда бряк на WaitForDebugEvent срабатывает, смотрите адрес исключения и ExceptionCode, далее дампим дочернийй, грузим в Иду, и анализируя то, что сделает родитель (при анализе полезно сомтреть на код около наномита) пытаемся понять, как этот конкретный наномит (для начала) работает. Попутно пишем библиотеку, юзающую ВЕХ и работающую также, как и процесс-отладчик. Потом вы либо поймёте, где таблица наномитов и как по ней пройтись, чтоб в длл запихать эмуляцию всех этих наномитов с их последующим восстановлением, либо сможете просто сделать эмуляцию в распакованном варианте, и так и оставить. ----- Stuck to the plan, always think that we would stand up, never ran. ![]() |
|
Создано: 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 упорно не хочет обновлять релизенг ![]() |
|
Создано: 24 января 2012 22:37 · Личное сообщение · #12 Вобщем на моем этапе познания армы ща требуеца нормальная загрузка дампа в память. для этого надо реконструкция секций, импорта и ресурсов. с наноми я думаю справлюсь. мнеб от 2го процесса отвязаца, чтоб дебажить нормально. И думаю будет щасте ----- Наша работа во тьме, Мы делаем, что умеем. Мы отдаем, что имеем, Наша работа во тьме.... ![]() |
|
Создано: 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 и восстанавливаешь наномиты. Всё прога распакована. ![]() |
|
Создано: 25 января 2012 11:27 · Личное сообщение · #14 |
|
Создано: 25 января 2012 12:10 · Личное сообщение · #15 Vovan666Vovan666 пишет: 2. Аттачишься олькой ко второму процессу, восстанавливаешь oep а вот туто проблемака ![]() ----- Наша работа во тьме, Мы делаем, что умеем. Мы отдаем, что имеем, Наша работа во тьме.... ![]() |
|
Создано: 25 января 2012 12:55 · Личное сообщение · #16 |
|
Создано: 25 января 2012 15:45 · Личное сообщение · #17 |
|
Создано: 25 января 2012 15:52 · Личное сообщение · #18 |
|
Создано: 25 января 2012 15:58 · Личное сообщение · #19 |
|
Создано: 03 февраля 2012 21:26 · Поправил: VodoleY · Личное сообщение · #20 Уважаемые, а никто импорт расшифровывать не пробывал, с целью достать имена фунок и либ. Я впринципи сделал. Но подозреваю что это частный случай. Еще какоето время уйдет на получение базовой константы. Вопрос собственно в числе, которое всему начало. 32бита начальное, которое стартует всю остальную псевдо рандом последовательность, которая являеца ключами к расшифровке. Оно постоянно или для каждой версии/екзешника разное? З.Ы. оговорюсь. расшифровка не с самого экзешника а из дампа памяти, на этапе формирования импорта. кто в теме тот поймет З.Ы. формирование базовой константы тоже поднял. Вопрос тот же, насколько это постоянный эффект З.Ы.Ы.хм... а тут походу в арме.. образовалась дырочка. и брут не такой уж долгий. ----- Наша работа во тьме, Мы делаем, что умеем. Мы отдаем, что имеем, Наша работа во тьме.... ![]() |
|
Создано: 04 февраля 2012 09:18 · Личное сообщение · #21 |
|
Создано: 04 февраля 2012 11:44 · Поправил: VodoleY · Личное сообщение · #22 Iona за поздравления спасибо. Касательно GetProcAddress он же емулирован польностью Армой, но не в этом суть. А в вилосипедах, есть очень полезный момент, это опыт.Через руки доходит гораздо быстрее, чем пытаца перерыть тонны туторов, в которых в основном жуеца одно и тоже, десятка 2 прочитал/просмотрел, пару интересных на мой взляд добавил в вики и тебя об этом прошу (про тот же импорт было бы уже интерсно почитать, когда с основным механизмом разобрался). Ну и спасибо за подтверждения моих догадок про это базовое число. PS. Iona кем бы ты ты был/была спасибо. порыл еще. вся картина на руках. остался последний вопрос по импорту. Он в полу раскриптованном виде появляеца лиж на мнгновенье, эта работа копимема? т.е. эта такаяже страница 1000Н длиной, которая по томуже алго расшифровываеца? если так то можно сделать статик декрипт импорта ----- Наша работа во тьме, Мы делаем, что умеем. Мы отдаем, что имеем, Наша работа во тьме.... ![]() |
|
Создано: 06 февраля 2012 00:22 · Личное сообщение · #23 Кроме мультика с tuts4you нашел ещё один, может вам пригодится ![]() |
|
Создано: 06 февраля 2012 10:20 · Личное сообщение · #24 L0ST пишет: нашел ещё один, может вам пригодится Armadillo v8.0 (Debug Blocker+Import Elimination+Code Splicing+Nanomites+Extras) by perceptron 2 раза перекачивал... чет битый. Пероложить можно? (пробежался по инету, ссылки дохлые) ----- Наша работа во тьме, Мы делаем, что умеем. Мы отдаем, что имеем, Наша работа во тьме.... ![]() |
|
Создано: 06 февраля 2012 10:57 · Личное сообщение · #25 VodoleY пишет: 2 раза перекачивал... чет битый. Пероложить можно? http://rghost.ru/36366799 ----- Array[Login..Logout] of Life ![]() |
|
Создано: 07 февраля 2012 19:22 · Поправил: daFix · Личное сообщение · #26 Подскажите, кто знает... Борюсь с CopyMem II, отлаживаю родитель, нашёл фунуцию расшифровки, нарисовал цикл вокруг её, подаю на вход первую страницу и увеличиваю в цикле, пока не расшифрованы все страницы. Только первая половина секции почему-то забита мусором, вторая распакована нормально. Вот её код: Code:
Звёздочками пометил то что написано мной. Или это не правильный способ? Пересмотрел много туторов, но ни где не нашёл ручного решения проблемы ----- Research For Food ![]() |
|
Создано: 08 февраля 2012 15:03 · Личное сообщение · #27 |
<< . 1 . 2 . |
![]() |
eXeL@B —› Протекторы —› Armadilo (8.0 видимо) |