Продлеваем жизнь Nero Burning

Автор - OverG

Инуструменты, которые нам понадобятся:
- Редактор ресурсов (например ResHacker)
- HEX-редактор (Hiew)
- Мощный отладичик (Soft-Ice или TRW)

После прошествия некоторого времени программа (версия 5.5.9.17) не запускается и требует её зарегистрировать, на кнопку OK нажать нельзя (enable = false). Итак, берем редактор ресурсов, открываем файл nero.exe. Появляется куча ресурсов, нам нужны диалоговые окна. Их там очень много, поэтому зададим поиск по строке "serial n". Найдем нужное нам окно (Dialog/259). Мы видим, что на кнопку ОК нажать нельзя (Enable = False), мы сделаем чтобы нажать было можно. Находим такую строку: CONTROL "OK", 1, BUTTON, BS_DEFPUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_DISABLED | WS_TABSTOP, 125, 88, 50, 14
WS_DISABLED как раз и делает так, чтобы на кнопку нажать было нельзя, нужно её просто стереть, чтобы стало так: CONTROL "OK", 1, BUTTON, BS_DEFPUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 125, 88, 50, 14
Итак, сохраняем, и пробуем запустить nero.exe
Поначалу все загружается все нормально, но.. посхже вылезает сообщение о том, что файл изменен, что на компьютере вирусы и т.д. Но мы то знаем что на самом деле :)
Теперь берем какой-нибудь отладчик, открываем nero.exe и ставим брейк поинт на функцию MessageBox (bpx MessageBoxA). Продолжаем выполнение, у нас появляется окно отладчика, жмем несколько раз F12 , чтобы текущим процессом стал NERO. Перед появляется вот такой код:

005588DD CALL 00559606
005588E2 CMP EAX, Byte +3
005588E5 JNZ 005599FA
{..........................}
005588F0 CALL MFC42!ord_000004AF
005588F5 JMP 00558D40
005588FA CALL 00519883

Нам нужно заменить условный переход на безусловный по адресу 5588E5. Для этого берем HEX-редактор, открываем в нем файл nero.exe и переходим на адрес 005588E5 (в HIEW - нажать F5 и ввести 005588E5) теперь заменяем значение, которое находодится по данному адресу(оно равно 75) на EB. Сохраняем, выходим, запускаем.
Программа отлично работает!