Три примера взлома по атаке String Reference


Пример 1.

               цель:
Winrar 3.60 Beta 1
Инструменты: Win32Dasm 8.93
                         HIEW 7.10

Здрасте, сегодня я буду описывать взлом Winrar 3.60 Beta 1-а по способе String Reference. Этим способом пользуются новички, а как я тоже новичок - я тоже пользуюсь. Пристумпим.
Первым делом открываем WinDasm и дизассемблим прогу, нажимаем на кнопку StrnRef и ищем... А что мы ищем? А вот что: когда с первого запуска проги пойдет 40 дней, прога "напомнит" об этом и попросит зарегить себя. А как по английски напоминатель? Именно - Reminder. Так давайте искать этот римайндер. Нашли, кликаем два раза и попадаем на это место. Идем немножко вверх, узнаем откуда вызывается реминдер - 00445AAD, идем на этот адрес при помощи кнопки "Goto Code Location", а там вверху видем, что есть переход при помощи которого можно проходить это процедуру напоминания. Адрес - 00445AA3. Нужно поменять условный переход "je 00445AD7" на безусловный - "jmp 00445AD7". Для этого запускаем HIEW 7.10, нажимаем F5, пишем ".00445АА3", нажимаем Enter потом F3, меняем "74" на "EB" (это комманда "jmp" ввиде 16ричних цифр), нажимаем F9 и все. Мы справились с напоминательем, но в заголовке проги написано "(evaluation copy)" а в диалоге About - "40 days trial copy", значит снова ищем... :) В WinDasm-е можно найти "evaluation copy", но это мне не помогло, поэтому кликаем на "Registered to". Прямо внизу находится "40 days trial copy", по этому надо сделать так, чтобы прога не доходила до этого участка и остановилась на "Registered to". А делаем это так: просто нопим переход из 00449899. Он занимает два байта - четыре тетрада, а поскольку nop занимает один байт - надо поставить два ноп-а. Снова запускаем hiew, да чуть не забыл, нужно в хйю лоадить копью файла, а то дасм пользуется оригиналом (winrar.exe) во время работы и придется временно закрыть его. На чем остановка? ДА! Запускаем hiew показываем копью файла, нажимаем F5 (Goto), пишем ".00449899", нажимаем F3 и сразу вместо "7445" пишем "9090". Вот, справились и с About-ом, остался только заголовок. Что вы думаете, что останется в заголовке после того, как уберем "(evaluation copy)" ? Правильно - "имя_текущей_папки - Winrar". Посколько прога написана на С++, значит это будет выглядеть так: "% - Winrar". И снова ищем. Нашли % - Winrar, кликаем, идем немножко вниз и видем чудный переход "jne 00450948". Ме все равно, что там cmp-ится, только я вижу, что если не перейти то - "evaluation copy". Запускаем в последний раз hiew ...(уже устал повторятся) вместо "757A" пишем "EB7A", нажимаем F9,F10(выход). И наш виньрар крэкан! Нужно только сгенерить "rarreg.key", а для этого подайдет файл почти любой версии. Итоги: Мы патчили файл "winrar.exe", можно еще и "rar.exe". Внем все очень просто, я думаю вы справитесь, если нет - пишите на n0p@freenet.am
Если вам по барабану как была взломана прога, а только хотите крэк - ищите в Keygen.ru



Пример 2.

               цель: Folder Icon Changer 2.3
Инструменты: ASPackDie 1.41 from Yoda
                         Win32Dasm 8.93

                         RegKey LastWriteTime Scaner 1.0
                         HIEW 7.10

С этой прогой все тоже очень просто, только вот он запакован ASPack-ом. Это легко снимается ASPackDie-ом (спасибо тебе Yoda). Прога дает нам 30 запусков и после этого не возможно продолжить работу (хотя можно - нажимаем "Yes" и все). Так, давайте поймем, что произходит, когда прога запускается? Конечно записывает в реестр или в файл (?????) номер этого запуска. Я бы сначало праверил реестр а потом файл, по этому так и делаем. Перед запуском проги смотрим какой час, запускаем, снова смотрим на часики и закрываем. Потом идем в RegKey LastWriteTime Scaner 1.0, кликаем на все ключи, установливаем интервал времени и нажимаем на Start. Лучше при часами быть осторожным, всегда нужно иметь 1 минуту +- в запасе. Нашли несколько ключей, открываем все - кликая два раза по одному. Праверяем все, вдруг... Нашли ".../CurrentVersion/Sesfic". Значние этого ключа совпадает с номером текушего запуска. Так что експортируем ключ, удаляем все в експортированном файле кроме sesfic, и пишем ""sesfic"=dword:00000000". Можно запускать этот файл и номер запусков будет 0. Если этого не достаточно, то давайте идти дальше. Запускаем прогу 30 раз и видем "This is unregistered copy...". Unpack-им файл "Folder Icon Changer.exe", дизасмим и ищем "This is unregistered copy...". Нашли? Тогда идем вверх, до того, когда увидем "jle 0047CF07" (адрес 0047CEAE). Этим переходом можно избегать "Please register"-а. Так что теоретически можно поменять jle на jmp, но поскольку мы пользуемся HIEW-ом, а встоенный внем ассемблер не дает возможности, то нужен другой способ. Смотрим что сравнивается - "cmp dword ptr [ebx+00000334], 0000001E". Нажимаем на кнопку "find", из "Direction" в диалоге "find"-а выбераем "UP" и вводим "ebx+00000334", чтобы посмотреть когда он в последний раз изменился. И видем что это прямо несколько строк вверх - "mov ecx, dword ptr [ebx+00000334]" (адрес - 0047CE94). Здесь ecx - реестр. А в адресе 0047CE8E находится "inc dword ptr [ebx+00000334]". Вы знаете что такое "inc" ? Ответ: Увеличить на 1. Правильно это увеличивает кол-во запусков на 1 и заносит в реестр. А вот с nop-ами в HIEW нет проблем. Так что смело нопим адрес 0047CE8E полностью (от FF до 00). Вот и все, теперь прога вытащит номер запусков и не делая сним ничего положит на место :)))). Жаль, что прога 2002 года.
Вопросы снова на n0p@freenet.am.



Пример 3.

               цель: Win2000Rescue 2.08.33
Инструменты: Win32Dasm 8.93
                         HIEW 7.10


Об этой проге я не буду долго говорить. Защита здесь ламерская. Всего надо менять два байта и прога зарегана, а эти два байта это "742D" и надо менять на два нопа - "9090". А адрес этих байт - 004C8B57. Только там не занаю почему "test eax, eax" и не "jne...", а "je...". Но вообшем то это меня не волнует. Надо нопить, чтобы дойти до "Registration Key Accepted", а не прыгать на "WARNING - Incorrect Key Entered". После патчивания можно ввести все, что хочется и прога зарегится.




Автор:n0p