• XSS.stack #1 – первый литературный журнал от юзеров форума

Исследование Dekart Private Disk

hidden

floppy-диск
Пользователь
Регистрация
30.08.2006
Сообщения
6
Реакции
0
Исследование Dekart Private Disk v.2.09 (Последняя версия)

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

Исследование я начал с появившегося MessageBox’a, тапа у меня осталось 30 дней, я сразу же, аттачнул его олькай(ollydbg) search for => name in all modules => messageboxa, дальше follow import in disassembler, а так как в XP эта функция вызывает функцию MessageBoxExA, я поставил бряк(beak point/точку останова) после MessageBoxExA и нажал F9(run). Согласился с сообшением и это привело к остановке на том бряке, я вышел из функции по F7(step into/шаг внутрь) и попал в модуль dkar.dll, выполнил search for => all intermodular calls и мне в глаза сразу бросилась функция versnum.VerifySerialNumberEx, дальше я открыл её в идее(IDA/Interactive Disassembler) и долго пытался разобраться в способе сравнения ключа, хотеорсь сделать keygen...
Спустя несколько часов, мне это надоело и я решил патчить. Я заметил что достаточно чтоб, функция VerifySerialNumberEx вернула значение отличное от нуля, тогда программа считает сабя загереной. Я сразу поставил jmp(прыжок) с начала функции, на первый же ret(учитывая стек) и программа стала считать себя зарегеной, но после того как я внёс изменения в саму versnum.dll, вылетел MessageBoxExA, с ошибкой загрузки versnum.dll, оказалось она проверяет целостность versnum.dll. Тогда я вышел из этой функции, на месте её вызова выполнил find references to => address constant, оказалось, она вызывается из нескольких мест, а также она не импортировалась, а подгружалась библиотекой dkar.dll, о чём свидетельствовала строка
Код:
MOV DWORD PTR DS:[9159DC],EAX
Я перешел на место подгруздки функций и решил добавить к полученному адресу функции, значение, соответствующее отступлению команды ret от начала функции, но функция add eax, 0x65 занимает 3 байта, а пожертвовать я мог только командой test eax, eax которая занимает 2 байта.
Код:
008FAD3C     68 E8D79000          PUSH 0090D7E8                          ; ASCII "VerifySerialNumber38"
008FAD41     FF37                 PUSH DWORD PTR DS:[EDI]
008FAD43     FFD6                 CALL ESI
008FAD45     85C0                 TEST EAX,EAX
008FAD47     A3 D4599100          MOV DWORD PTR DS:[9159D4],EAX
008FAD4C     74 63                JE SHORT 008FADB1
008FAD4E     68 D0D79000          PUSH 0090D7D0                          ; ASCII "VerifySerialNumberEx"
008FAD53     FF37                 PUSH DWORD PTR DS:[EDI]
008FAD55     FFD6                 CALL ESI
008FAD57     85C0                 TEST EAX,EAX
008FAD59     A3 DC599100          MOV DWORD PTR DS:[9159DC],EAX
008FAD5E     74 51                JE SHORT 008FADB1
как вариант было переместить mov ниже, на затереть ей инструкцию je, но тогда бы пришлось править таблицу исправлений адресации(что мне делать не хотелось), просто при паче dll’ек лучше не использовать прямых адресов, и не изменять инструкции с прямыми адресами(слишком много гемора).
Решение оказалось проще, перед получением этой функции, запрашивается другая, которая отстоит от того ret на расстоянии 139 байт, в той же библиотеке, так что я просто заменил
Код:
008FAD53     FF37                 PUSH DWORD PTR DS:[EDI]
008FAD55     FFD6                 CALL ESI
008FAD57     85C0                 TEST EAX,EAX
на
Код:
008FAD53     59                   POP ECX; компенсирует предыдущую инструкцию
008FAD54     05 8B000000          ADD EAX,8B; Наращивает на 139
Для полноты процесса, можно ещё и контрольную сумму поправить, но это не обязательно.

Резутьтат:
Код:
dkar.dll
0000AD53: FF 59
0000AD54: 37 05
0000AD55: FF 8B
0000AD56: D6 00
0000AD57: 85 00
0000AD58: C0 00

Ссылки:
ОффСайт - ввв[dot]private-disk[dot]net - Отсюда можно скачать.
Зеркало версии 2.09 на случай, если обновят ввв[dot]4shared[dot]com[slash]file[slash]6622030[slash]65852128[slash]MyPeronalPhotos.html
Пароль: CR@CK

ЗЫ Вот и сэкономили $45.00 :D
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх