Можно ли для тех же байтов машинного кода выяснить, работают ли они в режиме 32 или 64 бит, а затем делать разные вещи?
то есть. напишите polyglot машинный код.
Обычно вы можете обнаружить во время сборки с помощью макросов #ifdef
. Или в C вы можете написать if()
с константой времени компиляции в качестве условия и укомплектовать компилятор с другой стороны.
Это полезно только для странных случаев, например, для инъекций кода, или просто для того, чтобы увидеть, возможно ли это.
См. также: машинный код polyglot ARM/x86 для перехода на разные адреса, в зависимости от того, какая архитектура декодирует байты.