Х-конкурс GpCH (www.dotfix.net) Хакер, номер #082, стр. 082-074-1 В сентябре в качестве очередного Х-конкурса мы предложили тебе исследовать на предмет возможного взлома программную защиту специально приготовленного crackme. Учитывая, что с заданием справилось 7 человек, нелишним будет рассказать о том, как надо было проходить конкурс, каким образом можно было взломать нашу программу. [инструменты для взлома] Начнем с инструментария, который тебе понадобится для исследований. Что бы не говорили знатоки крэкинга, но для взлома данного крэкми тебе понадобится только Olly Debugger (далее - Олька). Конечно можно запрячь всякие файловые анализаторы и распаковщики, но без всего этого вполне можно обойтись. Чтобы узнать, с чем мы имеем дело, может пригодиться файловый анализатор PEiD. Он не покажет нам никаких данных относительно языка, на котором написана программа, отсюда можно сделать логичный вывод о том, что программа упакована, а поскольку PEiD не выводит имя упаковщика, то он либо новый, либо малоизвестный. Скажу по секрету, паковал я этот крэкми UPack'ом версии 0.32. Этот пакер бесплатный и обеспечивает лучшее, по сравнению с другими, сжатие. Ну что, приступаем к нашим опытам. [ломаем] Для начала не лишним будет определить нашу цель. Многие почему-то решили, что достаточно распаковать крэкми и защита снята. Это неправильный подход. Упаковщик служит лишь для уменьшения размера крэкми, но не для защиты. А цель наша - получить пароль на свой ник и узнать специальный пароль, общий для всех ников. Для этого не нужно распаковывать крэкми. После запуска его под олькой упаковщик в памяти сам распакует крэкмис. Нам остается лишь посмотреть на те уязвимости, за которые можно зацепиться чтобы осуществить взлом. Надеюсь, ты уже открыл Олей крэкмис и нажал F9, запустив тем самым программу под отладчиком. Теперь в загруженной программе введи свой ник и любой пароль. Я ввел «GPcH» и пароль «1234567890». Нажимаем на кнопку «Зарегистрировать программу» и получаем, естественно, сообщение «Вы ввели неверное имя пользователя или пароль. Повторите попытку :)». Теперь мы знаем, с чего нам начать исследовать программу. Ставим точку останова на функцию rtcMsgBox (данную функцию Visual Basic - а именно на нем и написана программа - использует для вывода сообщений), или на ее ординал 595. Надеюсь, у тебя установлен плагин CommandLine для Ольки. Если нет - ищи его на сайте ollydbg.de. В консоли этого плагина вводи bp rtcMsgBox, жми Enter и снова дави на кнопку «Зарегистрировать программу». Выполнение кода прервется на функции rtcMsgBox. 660DC5F3 >gt; 55 PUSH EBP Теперь проходим до конца этой функции в режиме трассировки (нажимай F8). Эта функция, как и любая другая, оканчивается операндом ret. После этого (предварительно увидев сообщение о неверности пароля) мы попадем обратно в код крэкмиса. Тут ты увидишь следующее: код, на который мы попадаем после получения сообщения о неверном пароле 0040610E 8D DB 8D 0040610F 85 DB 85 00406110 58 DB 58 ;CHAR 'X' 00406111 FD DB FD 00406112 FF DB FF 00406113 FF DB FF 00406114 50 DB 50 ;CHAR 'P' 00406115 8D DB 8D |