![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
Исследование RegSnap v 2.8Delphi , Программа и Интерфейс , Исследование программИсследование RegSnap v 2.8
Оформил: DeeCo и напоролся я на эту вот вешь. Она умеет делать снапшоты регистра форточек и чего-то там ещё, вобщем неважно. Приступим... Первым делом я поглядел на программку: 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
Исследование RegSnap v 2.8: удаление проверки CRC, полиморфизм и обход ограничений программы. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта. :: Главная :: Исследование программ ::
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |