Я работаю над анализом двоичного кода и реверс-инжинирингом над x86 32-bit
Ubuntu 14.04
. Я использую g++ 4.8.4
для компиляции программы C++
.
Мне интересно, можно ли запретить компилятору использовать регистры сегментов. Например, gs
.
Пример использования приведен ниже:
mov %gs:0x8,%ebx
Я знаю, что некоторые сегментные регистры используются для проверки канареек стека. Однако, даже если бы я отключил такую проверку (-fno-stack-protector
), всё равно вариантов использования сегментных регистров довольно много...
%es:(%edi)
для STOS?? Если это так, в вашем коде нет префиксов переопределения сегментов, это просто ваш дизассемблер слишком многословен. Вместо этого посмотрите на вывод asm компилятора (gcc -O3 -S
): stackoverflow.com/questions/38552116/ - person Peter Cordes   schedule 09.09.2016