Как я могу сделать Arithmeti c Underflow в этом фрагменте кода? - PullRequest
0 голосов
/ 28 мая 2020

Я работаю над некоторыми тестами уязвимостей с помощью Visual Studio 2019, и мне сложно получить этот последний.

Я видел, что есть еще один пост об этом, но я хотел бы получить aritmeti c переполнение в данном случае, в частности, без плавающей точки.

Я перехожу к объяснению проблемы:

Зная, что unsigned char имеет диапазон от 0 до 255, я намерен превышают нижний диапазон. Чтобы достичь этого, я использовал для l oop, чтобы я мог следить за поведением программы с точками останова и отладчиком.

Я провел аналогичный тест с Arithmeti c Overflow, и произошло то же самое, из-за этого я был вынужден преувеличить операцию arithmeti c, чтобы окончательно превысить верхний предел и получить, наконец, переполнение. Поэтому я думаю, что сам компилятор выполняет какие-то переделки, чтобы предотвратить такие сбои и таким образом «защитить» программиста.

Это код:

int main()
{
    unsigned char a = 10;
    printf("%hhu\n", a);
    for (int cont =100; cont > 0; cont--) 
    {
        a -= 1;
    }
    printf("%hhu\n", a);
    return  0;
}

Я бы например, с одной стороны, чтобы иметь возможность получить недополнение aritmeti c, а с другой стороны, знать, является ли это какой-то функциональностью визуальной студии и можно ли каким-либо образом отключить ее, так как я хотел бы компиляция кода как такового, без какой-либо корректировки.

Всем спасибо! До скорой встречи.

...