![]() |
Туториалы про крякми фантома (для начинающих и не только)
Позвольте представить Вам серию статей (если получитсяи потребуется) для новичков. Рассматриваться здесь будут крякми от фантома. Инструменты: OllyDbg - основной, остальное что понадобится будем добавлять по мере необходимости. В этих статьях будут описаны: теоритические данные, необходимые для понимания работы программы, основные принципы построения защит и соответственно способы их обхода. Все материалы предназначены только чтобы Вы понимали, как не стоит делать.
Начнём мы с первого крякми фантома. Линк: http://rascalspb.narod.ru/fantom/1.zip (4Kb) Он Вам покажется знакомым с крякми одного товарища, но отличается размером - 4 килобайта ;) Советую для удобства добавить ярлык на OllyDbg добавить в папку SendTo. Теперь открываем крякми в отладчике. Запускаем (F9) и смотрим на него. Видим поле ввода и кнопку. Из поля ввода текст может читаться с помощью апи GetWindowTextA(W), GetDlgItemA(W), SendMessageA(W) с сообщением WM_GETTEXT. Нас интересуют только первые 2 апи. Ставим туда бряки. Это можно сдеать следующим образом: или написав в командной строке bp GetDlgItemA или поискав все апи (в окне дизасма ПКМ->Search for->All intermodular calls) и ставимть на них бряки, или Control+G->GetDlgItemTextA и двойной клик в столбце Hex Dump. Как видим вариантов много. Теперь плюсы и минусы: когда бряк ставится в программе на call API не стоитт забывать про вызовы апи через GetProcAddress, call eax. Поэтому я считаю верным ставить точку останова в начало апи. так и сделали. Не забудьте про GetWindowTextA. Теперь пишем в поле что угодно и смотрим. Остановились примерно здесь. Код:
77D8AC26 U> 8BFF MOV EDI,EDIКод:
0012FC64 00401287 /CALL to GetDlgItemTextA from CRACKME1.00401282Код:
00401287 |. 68 9C304000 PUSH CRACKME1.0040309C ; /String2 = "tratata"Задание для самостоятельной работы - сделайте, чтобы на любой текст было сообщение о правильном пароле, замените пароль на более простой. Причём интересны вВаши решения этих вопросов. Все решения постите - за оригинальные и интересны + |
респект! хорошая статейка - многим на4инающим должна помо4ь. дерЖи +
|
Добавлю, что многие, даже не знают, что такое "Бряки"... Бряки или BreakPoints Устанавливаются на фуекции, тоесть когда программа переходит на них, то она останавливается и выводит эту область... Помойму хреново объяснил =)
|
Брекпоинт, это например опкод 0xCC, когда программа наступает на него она вызывает исключение и управление берёт на себя отладчик. Есть отладчики, которые обрабатывают все int 3 (опкод 0xCC). А OllyDbg проверяет, чтобы он входил в заданные Вами точки останова. Ибо есть такой способ запалить отладчик, вызвав исключение и не обработав, т.к. такой отладчик обработает его сам
|
Цитата:
|
| Время: 08:27 |