Снятие ограницений с проги CryptCD2 Автор: SLV В этой статье рассматривается программа CryptCD2. Её можно взять с сайта разработчиков на http://www.cryptcd.com/, и весит она ~1.3 метра. Её имя говорит само за себя: она умеет шифровать данные на CD, а так же и расшифровывать :) Но вот беда, она shareware, и имеет ряд ограничений: 1. CD Size has reached the unregistered 50 MB limit.(No comments.) 2. На AboutBox-е и SplashScreen-е есть некрасивые надписи, аля unregintered. 3. Когда прога зарегана на MainForm пункт меню Register имеет свойство Enabled=false. Для начала проверим, сжат (или закриптован) exe-шник. Отрываем CryptCD2.exe в PEID и видим Microsoft Visual C++ 6.0. Хорошо, теперь открываем его в W32DASM-е. Поискав немного в String Data References строку 'CD Size has reached the unregistered' находим следующее: :00406213 F7C100000008 test ecx, 08000000 :00406219 8B0DB0824200 mov ecx, dword ptr [004282B0] :0040621F 7525 jne 00406246 ; Проверка на зарегистрированнисть :00406221 8D1401 lea edx, dword ptr [ecx+eax] :00406224 81FA00002003 cmp edx, 03200000 ; Сравниваем скока есть с 50 (3200000h = 50) :0040622A 761A jbe 00406246 ; Прыгаем при сравнении :0040622C 6A32 push 00000032 * Possible StringData Ref from Data Obj ->"CD Size has reached the unregistered " ->"%ld MB limit.You must register " ->"to remove this limit." а также это: :0040626B A900000008 test eax, 08000000 :00406270 8B442408 mov eax, dword ptr [esp+08] :00406274 7514 jne 0040628A ; Проверка на зарегистрированнисть :00406276 8D1401 lea edx, dword ptr [ecx+eax] :00406279 81FA00002003 cmp edx, 03200000 ; Сравниваем скока есть с 50 (3200000h = 50) :0040627F 7609 jbe 0040628A ; Прыгаем при сравнении :00406281 6A32 push 00000032 * Possible StringData Ref from Data Obj ->"CD Size has reached the unregistered " ->"%ld MB limit.You must register " ->"to remove this limit." в обоих местах надо поменять jne на je и заNop-ить jbe. Yaahoo! Лимит на 50 метров записи снят. Осталось убрать ещё 2. Опять же в String Data References поишем строку 'Registered To: NOT REGISTERED'. Выходим на такой код: * Referenced by a (U)nconditional or (C)onditional Jump at Address: |:0040B2E7(C) | :0040B302 8D442454 lea eax, dword ptr [esp+54] * Possible StringData Ref from Data Obj ->"Registered To: NOT REGISTERED " ->"- Limited abilities." Посмотрим, что творится по адресу 40B2E7: :0040B2E2 A900000008 test eax, 08000000 ; Проверка на зареганость :0040B2E7 7419 je 0040B302 ; Прыжок, ести НЕ зарегистрированны :0040B2E9 68E9254200 push 004225E9 :0040B2EE 8D542458 lea edx, dword ptr [esp+58] * Possible StringData Ref from Data Obj ->"Registered To: %s. ( Thank you! " ->")" Меняем je на jne и в SplashScreen-е написано 'Registered To:. (Thank you!)'. Теперь поищем строку 'Registered', но с самого начала листинга. Оказалось, что Static с таким Caption-ом находится в DialodID_0086. Значит надо искать 'dialogid_0086'. Проскочив несколько неинтересных моментов попадаем сюда: :00407F94 F705D016420000000008 test dword ptr [004216D0], 08000000 ; Опять проверка :00407F9E 7410 je 00407FB0 :00407FA0 68E9254200 push 004225E9 * Possible Reference to Dialog: DialogID_0086, CONTROL_ID:0431, "NOT REGISTERED - Limited abilities" Конечно же меняем je на jne и в AboutBox-е видим 'Registered to: '. Кого не устраивает пустота после двоеточия может исправить, например, в Restorator-е 'Registered to: ' на 'Cracked by SLV':) Теперь уберём св-во MenuItem Register.Enabled=true. Ищем строку 'Register' и находим интересное место: :00401CA7 F705D016420000000008 test dword ptr [004216D0], 08000000 ; :) :00401CB1 0F848B040000 je 00402142 :00401CB7 6A03 push 00000003 * Possible Ref to Menu: MenuID_0066, Item: "Register" ; MenuID - то, что надо! Меняем je на jne и получаем 100% работоспособную CryptCD2!!!.