/\ ___ /\ ___/ /__________ __________\ \______\ \____ \__ _\ _((-____________________ / / _____\ ___/ \ \ \ \ _ \ \/ / ___( / / \___ \__________\___|_____/______\/______\___/ / ___/ /__///- - TFT PROUDLY PRESENTS - -\\\__\ TEAM FIFTY THREE TUTORiALS PACK NUMBER NiNETEEN Программа: Lullaby 1.04 Инструменты: OllyDbg, DiE Запускаем программу, нажимаем Register, вводим любые данные и видим надпись в окне регистрации "Invalid RegCode". Плохо, конечно.. Травим DiE на экзешник, он выдает, что программа запакована UPX'ом. Распаковываем самим же UPX'ом.. Далее грузим прогу в OllyDbg. В Оле ищем строку "Invalid RegCode" и находим. 00485E36 |. 8B08 MOV ECX,DWORD PTR DS:[EAX] 00485E38 |. FF51 64 CALL DWORD PTR DS:[ECX+64] 00485E3B |. 8B87 F8020000 MOV EAX,DWORD PTR DS:[EDI+2F8] 00485E41 |. BA 005F4800 MOV EDX,lullaby_.00485F00 ; ASCII "Program succesfully registered. Restart Lullaby" 00485E46 |. E8 5D2FFBFF CALL lullaby_.00438DA8 00485E4B |. EB 10 JMP SHORT lullaby_.00485E5D 00485E4D |> 8B87 F8020000 MOV EAX,DWORD PTR DS:[EDI+2F8] 00485E53 |. BA 3C5F4800 MOV EDX,lullaby_.00485F3C ; ASCII "Invalid RegCode" "Запоминаем адрес вызова сообщения о неправильной регистрации." - Хотел сказать я, но в данном случае вызывается не сообщение, а только изменяется надпись о верном/неверном регистрационном коде. Адрес вызова: 00485E4D. Запомнили... Я решил "прокатиться" (поскролить выше) и поискать что-нибудь интересненькое.. Нашел. 00485D2E |> 8D55 C4 LEA EDX,DWORD PTR SS:[EBP-3C] <-- сюда ставим брэйкпоинт 00485D31 |. 8B87 10030000 MOV EAX,DWORD PTR DS:[EDI+310] 00485D37 |. E8 6439FCFF CALL lullaby_.004496A0 00485D3C |. 8B45 C4 MOV EAX,DWORD PTR SS:[EBP-3C] <-- здесь неверный регкод "11111" 00485D3F |. 8B55 F8 MOV EDX,DWORD PTR SS:[EBP-8] <-- здесь верный регкод "161016815144619101010171621" 00485D42 |. E8 B9E8F7FF CALL lullaby_.00404600 00485D47 0F85 00010000 JNZ lullaby_.00485E4D 00485D4D |. B8 76000000 MOV EAX,76 00485D52 |. E8 9D21F8FF CALL lullaby_.00407EF4 00485D57 |. 8BF0 MOV ESI,EAX 00485D59 |. B2 01 MOV DL,1 Я запустил прогу под отладчиком, но прежде поставил брэйкпоинт на адрес 00485D2E. Запустил. Открыл окно для регистрации, ввел свой ник "kaiZer" и регистрационный код "11111". Нажал Register и я в отладчике. Правда, по этому адресу ничего интересного нету, но есть чуть пониже. Смотрим что творится по адресу 00485D3C, а там такое... В ЕАХ заносится введенный нами регистрационный код, а вот по адресу 00485D3F - в EDX заносится верный регистрационный код для введенного нами имени, у меня он такой: "161016815144619101010171621". С этим регкодом можно спокойно зарегистрировать программу, но можно и по-другому.. 00485D47 0F85 00010000 JNZ lullaby_.00485E4D <-- Интересная строка, не правда ли? Получается, что если не ноль (в нашем случае это единица), то переход.. куда-куда? Естественно, что на "Invalid RegCode". Легко догадаться, потому что раньше мы запомнил "плохой" адрес и он именно такой, на который сейчас ссылается программа. Можно поступить так: просто заменить JNZ на JE и веселиться сколько угодно! Все, программа зарегистрирована! Можно еще проанализировать код, посмотреть выше. Там я нашел интересную строку "CF129Sdfass4V1c", эта строка участвует в генерации регкода и потому написать кейген все-таки можно, но мне лень все анализировать, поэтому я и нашел готовый регкод. В прошлой версии этой программы этой интересной строки не было, поэтому и регкод был другой.. Прога успешно сломана! kaiZer/TEAM-53 07/07/2007 kaiZer.am.i@gmail.com