OllyDbg 2.01 скачать бесплатно для Windows 64 bit / 32 bit

Крэкинг с помощью OllyDbg

Лабораторная работа

Первым делом запускаем наш отладчик OllyDbg , при первом запуске он попросит вас указать пути к UDD и Plugins, поможем ему заходим в Options->Appearance->Directories и прописываем оба пути( просто укажите папку где лежит OllyDbg). Непугайтесь множества окон, для работы нам понадобиться всего 3.

1.CPU
2.Breakpoints
3.Patches

Все остальные окна рекомендую закрыть, чтоб они нам не мешали.
1.Открываем нашу программу в отладчике. Для этого открываем меню File->Open и выбираем нашу тестовую программу. После загрузки в окне CPU мы увидим вот такую картину.

Это и есть ассемблерный код нашей программы.
Теперь немного объясню некоторые строчки:
PUSH EBP ; Начало другой функции
CALL TestP.00405С60 ; Вызов функции
Этого пока нам будет достаточно.

 

2.Теперь нам надо найти функцию которая выдает окно с запросом ввода ключа. Для этого выполняем программу пошагово нажимая клавишу F8 до тех пор пока не появиться окошко с запросом ввода. После нескольких нажатий появляется окошко ввода.

 

Теперь мы знаем что где-то в этой функции (TestP.004523B8) выводиться наше окошко. Нам необходимо докопаться до функции которая выводить окно, для этого надо зайти в эту функцию.

Теперь перед этой строкой CALL TestP.004523B8 нам надо поставить точку останова (Breakpoint) для этого выделяем строку перед ней и нажимаем F2 и видим что в окошко Breakpoints добавилась эта строка.

 

Далее нажимаем на эту кнопку для того чтоб загрузить нашу программу заново. Теперь надо дойди до точки останова для этого нажимаем для того чтоб выполнить нашу программу и видим что выполнение остановилось на нашей точке останова. Для того чтоб зайти в функцию нажимаем клавишу F7. Думаю вы поняли разницу между F8 и F7, первая трассирует программу без захода в функции , вторая с заходом в функции. Видим такую картину.

 

Нам надо продолжать пока не найдем функцию которая выводит окно и обрабатывает нажатие на кнопку ОК и определяет правильно мы ввели ключ или нет. Продолжим, также нажимаем F8 пока не появиться окно.

 

Опять перед ней ставим точку останова.

 

Продолжаем дальше, находим очередную функцию

 

Опять ставим точку останова и возвращаемся сюда, заходим в функцию, думаю вы уже поняли как это делается. После захода в функцию видим следующее.

 

Продолжаем искать нажимая F8. Походу нажатия F8 мы видим что начинают появляться API функции,

 

значит мы уже близко. Нажимаем медленно и следим когда появиться окно. Вот что произошло, по ходу трассировки программы в лотке задач появилось наше окно,

 

 

но при нажатии на него мышкой окно не появляется, уряя значит мы там где нам нужно, именно эта функция рисует окно и где-то тут сверяется введенный нами ключ. Продолжаем дальше трассировать программу (F8!) и видим что на этом месте

 

какой-то цикл, который постоянно повторяется, у нас уже палец болит держать F8 , а он никак не кончиться, для этого ставим точку останова на первой строке после цикла (MOV DWORD PTR SS:[EBP-8],EAX)

 

Окошко закрылось и мы вернулись в окно отладчика, выполнение остановилось на нашей точке останова. Теперь нам надо найти функцию в которой выводит окошко с уведомление что ключ введен неверно. Для этого трассируем (F8) нашу программу до того момента пока не появится окошко с уведомлением.

 

Тут мы и будем разбираться что к чему. В глаза первым делом кидается строчка это и есть наш правильный ключ, но не надейтесь что в других программах вы так просто его найдете, обычно ключи просто так в памяти не лежат, потому нашей задачей будет сделать так чтоб программа принимала любой ключ! Теперь проанализируем код перед вызовом функции (CALL TestP.00427294) которая выводит окно с уведомлением об ошибке. Первым делом смотрим в окно регистров которое находиться в окне

 

И видим что в регистре
EAX лежит адрес введенного нами ключа в памяти и соответственно что мы ввели (я ввел 23). Тут все уже немного сложнее и надо иметь хоть небольшие знание основных операторов ассемблера. Думаем так, что программа должна сравнить наш ключ с каким либо еще или проверить его правильность любым другим способом, но для этого она должна вызвать функцию которая это все сделает. Значит ищем приблизительно такую структуру

MOV EAX, … //записывает в EAX адрес нашей строки
……………….
CALL … //вызов функции которая проверит правильность нашей функции
JNZ(или JE) …// условный переход (почитайте о них!)

Немного об условном переходе, с помощью этого оператора можно переходить к определенной строке кода, адрес указывается после оператора. Значит после вызова функции если ключ был введен верно после вызова этого оператора он перейдет на строку после которой и запуститься наша программа. Если же нет то будет выполняться код после него. Значит ищем, в глаза сразу бросается такой код

MOV EAX,DWORD PTR SS:[EBP-4]
MOV EDX,TestP.00453BA4
CALL TestP.00404258
JE SHORT TestP.00453B4A

 

Теперь заново пошагово выполните это кусочек кода и вы увидите что этот оператор
JE SHORT TestP.00453B4A пропускается и никуда нас не перекидывает, значит это и есть наша функция которая проверила наш код и он оказался неверным потому оператор JE никуда нас и неперекинул. Я нибуду вам обьяснять как этот оператор проверяет правильность, мы все делаем "жестко" напролом :). Значит если код будет введен то этот оператор кинет нас по одресу 00453B4A и все будет ок :). Заменяем этот оператор на безусловный переход (JMP) который в любом случае перекинет нас по этому адресу. Посмотрите где этот адрес находиться (выделенная строка синим цветом).

 

Видим что вызов функции которая выводит уведомление о том что ключ неверен, пропускается.
Для того чтоб заменить строку выделяем её и нажимаем пробел(Space) и заменяем это

 

 

Видим что строка JE SHORT TestP.00453B4C заменилась и в окошке Patches добавилась строка.

 

 

Теперь проверяем или работает. Нажимаем кнопочку , в окне Breakpoints нажимаем правой клавишей мышки и в меню выбираем Disable All. Далее в окне Patches на нашей строке нажимаем правой и в меню выбираем Apply Patch. После этого жмем кнопку , выводиться окошко с запросом ключа, вводим любой ключ, нажимаем ок и наша программа зарегистрирована. Конкретно эта программа будет всегда спрашивать ключ, так как это просто тест, а реальная программа записала бы себе что вы правильно ввели ключ.
Приметка! Тут удалось сразу найти нужный нам кусочек кода, но не всегда все будет так просто. Иногда придется пробовать по очереди все структуры такого типа.

3.Последний шаг, надо зашить патч в программу для этого нам и нужен Hex редактор.


Дата добавления: 2015-04-15; просмотров: 15; Нарушение авторских прав


Данная статья приведена исключительно в информационно-ознакомительных целях. Коллектив проекта «DAXA» не несет никакой ответственности.

«Урок крэкинга с помощью OllyDbg»

   Думаю многих интересует как ломаются программы?, каким образом можно обойти регистрацию или как обойти ограничение работы программы? В данной статье я приведу простой пример обхода регистрации, попытаюсь объяснять все очень просто чтоб все поняли. Желательно иметь хоть приблизительное представление о том что такое ассемблер но если и этого багажа знаний у вас нет нестрашно, думаю после этого опыта, вы обязательно выучите азы ассемблера.

Приступим!, для начала качаем весь необходимый софт.
1.Самое главное это отладчик, именно с помощью этой программы мы будем препарировать нашу тестовую программку.
Мы будем использовать отладчик OllyDbg v.1.10.
Качаем тут — http://www.ollydbg.de/odbg200.zip

2.Еще нам необходим Hex редактор, для чего я объясню дальше. Называется программа Xvi32. Можете использовать любой другой.
Качаем тут — http://www.handshake.de/user/chmaas/delphi/download/xvi32.zip.

3.И собственно наша тестовая программа.
Качаем тут — http://daxa.com.ua/rar/TestP.rar

После закачки всего необходимого софта, установите его куда вам угодно. Все программы не требуют установки. Первым делом запускаем наш отладчик OllyDbg , при первом запуске он попросит вас указать пути к UDD и Plugins, поможем ему заходим в Options->Appearance->Directories и прописываем оба пути( просто укажите папку где лежит OllyDbg). Непугайтесь множества окон, для работы нам понадобиться всего 3.

1.CPU
2.Breakpoints
3.Patches

Все остальные окна рекомендую закрыть, чтоб они нам не мешали. Теперь разъясню нашу задачу, нам необходимо либо сделать так чтоб программа принимала любой ключ или вообще не выводила сообщение о регистрации и навсегда забыла о ней :). И так приступим, попробую описать все пошагово.

1.Открываем нашу программу в отладчике. Для этого открываем меню File->Open и выбираем нашу тестовую программу. После загрузки в окне CPU мы увидим вот такую картину.


Это и есть ассемблерный код нашей программы.
Теперь немного объясню некоторые строчки:
PUSH EBP ; Начало другой функции
CALL TestP.00405С60 ; Вызов функции
Этого пока нам будет достаточно.
2.Теперь нам надо найти функцию которая выдает окно с запросом ввода ключа. Для этого выполняем программу пошагово нажимая клавишу F8 до тех пор пока не появиться окошко с запросом ввода. После нескольких нажатий появляеться окошко ввода.

Теперь мы знаем что где-то в этой функции (TestP.004523B8) выводиться наше окошко. Нам необходимо докопаться до функции которая выводить окно,для этого надо зайти в эту функцию. Теперь перед этой строкой CALL TestP.004523B8 нам надо поставить точку останова (Breakpoint) для этого выделяем строку перед ней и нажимаем F2 и видим что в окошко Breakpoints добавилась эта строка.

Далее нажимаем на эту кнопку для того чтоб загрузить нашу программу заново.

Теперь надо дойди до точки останова для этого нажимаем для того чтоб выполнить нашу программу и видим что выполнение остановилось на нашей точке останова. Для того чтоб зайти в функцию нажимаем клавишу F7.

Думаю вы поняли разницу между F8 и F7, первая трассирует программу без захода в функции , вторая с заходом в функции. Видим такую картину.

Нам надо продолжать пока не найдем функцию которая выводит окно и обрабатывает нажатие на кнопку ОК и определяет правильно мы ввели ключ или нет. Продолжим, также нажимаем F8 пока не появиться окно.

Опять перед ней ставим точку останова.

Жмем и опять , видим что выполнение остановилось на нашей первой точке останова, а нам надо ко второй, для этого жмем еще раз , выполнение дойдет до второй точки останова. Заходим в функцию клавишей F7, видим следующее.

Продолжаем дальше, находим очередную функцию

Опять ставим точку останова и возвращаемся сюда, заходим в функцию, думаю вы уже поняли как это делается. После захода в функцию видим следующее.

Продолжаем искать нажимая F8. Походу нажатия F8 мы видим что начинают появляться API функции,

значит мы уже близко. Нажимаем медленно и следим когда появиться окно. Вот что произошло, по ходу трассировки программы в лотке задач появилось наше окно,

вылезло оно на этой строчке,

но при нажатии на него мышкой окно не появляется, уряя значит мы там где нам нужно, именно эта функция рисует окно и где-то тут сверяется введенный нами ключ. Продолжаем дальше трассировать программу (F8!) и видим что на этом месте

какой-то цикл, который постоянно повторяется, у нас уже палец болит держать F8 , а он никак не кончиться, для этого ставим точку останова на первой строке после цикла (MOV DWORD PTR SS:[EBP-8],EAX)

и нажимаем кнопку и видим что окошко полностью нарисовалось, ждет от нас ввода, программа остановилась тут, в цикле. Далее вводим любой ключ, нажимаем ОК.

Окошко закрылось и мы вернулись в окно отладчика, выполнение остановилось на нашей точке останова. Теперь нам надо найти функцию в которой выводит окошко с уведомление что ключ введен неверно. Для этого трассируем (F8) нашу программу до того момента пока не появится окошко с уведомлением.

Тут мы и будем разбираться что к чему. В глаза первым делом кидается строчка это и есть наш правильный ключ, но не надейтесь что в других программах вы так просто его найдете, обычно ключи просто так в памяти не лежат, потому нашей задачей будет сделать так чтоб программа принимала любой ключ! Теперь проанализируем код перед вызовом функции (CALL TestP.00427294) которая выводит окно с уведомлением об ошибке. Первым делом смотрим в окно регистров котрое находиться в окне

И видим что в регистре EAX лежит адрес введенного нами ключа в памяти и соответственно что мы ввели (я ввел 23). Тут все уже немного сложнее и надо иметь хоть небольшие знание основных операторов ассемблера. Думаем так, что программа должна сравнить наш ключ с каким либо еще или проверить его правильность любым другим способом, но для этого она должна вызвать функцию которая это все сделает. Значит ищем приблизительно такую структуру

MOV EAX, … &nbsp//записывает в EAX адрес нашей строки
……………….
CALL …&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp//вызов функции которая проверит правильность нашей функции
JNZ(или JE) …// условный переход (почитайте о них!)

Немного об условном переходе, с помощью этого оператора можно переходить к определенной строке кода, адрес указывается после оператора. Значит после вызова функции если ключ был введен верно после вызова этого оператора он перейдет на строку после которой и запуститься наша программа. Если же нет то будет выполняться код после него. Значит ищем, в глаза сразу бросается такой код

MOV EAX,DWORD PTR SS:[EBP-4]
MOV EDX,TestP.00453BA4
CALL TestP.00404258
JE SHORT TestP.00453B4A

Теперь заново пошагово выполните это кусочек кода и вы увидите что этот оператор
JE SHORT TestP.00453B4A пропускается и никуда нас не перекидывает, значит это и есть наша функция которая проверила наш код и он оказался неверным потому оператор JE никуда нас и неперекинул. Я нибуду вам обьяснять как этот оператор проверяет правильность, мы все делаем «жестко» напролом :). Значит если код будет введен то этот оператор кинет нас по одресу 00453B4A и все будет ок :). Заменяем этот оператор на безусловный переход (JMP) который в любом случае перекинет нас по этому адресу. Посмотрите где этот адрес находиться (выделенная строка синим цветом).

Видим что вызов функции которая выводит уведомление о том что ключ неверен, пропускается.
Для того чтоб заменить строку выделяем её и нажимаем пробел(Space) и заменяем это


на это.

Видим что строка JE SHORT TestP.00453B4C заменилась и в окошке Patches добавилась строка.

Теперь проверяем или работает. Нажимаем кнопочку , в окне Breakpoints нажимаем правой клавишей мышки и в меню выбираем Disable All. Далее в окне Patches на нашей строке нажимаем правой и в меню выбираем Apply Patch. После этого жмем кнопку , выводиться окошко с запросом ключа, вводим любой ключ, нажимаем ок и наша программа зарегистрирована. Конкретно эта программа будет всегда спрашивать ключ, так как это просто тест, а реальная программа записала бы себе что вы правильно ввели ключ.
Приметка! Тут удалось сразу найти нужный нам кусочек кода, но не всегда все будет так просто. Иногда придется пробовать по очереди все структуры такого типа.

3.Последний шаг, надо зашить патч в программу для этого нам и нужен Hex редактор.

Итак открываем его и выбираем нашу программу, откроеться туча шестнадцетиричных цифр. Нам надо найти строку JE SHORT TestP.00453B4A в шестнадцатеричном виде и заметь её на нашу. Я думаю вы заметили что в окне CPU(OllyDbg) напротив каждой строки пишется её шестнадцатеричный вид. Для того чтобы точно найти эту строку ищем так, не просто вводим искать 74 2B, а берем еще предыдущую строку кода и ищем так E8 3B 07 FB FF 74 2B

, в exe файле код идет цепочкой, по этому мы и берём предыдущую строку. Для чего же мы это делаем , просто такая маленькая строка как 74 2B может повторяться несколько раз потому мы и берем еще предыдущую строку чтоб найти именно то что нам нужно. Далее смотрим как в шестнадцатеричном коде выглядит наша видоизмененная строка JMP SHORT TestP.00453B4A, выглядит она так EB 2B вот мы и заменяем найденную строку на нашу, для это нажимаем кнопочку и заменяем строки так

Сохраняем изменения , закрываем редактор. Вот и все, данная программа будет принимать любой ключ, что и требовалось сделать. Предлагаю вам попробовать сделать так чтоб программа вообще не выводила запрос на ввод ключа.

ВАЖНО!!

Программа для взлома софта ollydbg 2.0.1 rus — как пользоваться!

Прежде чем приступать к манипуляциям c программами необходимо проверить или *.exe файл небыл запакован. Для этого вам понадобиться утилита PEiD. Как это все делается тема отдельной статьи, предлагаю в этом разобраться вам самим.

Автор: Филиппов Кирилл (filipp)

Сегодня существует olly debugger инструкция для потребителей в любой области – спорте (как правильно делать гимнастику), психологии (как всем понравиться), здоровье (полезные и вредные свойства продуктов питания), красоте (правильное нанесение на кожу косметических средств).

Отладчик OllyDbg

Оно сообщает информацию о важных моментах и этапах, что, как, когда нужно делать, употреблять, чтобы получить нужный эффект.

Описание нового оборудования, его характеристики, правила использования содержит nv items инструкция по эксплуатации. Если вы купили или вам подарили бытовой прибор, но вы толком не знаете, как с ним обращаться, то для таких случаев существует брошюра с инструкциями. Эта небольшая книжечка содержит все необходимые сведения о товаре. Вы узнаете, как правильно им пользоваться, набор функций, как подключить, настроить. Чем подробнее будет составлено описание предмета, тем более оно будет понятно пользователю.

Актобе, Алматы, Ангарск, Армавир, Архангельск, Астана, Астрахань, Атырау, Балаково, Балашиха, Барнаул, Белая Церковь, Белгород, Бийск, Бобруйск, Братск, Брест, Брянск, Великий Новгород, Винница, Витебск, Владивосток, Владикавказ, Владимир, Волгоград, Волжский, Вологда, Воронеж, Гомель, Горловка, Гродно, Грозный, Дзержинск, Днепродзержинск, Донецк, Екатеринбург, Житомир, Запорожье, Зеленоград, Иваново, Ивано-Франковск, Ижевск, Йошкар-Ола, Иркутск, Казань, Калининград, Калуга, Караганда, Кемерово, Киев, Киров, Кировоград, Комсомольск-на-Амуре, Костанай, Кострома, Краматорск, Краснодар, Красноярск, Кременчуг, Кривой Рог, Курган, Курск, Кызылорда, Липецк, Луганск, Луцк, Львов, Магнитогорск, Макеевка, Мариуполь, Махачкала, Минск, Могилёв, Москва, Мурманск, Набережные Челны, Нальчик, Нижневартовск, Нижнекамск, Нижний Новгород, Нижний Тагил, Николаев, Новокузнецк, Новороссийск, Новосибирск, Одесса, Омск, Орел, Оренбург, Орск, Павлодар, Пенза, Пермь, Петрозаводск, Петропавловск, Подольск, Полтава, Прокопьевск, Псков, Ровно, Ростов-на-Дону, Рыбинск, Рязань, Самара, Санкт-Петербург, Саранск, Саратов, Севастополь, Семей, Симферополь, Смоленск, Сочи, Ставрополь, Старый Оскол, Стерлитамак, Сумы, Сургут, Сыктывкар, Таганрог, Тамбов, Тараз, Тверь, Тернополь, Тольятти, Томск, Тула, Тюмень, Улан-Удэ, Ульяновск, Уральск, Усть-Каменогорск, Уфа, Хабаровск, Харьков, Херсон, Химки, Хмельницкий, Чебоксары, Челябинск, Череповец, Черкассы, Чернигов, Черновцы, Чита, Шахты, Шымкент, Энгельс, Южно-Сахалинск, Якутск, Ярославль

OllyDbg — бесплатный 32 битный отладчик пользовательского уровня для операционных систем Windows, предназначенный для анализа и модификации откомпилированных исполняемых файлов и библиотек, работающиx в режиме пользователя (ring-3).

OllyDbg выгодно отличается от классических отладчиков (таких, как SoftICE) простым интерфейсом, интуитивной подсветкой специфических структур кода, простотой в установке и запуске. Для того, чтобы разобраться в принципе работы OllyDbg, достаточно лишь базовых знаний в области языка ассемблера.

Последняя версия программы на старом движке — 1.10, не обновлялась с мая 2004 года. Однако, 12 ноября2006 года на официальном сайте был опубликован анонс новой, второй версии продукта.

как пользоваться ollydbg

Со 2 июня 2010 года доступна первая новая версия OllyDbg 2.0 без приставок «бета», однако, пока новая версия имеет малую ценность из-за отсутствия поддержки плагинов.

OllyDbg самый популярный отладчик в последнее время, именно им чаще всего пользуются как начинающие так и опытные крэкеры в наши дни. Последнее время также написано много статей, описывающих его использование. Особенно удобен тем, что дизассемблирует программу «на лету» и позволяет вести анализ программы когда её исходники вам недоступны. Отладчик отображает значения регистров, может показывать содержимое памяти, распознает процедуры, API-функции, переходы, строковые и цифровые константы, имеется возможность переименовывать переменные и делать комментарии в дизассемблированном коде, сделанные вами патчи кода отладчик умеет записывать прямо в исполняемый файл.

Возможности

  • Поддерживаемые процессоры: вся серия 80×86, Pentium и совместимые; расширения MMX, 3DNow! и SSE до версии SSE4 включительно (SSE5 пока не поддерживается).
  • Поддерживаемые форматы данных: hex-код, ASCII, юникод, 16- и 32-битные целые числа со знаком и без знака, 32-, 64- и 80-битные числа с плавающей запятой (float).
  • Способы отображения дизассемблированного кода: MASM, IDEAL, HDA.
  • Мощный анализатор кода, распознающий процедуры, циклы, ветвления, таблицы, константы и текстовые строки.
  • Развёрнутая система поиска: поиск всех возможных констант, команд, последовательностей команд, текстовых строк и ссылок в коде на данный адрес.
  • Распознание и расшифровка более двух тысяч типичных функций WinAPI и языка C.
  • Распознание и расшифровка PE-заголовка.
  • Эвристический анализ стэка, распознание адресов возврата в родительскую процедуру, SEH-блоки.
  • Простые, условные и протоколирующие точки останова (брейкпоинт).
  • Пошаговая отладка с протоколированием хода выполнения (run trace).
  • Индивидуальный файл конфигурации (UDD) для каждого отлаживаемого приложения.
  • Возможность расширения функционала всемозможными плагинами, написанных сторонними разработчиками.

Рабочее окно отладчика Olly

На рисунке выделено 9 областей, представляющих из себя инструменты информирования и интерактивности, которые предоставляет OllyDbg.

  • 1 (красным) — виртуальные адреса
  • 2 (зеленым) — машинный код
  • 3 (голубым) — дизассемблированный листинг (команды ассемблера)
  • 4 (оранжевым) — комментарии отладчика
  • 5 (фиолетовым) — регистры общего назначения
  • 6 (желтым) — EIP регистр (показывает виртуальный адрес следующей выполняемой команды)
  • 7 (коричневым) — флаги и регистр флагов
  • 8 (синим) — дамп памяти
  • 9 (малиновым) — стэк

Официальный сайт

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *