Исследование RegSnap v 2.8
Оформил: DeeCo
Автор: http://www.cracklab.narod.ru
Захотелось мне как-то поисследовать программку на VB :)
и напоролся я на эту вот вешь. Она умеет делать снапшоты регистра форточек и чего-то там ещё, вобщем неважно. Приступим...
Первым делом я поглядел на программку:
1) Огромный NAG при старте с некоторой задержкой при запуске;
2) Напоминательное окно с 3 батонами;
3) Проверка CRC (на изменение кода программы);
4) во-всю юзает (M)ada(F)u(C)ka(42).dll;
Начнём с конца, т.е. отключим проверку CRC:
- Любым HEX-редактором изменим пару байт в программе и запустим её:
мы увидим сообщение "Program corupted" (messagebox)
- Ставим бряк на messageboxA:
bpx MessageboxA
и опять запускаем прогу, при этом мы вывалимся где-то в системной библиотеке, а чтобы из неё выйти и опять попасть в модуль regsnap нужно нажать F12 4 раза, и когда мы это сделаем, то окажемся вот в этом месте:
:00406848 FF1588774100 Call dword ptr [00417788] <--вызов процедуры проверки CRC (в eax 0, если CRC нарушен и 1 - если всё ОК).
:0040684E A1F4494200 mov eax, dword ptr [004249F4]
:00406853 83C408 add esp, 00000008
:00406856 3BC7 cmp eax, edi <-- проверяем EAX
:00406858 7520 jne 0040687A <-- ЕСЛИ всё ОК - прыгаем
:0040685A 6AFF push FFFFFFFF
:0040685C 57 push edi
:00406862 E8DBDA0000 Call 00414342 <-- Вызов сообщения о нарушенном CRC
:00406867 33C0 xor eax, eax <-- вот тут мы остановились
:00406869 8B4DF4 mov ecx, dword ptr [ebp-0C]
:0040686C 64890D00000000 mov dword ptr fs:[00000000], ecx
:00406873 5F pop edi
:00406874 5E pop esi
:00406875 5B pop ebx
:00406876 8BE5 mov esp, ebp
:00406878 5D pop ebp
:00406879 C3 ret
Как видите, по адресу 00406856 проверяют EAX, я предлягаю записать вместо
этой команды mov eax,01 чтоюы для последующих проверок, если такие будут, всё
было нормально, а вместо команды jne 0040687A вписать jmp 0040687A, чтобы
в любом случае перепрыгивать ненужное окно и процедуру закрытия программы.
ВНИМАНИЕ!!! команда mov eax,01 сожрёт 5 байт, в то время как cmp eax, edi
всего 2 байта, поэтому будет использованы байты, выделенные под процедуру
вывода сообщения об ошибке и процедуры закрытия программы, всё равно ведь
мы эту процедуру перепрыгиваем и больше никогда использовать не будем!!!
Итак, если вы всё сделали как я сказал, то больше программа не будет ругаться
на то, что её кто-то изменял.
И ещё, в программе реализован полиморфизм, т.е. при обнаружении CRC ошибки,
она сама затирает некоторые куски кода другими опкодами, что делает все краки
нерабочими, поэтому при внесении изменений, рекомендую делать эти изменения
в абсолютно "чистой" версии regsnap.exe.
2)Лирическое отступление:
Программа записывает в реестре в ключе:
HKEY_CURRENT_USER\Software\Vitas\regsnap\main
в параметре
количество дней оставшегося триала.
Для начала уберём Огромный NAG-screen при запуске:
- ставим бряк на CreateWindowExA
- запускаем прогу и почти сразу вываливаемся в айсе
- Жмём F12 ровно 12 раз (какое совпадение :) пока не вернёмся в модуль
regsnap.exe и
оказываемся тут:
:0040687A E893DD0000 Call 00414612 <-- проверяет наличие OLE
:0040687F 85C0 test eax, eax
:00406881 751D jne 004068A0 <-- если нет таких - прыгаем на выход из проги
...............
...Поскипано...
...............
:004068BA E841DD0000 Call 00414600 <-- проверяет необходимость NAG'a
:004068BF 397D90 cmp dword ptr [ebp-70], edi
:004068C2 740C je 004068D0 <-- если не надо - перепрыгиваем его
:004068C4 397DE8 cmp dword ptr [ebp-18], edi
:004068C7 7507 jne 004068D0 <-- то же самое
:004068C9 B801000000 mov eax, 00000001
:004068CE EB02 jmp 004068D2 <-- а если надо - то прыгаем на наг
Здесь предлагаю вместо
je 004068D0
написать
jmp 004068D0
чтобы сразу перепрыгивать NAG и он нас больше не мучал :)
Осталось разобраться с напоминающим окном "Trial Period"...
3) после
:004068C2 jmp 004068D0
скролим то тех пор, пока не появится окно напоминания, это произойдёт в этом
месте:
:00406D5D E856D20000 Call 00413FB8 <-- вызываем напоминающее окно
:00406D62 83F801 cmp eax, 00000001 <-- смотрим: какую кнопку ты нажал
:00406D65 7449 je 00406DB0 <-- если это кнопка "Try" - прыгаем
здесь я поменял Call 00413FB8 на jmp 00406DB0,
т.е. без вызова окна напоминания дал понять программе, что нажата кнопка
"Try". Теперь больше не будет этого окна-напоминания и при старте будет сразу
открываться главное окно!
Последние штрихи...
4) Это необязательная, но самая приятная часть исследования - уберём все
признаки незарегистрированности, т.е. надписи типа "This soft UnRgIsTred"
Я зашёл в WDasm'e в String Reference и нашёл там строку "Registred to %S"
кликнул на неё и оказался тут:
:00404616 6818E34100 push 0041E318
:0040461B 56 push esi
поднялся чуть выше , вот сюда:
* Referenced by a CALL at Addresses:
|:0040148F , :004051DD , :004113F7
|
:004045D0 A188044200 mov eax, dword ptr [00420488]
:004045D5 81EC00010000 sub esp, 00000100
:004045DB 85C0 test eax, eax <-- проверяеи зарегистрированны ли мы
:004045DD 56 push esi
:004045DE 7452 je 00404632 <-- если нет - прыгаем
:004045E0 8BB42408010000 mov esi, dword ptr [esp+00000108]
:004045E7 85F6 test esi, esi
:004045E9 743A je 00404625 <-- если нет - прыгаем
:004045EB 83C01D add eax, 0000001D
здесь я вместо mov eax, dword ptr [00420488] написал ret ( с тем соображением,
что программа выйдет из процедуры присваивания имени ни с чем и будет
надпись "Registred to: " и всё), но оказалось ещё круче:
Появилась надпись "Registred to: Vitas Ramanchauskas" а в окне "О программе"
как я и предполагал Вместо надписи "Registred to" ничего нет.
//Можно написать вместо ret что-то типа mov eax,eax
//тогда адрес строки с именем будет случайный, а т.к. программа проверяет
//имя владельца лицензии после каждой операции, то наше имя будет меняться
//каждый раз, причем имя будет иметь вид "№;%№;%№;%"№;%%::ВАПп" Прикольно!!!
Осталось ещё убрать надпись "Trial" внизу программы:
ищем эту надпись в HEX-редакторе и затираем её пробелами или например "fuck".
ВсЁ!
Ну и как всегда, готовый Крак:
-----------вырезать тут-----------
RegSnap v 2.8 Crack by vallkor//PTDS
REmoves All Nag's and limits!!!
regsnap.exe
00006856: 3B B8
00006857: C7 01
00006858: 75 00
00006859: 20 00
0000685A: 6A 00
0000685B: FF EB
0000685C: 57 1D
000068C2: 74 EB
00006D5D: E8 EB
00006D5E: 56 51
000045D0: A1 C3
0001E4B8: 54 46
0001E4B9: 72 75
0001E4BA: 69 63
0001E4BB: 61 6B
0001E4BC: 6C 20
-----------вырезать тут------------
Как всегда, с вами беседовал
vallkor //PTDS
e-mail: vallkor@chat.ru
page: http://vallkor.chat.ru
|