Использование Olly. Dbg. Как запустить сеанс отладки. Самый простой путь состоит в том, чтобы запустить Olly. Dbg, выбрать File - > Open (Файл - > Открыть) и выбрать программу, которую Вы хотите отладить. Если эта программа требует каких- нибудь параметров командной строки, напечатайте их в поле внизу диалогового окна, или выберите одну из строк с параметрами, которые Вы использовали в предыдущих сеансах.
Исследование типовой защиты в отладчике OllyDbg. Воспользуемся отладчиком OllyDbg (см. Сначала исследуем защиту программы CRACKME1.EXE без применения. Исследование проводится с помощью известного отладчика OllyDbg Software license restrictions versus Ollydbg - The Basics. Введение в крэкинг с нуля, используя OllyDbg - Глава 1 . Глава посвящена исследованию программ, написанных на Visual Basic.
Исследование проводится с помощью известного отладчика OllyDbg. Цель: TurboLaunch 5.1.3 Инструменты: OllyDbg 1.10, Dup2 (для Разработка
Olly. Dbg может делать отладку автономных DLL. В этом случае Olly. Dbg создает и запускает маленькое приложение, которое загружает библиотеку и, по вашему запросу, вызывает экспортируемые функции. Если Вы хотите перезапустить последнюю отлаживаемую программу, просто нажмите Ctrl+F2 (это горячая клавиша для перезапуска программы), и Olly. Dbg запустит её с теми же самыми параметрами.
Альтернативно, выберите меню File, а затем программу из истории. Вы можете также перетащить исполняемый файл или DLL из Проводника Windows и бросить его значок на Olly. Dbg. Конечно, Вы можете определить название отлаживаемой программы и ее параметры в командной строке при запуске Olly.
Dbg. Например, Вы можете создать на рабочем столе ярлык, указывающий Olly. Dbg, выбрать Свойства, перейти к Ярлыку програмы, и добавить название программы в командную строку. Каждый раз, когда Вы дважды щелкаете этот ярлык, Olly. Dbg автоматически запустит вашу программу.
Обратите внимание, что DLL не поддерживают командную строку. Вы можете присоединить Olly. Dbg к запущенному процессу. Выберите File - > Attach (Файл - > Присоединить), и выберите процесс из списка. Заметьте, однако, что после того, как Вы закрываете Olly. Dbg, этот процесс тоже завершится.
Никогда не пробуйте присоединяться к системному процессу, это может закончиться сбоем операционной системы. Olly. Dbg может действовать как отладчик JIT « just - in - time » . Это требует регистрации в системном реестре. Выберите Options - > Just- in- time debugging (Опции - > Отладка «just- in- time»), и в появившемся диалоге выберите «Make Olly.
Dbg just- in- time debugger» (Сделать Olly. Dbg отладчиком «just- in- time»). Теперь, когда какое- нибудь приложение даст сбой, Вас спросят, хотите ли Вы произвести отладку этого приложения. Тогда операционная система запустит Olly. Dbg, который остановится непосредственно в точке, где произошёл сбой. Или, если Вы выбрали присоединение без подтверждения, Olly.
Dbg запустится без всяких вопросов. Чтобы восстановить предыдущий отладчик «just- in- time», нажмите соответствующую кнопку в упомянутом диалоге и все. Также существует другая возможность добавлять Olly.
Dbg в контекстное меню, связанное с исполняемыми файлами в Проводнике Windows . В главном меню Olly. Dbg выберите «Options. Впоследствии Вы можете щелкнуть правой кнопкой мыши на исполняемом файле, или DLL и выбрать Olly. Dbg из меню. Эта опция создает 4 ключа в системном реестре: HKEY.
Olly. Dbg не может отлаживать . NET приложений. Заметьте, что, если Вы используете Windows NT, 2. XP, Вам, вероятно, придется иметь права администратора, чтобы отлаживать программы. Брейкпоинты (контрольные точки)Olly. Dbg поддерживает несколько видов брэйкпоинтов: - Обычный брейкпоинт , первый байт команды, на которой Вы хотите остановиться, заменяется специальной командой INT3 (Ловушка для отладчика). Вы можете установить этот брейкпоинт, выбрав необходимую команду в панели Дизассемблер и нажав F2 , или из контекстного меню. Когда Вы нажмете F2 второй раз, брейкпоинт будет снят.
Заметьте, что программа останавливается перед выполнением команды с установленным брейкпоинтом. Число INT3 брейкпоинтов, которые Вы можете установить, неограничено. Когда Вы закрываете отлаживаемую программу, или Отладчик, Olly.
Dbg автоматически сохраняет брейкпоинты на диск. Никогда не пробуйте устанавливать этот тип брейкпоинта на данные или в середине команды! Olly. Dbg предупредит Вас, если Вы пытаетесь установить брейкпоинт вне раздела кода. Вы можете выключить это предупреждение в опциях Безопасности. В некоторых случаях Отладчик может вставлять собственные временные INT3 брейкпоинты. Когда Отладчик сталкивается с этим брейкпоинтом, он оценивает условие и если результат отличен от нуля, или условие недопустимо, останавливает отлаживаемую программу. Однако, вероятность переполнения, вызванного неправильным условным брейкпоинтом очень высока (главным образом из- за времени ожидания операционной системы).
На PII 4. 50 под Windows NT Olly. Dbg обрабатывает до 2. Важный случай условного брейкпоинта - остановка на сообщениях Windows (подобно WM. Для этой цели Вы можете использовать псевдопеременную MSG вместе с надлежащей интерпретацией параметров. Если окно активно, смотрите брейкпоинт сообщения, описанный ниже. Например, Вы можете установить брейкпоинт с записью на некоторую оконную процедуру, чтобы регистрировать все вызовы этой процедуры (CALL), или только идентификаторы полученных WM.
Брейкпоинт с записью (logging breakpoint) такой же быстрый как и Брейкпоинт с условием (сonditional breakpoint), и конечно намного легче просмотреть несколько сотен сообщений в окне журнала, чем нажимать F9 несколько сотен раз. Таким образом, Вы можете выбрать более подходящую интерпретацию для вашего условия. Вы можете устанавливать счетчик проходов - счетчик, который уменьшается каждый раз, когда выполняется условие остановки. Если счетчик прохода перед уменьшением не равен нулю, Olly. Dbg продолжит выполнение. Рассмотрим цикл (loop), который выполняется 1. Поставим брейкпоинт в середине и установим значение 9.
Olly. Dbg прервётся на последней итерации. В дополнение, условный брейкпоинт с записью (conditional logging breakpoint) позволяет Вам передать одну или несколько команд плагинам.
Например, это может быть запрос к плагину командной строки, чтобы изменить содержимое регистра и продолжить. Вы можете установить его в окне Windows. Если Вы производите пошаговую трассировку (hit trace, брейкпоинт будет удален, а адрес, будет помечен как пройденный, после того, как будет достигнута команда. Если Вы используете обычную трассировку (run trace), Olly. Dbg добавит запись в журнал трассировки, а брейкпоинт останется активным.
Olly. Dbg позволяет установку только одного брейкпоинта на память. Вы выбираете некоторую часть памяти в панелях Дизассемблер или Дамп в окне CPU и используете контекстное меню, чтобы установить брейкпоинт на память. Предыдущий брейкпоинт на память, если он был, будет автоматически удалён.
У вас есть две доступные опции: прерваться на доступе к памяти (чтение, запись, или выполнение в памяти) или только на записи . Чтобы установить этот брейкпоинт, Olly. Dbg изменяет аттрибуты блоков памяти, содержащих выделение. На 8. 0x. 86- совместимых процессорах память распределена и защищена в блоках по 4. Если Вы выбираете даже отдельный байт, Olly.
Dbg должен будет защитить целый блок. Это может привести к возникновению множества ложных тревог с огромным переполнением. Используйте этот вид брейкпоинта с осторожностью.
Некоторые системные функции (особенно под Windows 9. Вам установить 4 аппаратных брейкпоинта. В отличие от брейкпоинта на память, аппаратные брэйкпоинты не замедляют скорость выполнения, но охватывают только до 4 байт.
Olly. Dbg может использовать аппаратные брейкпоинты вместо INT3 при выполнении или сканировании кода. Вы устанавливаете его в окне Память на целом блоке памяти из контекстного меню или, нажимая F2 . Этот брейкпоинт особенно полезен, если Вы хотите поймать вызов или возвращение к некоторому модулю.
После того, как выполняется остановка, брейкпоинт удаляется. Вы можете остановить трассировку (run trace), если EIP входит в некоторый диапазон или покидает другой диапазон, или некоторое условие истинно, или когда команда соответствует одному из указанных образцов, или когда команда является подозрительной, или после того, как прослежено указанное число команд. Обратите внимание, что эта опция может значительно (до 2. Olly. Dbg может также останавливать выполнение программы на некоторых событиях отладки, подобно загрузке или выгрузке DLL, запуску или уничтожению потока, или когда программа посылает отладочную строку (debugstring).
Дамп. Окно Дампа отображает содержимое памяти или файла. Вы можете выбирать один из нескольких определенных форматов: byte, text, integer, float, address, disassembly or PE Header. Все окна дампа поддерживают резервное копирование, поиск и функции редактирования. Область окна Дампа окна CPU позволяет Вам определять метки, устанавливать брейкпоинты на памяти, находить ссылкик данным в выполняемом коде и открытом изображении выбранной памяти в исполняемом файле (. Меню Дампаотображает только относительный набор доступных команд.
Если доступно резервное копирование, нажмите Address/Backup в панели, чтобы переключить режим отображения между резервным копированием и нормальным видом. Другие кнопки на панели позволяют Вам изменять режимы дампа. Подобно окну Дизассемблер, Дамп сохраняет длинную историю посещенных местоположений памяти. Вы можете передвигаться по истории нажимая кнопки ' + ' или ' - '.
Чтобы листать данные, удерживайте клавишу Ctrl , и нажимайте стрелки Up/Down . Модули. Окно выполняемых модулей (сочетание клавиш: Alt+E ) перечисляет все модули, загруженные в настоящее время отлаживаемым процессом. Это окно также отображает полезную информацию, подобно размеру модуля, адресу входа, версии модуля или пути к исполняемому файлу.
Некоторая информация, например десятичный размер модуля, символическое название точки входа и т. Чтобы увидеть эти данные, увеличьте ширину соответствующих столбцов. Контекстное меню поддерживает следующие опции: Actualize - заново сканирует модули и убирает подсветку из новых модулей. В большинстве случаев, Olly. Dbg заботится о себе.
View memory (Просмотреть память) - открывает окно Памяти и прокручивает его к первому блоку памяти, принадлежащему отображаемому модулю. View code in CPU (Просмотр Кода в CPU) - открывает выполняемый код модуля в Дизассемблере. Follow entry (Перейти ко входу) - следует за точкой входа в модуль в Дизассемблере Dump data in CPU (Данные Дампа в CPU) - открывает раздел данных модуля в Дампе CPU.