![]() |
eXeL@B —› Основной форум —› Отладка загрузочного приложения (RollBack RX) |
Посл.ответ | Сообщение |
|
Создано: 01 августа 2015 22:56 · Поправил: Kindly · Личное сообщение · #1 Интересует, отлаживал ли кто подобный софт, который грузится до системы? Какие инструменты нужно юзать, чтобы отловить момент загрузки внешнего приложения не из под винды? Сам софт: Сломать битхаком оказалось не большой проблемой, но единственным решением. Пришлось патчить инсталлятор, чтобы он прописывал нужный байт 01 = registered при установке сабжа в загрузочную область диска. Из под винды софт пропатчить нельзя, визуально зарегистрировать можно, но проверка в предзагрузочном меню не будет проходить и будут на выхлопе нерабочие и неполные снимки. Привязка активационного номера осуществляется по номеру диска через DeviceIoControl, также сабж имеет онлайн чек, при котором софт сбросит байт регистрации в загрузочной области диска. Чек нужно предварительно запатчить в делках x86-x64 ShdApi.dll, достаточно запатчить внутри файла имя сервака w.w.w...e.a.z.s.o.l.u.t.i.o.n...c.o.m. к слову, софт обходит лок в хосте и стучит другим методом. Алгоритм проверки зашит в загрузчике проги, сама активация записывает введенный номер, и только в загрузчике его проверяет, выдавая сообщение о неверном номере перед загрузкой винды. Стало быть, чтобы софт закейгенить, нужно реверснуть алго именно там. Да, тут нет разбора других участков, но суть топика заключается в названии. Не нужно ломать софт, подсказать бы, чем и как можно это отладить. Может ли этот софт юзать дрова свои для этого или другие файлы из под винды, которая не грузилась? ----- Array[Login..Logout] of Life ![]() |
|
Создано: 01 августа 2015 23:05 · Личное сообщение · #2 |
|
Создано: 02 августа 2015 00:09 · Поправил: Kindly · Личное сообщение · #3 Принцип понятен, только у меня вечная беда настраивать отладчики и плаги в IDA ![]() Но суть теперь уловил, такой в MBR код: Code:
где call near ptr 0C4840012h - теоретически вход в сектор с процедурой проверки, либо кодом загрузчика. может и не именно это, но насколько вкурил, то сам mbr имеет небольшой размер, но позволяет размещать указатели для выполнения кода из других областей диска. поправьте, где не прав. ----- Array[Login..Logout] of Life ![]() |
|
Создано: 02 августа 2015 01:02 · Личное сообщение · #4 разбирать или трейсить бут надо, что бы сказать что это за процедура но джампать по секторам оно не умеет это факт, могло списать какие то сектора в память по какому то адресу, и там уже прыгать ![]() |
|
Создано: 02 августа 2015 08:29 · Личное сообщение · #5 Kindly пишет: где call near ptr 0C4840012h - теоретически вход в сектор с процедурой проверки, либо кодом загрузчика. может и не именно это, но насколько вкурил, то сам mbr имеет небольшой размер, но позволяет размещать указатели для выполнения кода из других областей диска. поправьте, где не прав. в целом прав. МБР имеет достаточно четкую структуру, иначе его биос пошлет лесом. Вангую что этот калл.. это чтение загручкика с винта(1..хх) секторов. + перевод проги в 32ух разрядный режим(с этим кстати особенно аккуратно, ибо ида не понимает какие участки в какой разрядности) рекомендую посмотреть исходники GRUB (линуксовый мультибутер) там и МБР и БУТ и первичный загрузчик оси Добавлено спустя 4 минуты reversecode пишет: bochs+ida vmware+windbg qemu(gdb)+ida пробовал бош, пробовал куему, оба вобщемто работают. бош можно и без иды. в обоих случаях наблюдал отслаивания иды от процесса.. т.е. она то по шагам ходит.. и дебажит, а вот позиционирование отлаживаемого когда сбивалось.. руками в консоли ставил IP на место.. частенько ----- Наша работа во тьме, Мы делаем, что умеем. Мы отдаем, что имеем, Наша работа во тьме.... ![]() |
|
Создано: 02 августа 2015 09:22 · Поправил: Kindly · Личное сообщение · #6 reversecode пишет: разбирать или трейсить бут надо нужно насколько понимаю дампить свой загрузчик и прикручивать его к бош для этого - опять темный лес ![]() что если немного пованговать ![]() содержится некий код в модифицированном загрузчике. из него ли может грузиться консоль управления проги из другой области диска? ![]() Добавлено спустя 8 минут у проги есть такое файло при установке (если кто смотрел): shdmgr.ef_ Shield.efi shdloader.efi shield.dat судя по всему это интегрируемая предзагрузочная консоль. стало быть на эти файлы после инсталляции их в область диска идет управление из загрузчика mbr? гм, а прога не юзает часом secured efi загрузчик? там не mbr, а gpt. спецы подскажите. ----- Array[Login..Logout] of Life ![]() |
|
Создано: 02 августа 2015 10:15 · Личное сообщение · #7 |
|
Создано: 02 августа 2015 11:22 · Поправил: Kindly · Личное сообщение · #8 Вобщем все понятно, загрузчик это dll shdmgr.ef_ для каждой из разрядностей. В нем нашел код алго, запатчил пока что в ольке ради убеждения - получил fully registered в итоге после инсталляции. Алго с виду примитивный, обычная математика начальных классов, md5 и сравнение с фиксированными символами, но вот добраться туда из под установленой проги, чтобы отреверсить со всеми значениями не представляю возможным. Загрузочная система EFI таки. ----- Array[Login..Logout] of Life ![]() |
|
Создано: 02 августа 2015 11:23 · Личное сообщение · #9 |
|
Создано: 02 августа 2015 11:49 · Поправил: Kindly · Личное сообщение · #10 reversecode пишет: ну так распакуй efi на длл и найди нужный модуль о какой распаковке речь? чтобы активационный серийник отреверсить нужно зайти в алго на момент выполнения до загрузки винды. ты бы подсказал как именно это сделать, получить управление. ![]() вот кабы в VMWare был встроенный отладчик загрузки с пошаговой трассировкой машинного кода - это был бы идеальный вариант ![]() ----- Array[Login..Logout] of Life ![]() |
|
Создано: 02 августа 2015 11:54 · Личное сообщение · #11 efi имеет свою структуру насколько я помню там может быть упаковано много модулей в ней, которые сами по себе являются обычными dll есть распаковщики этих модулей в биосах efi есть момент поиска и запуска efi с диска, вот скорее всего это и происходит как начать отлаживать всю систему начиная с биоса, я дал ссылку видео или ручками разбирать всю efi которую они кладут на диск, большая она кстати ? Добавлено спустя 4 минуты http://blog.cr4.sh/2012/07/vmware-gdb-stub-ida.html VMware + GDB stub + IDA Многим известно, что в системе виртуализации VMware Worstation с самых незапамятных времен существует стандартный GDB интерфейс для удалённой отладки, однако, мало кто пользуется ним в повседневной работе в силу того, что отладку в "голом" GDB тяжело назвать удобной. Однако, в роли вполне вменяемого клиента для отладочного интерфейса GDB может выступать IDA Pro, в которой соответствующий функционал был добавлен ещё в 5-й ветке, но работать должным образом и без багов начал только в 6.0. ![]() |
|
Создано: 02 августа 2015 16:31 · Поправил: Kindly · Личное сообщение · #12 |
|
Создано: 02 августа 2015 16:46 · Личное сообщение · #13 для начала нужно определить там все же efi капсула ? или посто какой то файл который они переименовали в efi если капсула, то нужен емулятор который умеет и имеет efi биос и тут бош отпадает как мне кажется, нету под бош ефи биосов, я не видел во всяком случае можно разве что поигратся, найдя гдя где то ефи биос и подсунув его в бош либо искать другой емулятор который умеет ефи биос, по слухам это может быть qemu вообщем там до проблемы конфигов далеко, да и сами конфиги есть в самом боше и в иде тоже есть заготовка Добавлено спустя 1 минуту Kindly пишет: У тебя для этой проги получилось что, или все это теория и общая практика с гугла? я эту прогу не смотрел, у меня своих таких хватает но бош юзал по всяким разным нуждам и с куему тоже когда то игрался нету стандартных решений и волшебной кнопочки, везде нужно сидеть и разбиратся почти с нуля ![]() |
|
Создано: 02 августа 2015 16:56 · Поправил: Kindly · Личное сообщение · #14 reversecode пишет: для начала нужно определить там все же efi капсула ? анализаторы говорят что EFI Application. что-то ж его вызывает.. сам загрузчик у меня не uefi, по крайней мере на варе. Kqemu сумел воспроизвести загрузчик системы из под винды, сначала ролбэковский, потом чуть xp и повис, оно и понятно и дальше не надо. В ольке смотрел, стартует процесс эмуля с параметрами и толку с этого без дебага. ![]() выходит что по сути, это точно также как и отладка бут-малвари, только в данном случае выполняется целое приложение. покурив гугла, кажись это не из разряда UEFI Bios, а UEFI Shell, позволяющий запускать efi приложения. reversecode пишет: либо искать другой емулятор который умеет ефи биос, по слухам это может быть qemu qemu может и нормальный эмуль, но под него fdbg только нашел под шелл, ну можно условно отлаживать, но не думаю, что реверс алгоритма активации в нем хорошая идея. ну запустишь ты в эмуле само efi приложение и что с того, оно не будет читать данные с должной рабочей области, которой является реальный загрузчик. тут системный нужно читать и разбирать как-то... может есть варианты загрузочных дебаггеров на флешку для отладки загрузчика? ![]() ----- Array[Login..Logout] of Life ![]() |
|
Создано: 02 августа 2015 20:55 · Поправил: Psalmopoeus Pulcher · Личное сообщение · #15 Файл x86\shdmgr.efi. По смещению 0x1015F вижу функу проверки ключей, её можно дебажить в ольке. На стэке первый аргумент - указатель на "ID продукта", второй - указатель на "Код активации", третий - нуль. Чтобы взлетело, по смещению 0x0C280 указатель на ("ID активации" - 0x430), или проконтролировать edx: Code:
Если проверка не фейковая, то вполне себе юзабельно и можно попробовать. ![]() |
|
Создано: 02 августа 2015 21:20 · Личное сообщение · #16 |
|
Создано: 03 августа 2015 20:56 · Поправил: Psalmopoeus Pulcher · Личное сообщение · #17 Как еще, актуально? Я у себя сделал ключ. Ввожу, просит перезагрузить, перезагружаю, до загрузки винды благодарит за регистрацию, загружается винда - опять демо. Wtf? Kindly, ты кроме этой функи патчил что-нибудь? Может я что то упустил из виду. Upd. "ID продукта" походу тоже нужно генерировать новый. Займусь завтра. ![]() |
|
Создано: 03 августа 2015 21:27 · Поправил: Kindly · Личное сообщение · #18 Psalmopoeus Pulcher, я тоже продвигаюсь потихоньку, там не совсем начальные классы, но до проверки с серийником "трансформером" я дошел. Почитай где онлайн чек в первом посте. Только пока что не подсказывай, я уже где то рядом ![]() Upd Psalmopoeus Pulcher пишет: "ID продукта" походу тоже нужно генерировать новый. на раннем этапе его можно не генерить, он проходит Product ID проверку, а в дальнейшем можно. не думаю, что тот серийник влияет на регу, там вроде две основные проверки, одну я уже обошел, там мешаются цифры, типа: 1 рандом 2 рандом 3 рандом 4 рандом - идентификатор сдвига таблички 5 четырнадцатый 6 двадцать первый и т.д. по таблице. генерится хвост для него (деление с остатком, и плюсовка остатков, данные для деления берутся из куска md5 хэша сложеных серийников и кастомной строки), потом нужно прописать последовательность, чтобы при размешаном серийнике проверяемые данные собрались в нужную кучу. далее вторая проверка примерно такая же но в обратном порядке, опять перетасовываются цифры уже другой последовательности и проверяются. Upd2 алго разобрал Upd3 Psalmopoeus Pulcher пишет: "ID продукта" походу тоже нужно генерировать новый. да, полностью закейгенил Activation Code и убедился, что демо номерок не катит. ----- Array[Login..Logout] of Life ![]() |
![]() |
eXeL@B —› Основной форум —› Отладка загрузочного приложения (RollBack RX) |