IDA Pro 8.3 уже древнее, и счастливые обладатели лицензий, скорей всего, уже имеют исправление. Но мы имеем, что имеем.
Для одного проекта разбираюсь с 64x битной архитектурой и имеющимися инструкциями.
И для тестов и сравнения использую IDA, Hiew и iced
Один из тестов по проверки опкодов споткнулся.
Начал сравнивать, а результат у всех разный.
Для примера есть инструкция JZ/JE с опкодом 0x0F 0x84 cd
(cd - 4 байта)
Так же в 64bit есть префикс 0x66 (есть и другие, но о них потом), который уменьшает битность инструкции.
То есть, 0x66 0x0F 0x84 cw
(cw - 2 байта).
Но, для Jxx инструкции это не работает.
В 64 битном режиме 0x66 префикс работает только на размер операнда, и не поддерживает 16 битные адреса.
Четыре разных префикса:
jz 0x180001106 ; 0F 84 00 01 00 00\njz 0x18000120d ; 66 0F 84 00 02 00 00\njz 0x180001314 ; 49 0F 84 00 03 00 00\njz 0x18000141b ; 67 0F 84 00 04 00 00
Что нам показывает IDA
jz near ptr word_180001106 ; 0f 84 00 01 00 00\njz near ptr byte_18000120B ; 66 0f 84 00 02\ndb 2 dup(0), 49h, 0Fh, 84h ; 00 00 49 0F 84\n00 03 00 00 67 0F 84 00 ; dq 840F6700000300h\n04 00 00 ; 4, 2h dup(0)
А что должно быть на самом деле:
Hiew