Как работает bugoga??

Тема в разделе "WASM.ASSEMBLER", создана пользователем drunk_speech, 26 мар 2007.

Статус темы:
Закрыта.
  1. drunk_speech

    drunk_speech New Member

    Публикаций:
    0
    Регистрация:
    26 мар 2007
    Сообщения:
    9
    Создаем файлик с содержанием bugoga, сохраняем как exe и запускаем... Наблюдаем беспорядочное перемещение курсора по экрану. Вопрос: КАК???? ))

    (если ничего не происходит с первого раза - запустите еще один екземпляр приложения)


    дезасм:


    bound si,[di][00067]
    outsw
    popa


    bound проверяет, лежит ли указанный индекс, рассматриваемый, как число со знаком, внутри заданных вторым операндом границ.
    Если индекс выходит за границы массива снизу или сверху, генерируется прерывание с вектором 5

    INT 05H, используется в PC для вызова программы ROM BIOS, печатающей экран.


    Судя по всему где-то здесь и "происходит магия" ) Кто-нибудь может дать более точное объяснение?
     
  2. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    ну хз. вообще-то пятое прерывание по bound'у - оно типа "fault", если можно так выразиться для реального режима конечно... вообщем сохраняется адрес текущей инструкции, а не следующей. при iret повторяется опять bound, опять прерывание 5 и т.п.... вообщем получается бесконечный цикл.
    только вот я чето не помню, чтобы 5 прерывание отвечало за вывод на экран...
     
  3. drunk_speech

    drunk_speech New Member

    Публикаций:
    0
    Регистрация:
    26 мар 2007
    Сообщения:
    9
    Great Если так, то это по крайней мере, объясняет откуда берется вечный луп...
    В какую сторону копнуть, чтобы узнать подробнее про

     
  4. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    drunk_speech
    А в отладчике пробовал запускать?
     
  5. twgt

    twgt New Member

    Публикаций:
    0
    Регистрация:
    15 янв 2007
    Сообщения:
    1.494
    Под дебагом не трейсится, просто запускаются
     
  6. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Копать в сторону описания прерываний реального режима :) Можно сказать, что INT 5 (bound) - зачаток fault-исключений.
     
  7. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    drunk_speech
    А ты уверен, что этот код выполняется, тем более что он и не дебажится. Сдаётся мне что это разновидность сплоита. Мы подсовываем загрузчику какую-то хрень, и он непонятно как работает, может даже что-то и показывает. Но точно сказать можно только отдибажив загрузчик ОС. А листинг дизасма IMHO тут не причём, и смотреть на него бестолку.
     
  8. drunk_speech

    drunk_speech New Member

    Публикаций:
    0
    Регистрация:
    26 мар 2007
    Сообщения:
    9
    Может и так... То, что на сп2 нужно запускать 2 экземпляра приложения, и при закрытии 1-го, 2-й умирает тоже - можно считать свидетельством в пользу этого мнения... Это еще и самый простой ответ... Но в чудеса, имхо, имеет смысл верить не чаньше, чам разум капитулирует полностью.
     
  9. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    drunk_speech
    Загрузчик винды довольно чудесатый сам по себе. Или ты думаешь, что это валидный файл?
    По идее такого быть не должно, но пути винды не исповедимы -).
     
  10. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    если его переименовать в COM будет тоже самое. Видимо, если нету MZ-заголовка EXE воспринимается как COM и напрямую грузится и вызывается.
     
  11. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Great
    Это ещё не о чём не говорит, хотя и вполне может быть. Загрузчик тот же и там и там.
    У меня отладчика сейчас под рукой нету, так что проверить не могу.
     
  12. drunk_speech

    drunk_speech New Member

    Публикаций:
    0
    Регистрация:
    26 мар 2007
    Сообщения:
    9
    Booster

    Да, я думаю, что это валидный файл. Не PE и не MZ, разумеется, но как исполнимый бинарник (.com) вполне сойдет. Кстати, если был бы инвалидный - загрузчик ругнулся бы.
     
  13. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    drunk_speech
    Ты в этом так уверен, как будто сам его писал.
    А если валиден, загони его в отладчик да и глянь что он делает.
    А если он не трейсится, то какой же он валид.
     
  14. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Booster
    У меня трейсится под AfdPro
     
  15. drunk_speech

    drunk_speech New Member

    Публикаций:
    0
    Регистрация:
    26 мар 2007
    Сообщения:
    9
    "Валидный" в моем понимании означает "содержит корректный, с точки зрения интерпретируемости процессором, код", раз он нормально дезасмится - значит валидный, априори. Но не секрет, что не всякий валидный код можно гонять под отладчиком... и дезасмится не всякий...
     
  16. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Если нормально перевести на руский "валидный файл", смысл немного другой )
    По твоему получается, что любая абракадабра является валидным файлом
     
  17. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    drunk_speech
    У меня были случаи обратного, загрузчик может разные фортили выбрасывать.
     
  18. Vov4ick

    Vov4ick Владимир

    Публикаций:
    0
    Регистрация:
    8 окт 2006
    Сообщения:
    581
    Адрес:
    МО
    Всё, что не начинается с MZ и менее чем 64 КБ размером является COM-файлом и его можно запустить, хоть текстовик, хоть что. Тип запускаемого файла всегда определялся не по расширению, а по заголовку (кроме пакетных). INT 5 действительно выполняет печать экрана (генерится при нажатии PrintScreen), но работает ли это под NTVDM сказать не могу, надо проверять - посмотреть хотя бы начало INT 5 в отладчике.
     
  19. crypto

    crypto Active Member

    Публикаций:
    0
    Регистрация:
    13 дек 2005
    Сообщения:
    2.533
    Вот тут кое-что проясняется
    http://portal.migtel.ru/forum.php?file=viewtopic&p=124598

    Последнее сообщение на эту тему:

    Добавлено
    Гуглите bugoga...
     
  20. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    господи.. какая бага. нету никакой баги. все так, как и должно быть
     
Статус темы:
Закрыта.