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

 eXeL@B —› Основной форум —› Отладка загрузочного приложения (RollBack RX)
Посл.ответ Сообщение


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

Создано: 01 августа 2015 22:56 · Поправил: Kindly
· Личное сообщение · #1

Интересует, отлаживал ли кто подобный софт, который грузится до системы?
Какие инструменты нужно юзать, чтобы отловить момент загрузки внешнего приложения не из под винды?

Сам софт:
--> Download<--

Сломать битхаком оказалось не большой проблемой, но единственным решением.
Пришлось патчить инсталлятор, чтобы он прописывал нужный байт 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


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


Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 01 августа 2015 23:05
· Личное сообщение · #2

bochs+ida
vmware+windbg
итд

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


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

Создано: 02 августа 2015 00:09 · Поправил: Kindly
· Личное сообщение · #3

Принцип понятен, только у меня вечная беда настраивать отладчики и плаги в IDA
Но суть теперь уловил, такой в MBR код:
Code:
  1. seg000:00000077                 push    small word ptr [esi+4]
  2. seg000:0000007B                 call    near ptr 0C4840012h
  3. seg000:00000080                 add     al, 3Bh ; ';'
  4. seg000:00000082                 inc     esi
  5. seg000:00000083                 or      [esi+3], dh
  6. seg000:00000086                 mov     al, [esi+8]
  7. seg000:00000089                 mov     [esi-1], al
  8. seg000:0000008C                 cmp     byte ptr [esi], 0Ch

где call near ptr 0C4840012h - теоретически вход в сектор с процедурой проверки, либо кодом загрузчика.
может и не именно это, но насколько вкурил, то сам mbr имеет небольшой размер, но позволяет размещать указатели для выполнения кода из других областей диска.
поправьте, где не прав.

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





Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 02 августа 2015 01:02
· Личное сообщение · #4

--> Link <--
разбирать или трейсить бут надо, что бы сказать что это за процедура
но джампать по секторам оно не умеет это факт, могло списать какие то сектора в память по какому то адресу, и там уже прыгать



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

Создано: 02 августа 2015 08:29
· Личное сообщение · #5

Kindly пишет:
где call near ptr 0C4840012h - теоретически вход в сектор с процедурой проверки, либо кодом загрузчика.
может и не именно это, но насколько вкурил, то сам mbr имеет небольшой размер, но позволяет размещать указатели для выполнения кода из других областей диска.
поправьте, где не прав.

в целом прав. МБР имеет достаточно четкую структуру, иначе его биос пошлет лесом. Вангую что этот калл.. это чтение загручкика с винта(1..хх) секторов. + перевод проги в 32ух разрядный режим(с этим кстати особенно аккуратно, ибо ида не понимает какие участки в какой разрядности)
рекомендую посмотреть исходники GRUB (линуксовый мультибутер) там и МБР и БУТ и первичный загрузчик оси

Добавлено спустя 4 минуты
reversecode пишет:
bochs+ida
vmware+windbg

qemu(gdb)+ida
пробовал бош, пробовал куему, оба вобщемто работают. бош можно и без иды. в обоих случаях наблюдал отслаивания иды от процесса.. т.е. она то по шагам ходит.. и дебажит, а вот позиционирование отлаживаемого когда сбивалось.. руками в консоли ставил IP на место.. частенько

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





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

Создано: 02 августа 2015 09:22 · Поправил: Kindly
· Личное сообщение · #6

reversecode пишет:
разбирать или трейсить бут надо

нужно насколько понимаю дампить свой загрузчик и прикручивать его к бош для этого - опять темный лес

что если немного пованговать , вот два загрузчика, оригинальный и модифицированный софтом.
содержится некий код в модифицированном загрузчике. из него ли может грузиться консоль управления проги из другой области диска?

484d_02.08.2015_EXELAB.rU.tgz - ldrs.zip

Добавлено спустя 8 минут
у проги есть такое файло при установке (если кто смотрел):

shdmgr.ef_
Shield.efi
shdloader.efi
shield.dat

судя по всему это интегрируемая предзагрузочная консоль. стало быть на эти файлы после инсталляции их в область диска идет управление из загрузчика mbr?

гм, а прога не юзает часом secured efi загрузчик? там не mbr, а gpt. спецы подскажите.

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





Ранг: 568.2 (!), 464thx
Активность: 0.550.57
Статус: Участник
оптимист

Создано: 02 августа 2015 10:15
· Личное сообщение · #7

--> Link <--

-----
Чтобы правильно задать вопрос, нужно знать большую часть ответа. Р.Шекли.





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

Создано: 02 августа 2015 11:22 · Поправил: Kindly
· Личное сообщение · #8

Вобщем все понятно, загрузчик это dll
shdmgr.ef_
для каждой из разрядностей.

В нем нашел код алго, запатчил пока что в ольке ради убеждения - получил fully registered в итоге после инсталляции. Алго с виду примитивный, обычная математика начальных классов, md5 и сравнение с фиксированными символами, но вот добраться туда из под установленой проги, чтобы отреверсить со всеми значениями не представляю возможным. Загрузочная система EFI таки.

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





Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 02 августа 2015 11:23
· Личное сообщение · #9

ну так распакуй efi на длл и найди нужный модуль
народ биосы патчит ..




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

Создано: 02 августа 2015 11:49 · Поправил: Kindly
· Личное сообщение · #10

reversecode пишет:
ну так распакуй efi на длл и найди нужный модуль

о какой распаковке речь?

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

вот кабы в VMWare был встроенный отладчик загрузки с пошаговой трассировкой машинного кода - это был бы идеальный вариант

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





Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 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.





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

Создано: 02 августа 2015 16:31 · Поправил: Kindly
· Личное сообщение · #12

reversecode, ты давал линк на ютуб, где в иде уже загружена заготовка, которая загружает mbr текущей системы. как создать такую заготовку (бошевский конфиг) для иды?
У тебя для этой проги получилось что, или все это теория и общая практика с гугла?

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





Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 02 августа 2015 16:46
· Личное сообщение · #13

для начала нужно определить там все же efi капсула ? или посто какой то файл который они переименовали в efi
если капсула, то нужен емулятор который умеет и имеет efi биос
и тут бош отпадает как мне кажется, нету под бош ефи биосов, я не видел во всяком случае
можно разве что поигратся, найдя гдя где то ефи биос и подсунув его в бош
либо искать другой емулятор который умеет ефи биос, по слухам это может быть qemu

вообщем там до проблемы конфигов далеко, да и сами конфиги есть в самом боше и в иде тоже есть заготовка

Добавлено спустя 1 минуту
Kindly пишет:
У тебя для этой проги получилось что, или все это теория и общая практика с гугла?

я эту прогу не смотрел, у меня своих таких хватает
но бош юзал по всяким разным нуждам
и с куему тоже когда то игрался

нету стандартных решений и волшебной кнопочки, везде нужно сидеть и разбиратся почти с нуля




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

Создано: 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




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

Создано: 02 августа 2015 20:55 · Поправил: Psalmopoeus Pulcher
· Личное сообщение · #15

Файл x86\shdmgr.efi.
По смещению 0x1015F вижу функу проверки ключей, её можно дебажить в ольке. На стэке первый аргумент - указатель на "ID продукта", второй - указатель на "Код активации", третий - нуль. Чтобы взлетело, по смещению 0x0C280 указатель на ("ID активации" - 0x430), или проконтролировать edx:
Code:
  1. .text:00010172                 mov     esi, dword_2C280
  2. .text:00010178                 add     esi, 430h
  3. .text:0001017E                 mov     edx, esi
  4. .text:00010180                 call    sub_FE64


Если проверка не фейковая, то вполне себе юзабельно и можно попробовать.

| Сообщение посчитали полезным: SReg, negoday, Kindly


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

Создано: 02 августа 2015 21:20
· Личное сообщение · #16

Psalmopoeus Pulcher, да, есть последняя мысль разобрать в статике, забить адреса и значения ID продукта/ID активации и прочее подменить. проверка не фейковая, об этом писал в восьмом сообщении.

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




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

Создано: 03 августа 2015 20:56 · Поправил: Psalmopoeus Pulcher
· Личное сообщение · #17

Как еще, актуально?
Я у себя сделал ключ. Ввожу, просит перезагрузить, перезагружаю, до загрузки винды благодарит за регистрацию, загружается винда - опять демо. Wtf?

Kindly, ты кроме этой функи патчил что-нибудь? Может я что то упустил из виду.

Upd. "ID продукта" походу тоже нужно генерировать новый. Займусь завтра.

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


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

Создано: 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


| Сообщение посчитали полезным: negoday
 eXeL@B —› Основной форум —› Отладка загрузочного приложения (RollBack RX)
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


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