Сейчас на форуме: Rio (+5 невидимых) |
![]() |
eXeL@B —› Вопросы новичков —› Трассировка в debug -> дошёл до int 21 -> ...сколько в "int 21" команд? Я перебрал 1 |
Посл.ответ | Сообщение |
|
Создано: 28 июня 2008 10:16 · Поправил: zayats · Личное сообщение · #1 То есть я понимаю, по int 21 мы вызываем некоторую встроенную функцию, которая в зависимости от содержания DX и AH выведет нам на экран строку. Так же я понимаю, что int 21 сложна и состоит из других команд. Из скольки? Вот простая программа pr.com, набранная в Hiewе mov ah, 09h mov dx, 0109h int 21 int 20 <текст строки, заканчивающийся символом $> Дальше в cmd команда debug pr.com Потом трассируем (t <Enter>) Трассировке подлежит толкьо первых 3 шага, а потом начинается непонятно что (я так думаю, составные int 21, c какими-то зашкаливающими адресами). Я их перебирал-перебирал, перевалил за 100 и плюнул. Ребята, сколько итх там всего? Увижу я наконец, с помощью трассировки сою строку и вожделенное int 20? По pr.com строка выводится без нареканий. Отладчиком CodeView не пользуюсь пока- там свои заморочки, с ним отдельно разбираться надо. debug- это отладчик, вcтроенный в Windows XP ![]() |
|
Создано: 28 июня 2008 11:26 · Поправил: tempread · Личное сообщение · #2 Если я правильно понимаю, то исследуется код под операционку DOS(а винда это все дело эмулирует). Существует таблица адресов функций, которые будут вызываться при выполнении команды INT. Т.е. при вызове INT 21 будет взят адрес из этой таблицы( с ячейки [адрес начала таблицы+21*4]) и туда передано управление. Упрощенно можно понимать эту таблицу,как функции,предоставляемой программам операционной системой DOS. int,при трассировке, можно разценивать как call. Только call обычно делается в пределах кода своей программы, а int вызывает внешнюю функцию. Очень часто DOS'овкие int'ы обращаются к BIOS'овским int'ам(т.е. обработчиики прописаны в самом BIOS), которые выполняют все на более низком уровне(с точки зрения алгоритма). ![]() |
|
Создано: 28 июня 2008 15:14 · Поправил: MACKLIA · Личное сообщение · #3 tempread пишет: Существует таблица адресов функций, которые будут вызываться при выполнении команды INT. Она называются таблица векторы прирывания . Вектор прерывания — ячейка памяти, содержащая адрес обработчика прерывания ,который выполняет работу по обработке события ,а затем возвращает управление в прерванный код. tempread пишет: int,при трассировке, можно разценивать как call. можно ![]() tempread пишет: Только call обычно делается в пределах кода своей программы, а int вызывает внешнюю функцию. int конечно вызывает внешнюю функцию ,но насчет call это не обязательно. ----- Что один человек сделал , другой всегда сломать может... ![]() |
|
Создано: 01 июля 2008 16:03 · Личное сообщение · #4 А поискать лень? yandex.ru/yandsearch?rpt=rad&text=%D0%BE%D0%BF%D0%B8%D1%81%D0%B0%D0%BD%D0%B8%D0%B5%20%D0%BE%D1%82%D0%BB%D0%B0%D0%B4%D1%87%D0%B8%D0%BA%D0%B0%20debug (Используй команду P - трассировка без захода в функции). Слишком много у тебя вопросов, на которые ответ находится в первой строчки поисковика. zayats пишет: Отладчиком CodeView не пользуюсь пока- там свои заморочки, с ним отдельно разбираться надо Дело, конечно, твоё, но дальше будет слишком трудно привыкать к нормальной отладке в Ollydbg. На будущее: если поиск не помогает, спрашивай у меня через личные сообщения. ----- Всем привет, я вернулся ![]() |
|
Создано: 01 июля 2008 17:44 · Поправил: MACKLIA · Личное сообщение · #5 Bitfry пишет: Дело, конечно, твоё, но дальше будет слишком трудно привыкать к нормальной отладке в Ollydbg. Так может лучше с него и начинать -Цикл статей «Введение в крэкинг с нуля, используя OllyDbg» http://wasm.ru/series.php?sid=17 http://wasm.ru/series.php?sid=17 или хотя бы изучать параллельно. ----- Что один человек сделал , другой всегда сломать может... ![]() |
|
Создано: 01 июля 2008 21:43 · Личное сообщение · #6 |
![]() |
eXeL@B —› Вопросы новичков —› Трассировка в debug -> дошёл до int 21 -> ...сколько в "int 21" команд? Я перебрал 1 |