ЗАГ или 33 C0 C3 в msvc без crt

Тема в разделе "WASM.BEGINNERS", создана пользователем galenkane, 5 фев 2020.

  1. galenkane

    galenkane Active Member

    Публикаций:
    0
    Регистрация:
    13 янв 2017
    Сообщения:
    269
    Открыл сэмпл в иде и вижу такое https://i.imgur.com/w14Smtk.png

    Что это такое? Русский язык в компиляторе или ида сама добавляет?
     
  2. _edge

    _edge Well-Known Member

    Публикаций:
    1
    Регистрация:
    29 окт 2004
    Сообщения:
    631
    Адрес:
    Russia
    xor eax,eax + retn ?
    иными словами, на Си, return(0);
     
    galenkane нравится это.
  3. galenkane

    galenkane Active Member

    Публикаций:
    0
    Регистрация:
    13 янв 2017
    Сообщения:
    269
    да, оно. то есть ида генерит такую надпись
     
  4. HoShiMin

    HoShiMin Well-Known Member

    Публикаций:
    5
    Регистрация:
    17 дек 2016
    Сообщения:
    1.422
    Адрес:
    Россия, Нижний Новгород
    Эти байты совпали с русскими символами в ASCII-таблице, ида их и показала. Никто ничего не "генерит" изниоткуда. Байты можно интерпретировать, как числовые значения в HEX, а можно, как буквы в какой-либо кодировке. В HEX-окошке ида показывает обе интерпретации.
     
    galenkane и UbIvItS нравится это.
  5. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
    _edge,

    Пустой стаб в буфере заполненном нулями, в начале секции ?

    Весьма странно. А где сам семпл ?
     
  6. TrashGen

    TrashGen ТрещГен

    Публикаций:
    0
    Регистрация:
    15 мар 2011
    Сообщения:
    1.173
    Адрес:
    подполье
    semple prevate
     
  7. f13nd

    f13nd Well-Known Member

    Публикаций:
    0
    Регистрация:
    22 июн 2009
    Сообщения:
    1.954
    Если напейсать программу с пустым main() и вообще без всякой мишуры, она примерно так и будет выглядеть.
     
  8. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
    f13nd,

    Компилер занопит, обычно заинтит не используемую область. Что бы произвольная передача управления привела к ловушке.
     
  9. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.241
    Зависит от параметров компиляции, это не обязательно так.
     
  10. galenkane

    galenkane Active Member

    Публикаций:
    0
    Регистрация:
    13 янв 2017
    Сообщения:
    269
    Думаю смысла дальше тему продолжать нет.

    Параметры компиляции

    /sdl-
    /GS-
    /NOCOFFGRPINFO
    /NODEFAULTLIB
    /SAFESEH:NO
    Entry point: main

    main функция пуста
     
  11. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
    Rel,

    Это ведь самая простая защита от op-атак, заполнить пространство между процедурами и не используемое int'ом. Если этого нет, то это ошибка сборки, либо как ты говоришь спец опция, это может быть нужно только если кодовый буфер, те код будет изменяться.
    --- Сообщение объединено, 6 фев 2020 ---
    galenkane,

    > main функция пуста

    Я так понял что это ты смотрел не какой то софт семпл, а свою пустую сборку. В твоей теме про какие то дебаг плаги ты сказал что нуби и хочешь что то реализовать на сишке. Нужно в начале освоить компилер, это хорошая для тебя тема и закрывать её бессмысленно, по простой причине - если ты столь простое спрашивал, то будет бесконечный поток вопросов, а тут как раз для этого твоя же тема :preved:
     
    galenkane нравится это.
  12. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.241
    Indy_, я понимаю, но например, если ты складываешь код и данные в одну секцию, то во многих случаях компилятор не будет такое выравнивать с помощью инт3. Возможно есть и другие ситуации, но это первое, что пришло в голову.
     
  13. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
    Rel,

    Именно потому что всё в кучу мешается, данные и код и есть возможность(по этому) op-атак. Это как бы ошибка в самой архитектуре софтверной, формата. Из за этих недоработок вводится множество аппаратных фиксов, как тот же теневой стек. Что бы управление не передавалось на данные, хотя такую блокировку можно сделать через обычную адресную трансляцию, но пе формат изначально защиту не содержит. Поэтому ради обратной совместимости создаётся костыль и для него есчо один, так рекурсивно и совместно(софт и хард вендоры, плывут в одной лодке).
     
  14. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.241
    Вся история человечества состоит из костылей надстроенных над костылями, это нормально.
     
    hiddy нравится это.
  15. galenkane

    galenkane Active Member

    Публикаций:
    0
    Регистрация:
    13 янв 2017
    Сообщения:
    269
    вы правы
     
    Indy_ нравится это.