char buf[10];
if (argc > 1)
strcpy(buf, argv[1]);
return 0;
}
почему когда я запускаю её от какого-то очень большого аргумента (символов 30-40+), то программа НЕ!! вылетает с ошибкой?
Потому что ub
Да, запись за выделенную границу это уб
Ещё 1 вопрос: моя конечная цель: посмотреть на то, как падает программа с buffer overflow в ассемблеровских инструкциях, для этого я думал использовать ollydbg. единственный случай, когда эта программа падает - когда она написана на visual studio, но ollydbg пишет, что она "module has entry point outside the code" и вместо него запускает что-то другое, не эту программу. та же программа в dev-c++ не запускается в ollydbg вообще, а в min-gw запускается и вроде всё нормально, но сама программа имеет undefined behavior и не ломается... как мне выполнить эту цель? это невозможно?
Я тебе уже выше ответил, может падать может нет, как повезет
а как гарантировать падение? или как дизассемблировать exe на visual studio?
> как дизассемблировать exe на visual studio alt+8 в отладчике
Гарантировать что-то при UB нельзя На то оно и UB
что-то не получается... от этого сочетания ничего не происходит...
во время работы отладчика
нет, не работает... и во время работы отладчика и дебагера тоже
Обсуждают сегодня