Ho letto il recente articolo "Istruzioni x86 più lunghe"
Ho tentato di riprodurre il curioso problema di disassemblaggio su una piattaforma di sviluppo Win7x86 usando masm e come suggerito dall'articolo, i prefissi dei redunants.
Parlare è economico, quindi ecco un programma giocattolo (masm32):
.386 .model flat, stdcall
option casemap:none
includelib \x\x\kernel32.lib
includelib \x\x\user32.lib
include \x\x\kernel32.inc
include \x\x\user32.inc
include \x\x\windows.inc
.code
start:
db 0F3h
db 0F3h
db 0F3h
db 0F3h
db 0F3h
db 0F3h
db 0F3h
;...6 more bytes later
db 089h
db 0E5h
end start
invoke ExitProcess, NULL
Dopo il collegamento e il montaggio, ho aperto il file eseguibile risultante in windbg.
Con mia delusione, quando faccio un solo passo, smonta il $ exentry, ecc. windbg semplicemente vede i prefissi / byte come istruzioni individuali, dice "al diavolo con esso" ed esegue solo le istruzioni valide.
C'è qualcosa che mi manca?