Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   Авторские статьи (https://forum.antichat.xyz/forumdisplay.php?f=31)
-   -   Исследование Dekart Private Disk (https://forum.antichat.xyz/showthread.php?t=24844)

hidden 03.10.2006 23:33

Исследование Dekart Private Disk
 
Исследование 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

ProTeuS 04.10.2006 12:18

nice try
продолжай в том же дуХе ;)

taha 04.10.2006 16:36

Дааааа. Читаю и понимаю, что без практики постепенно превращаюсь в теоретика.
Молодец!
Цитата:

продолжай в том же дуХе


Время: 13:39