Leyendo un ebook sobre Reversing me topé con una duda.
Existen 2 tipos de desensambladores, creo que eran recursivos (Olly, IDA, PEBrowser) y otros creo lineales como Softice.
Existen así disintas técnicas para engañarlos y hacer que desensamblen mal.
Por ejemplo este código:
jmp after
db 0x0f
after:
mov eax, [var]
push eax
call function
OllyDbg, al ser recursivo, desensambla perfectamente bien ese codigo. (Claro está que hay trucos no mucho mas complicados que ese que lo logran engañar.)
Pero en el caso de Softice, interpreta el codigo como:
jmp dir1
jmp dir2
xlat
INVALID
jmp far[eax+24]
pushad
Ahora la duda que me surge....
¿Como es que el CPU nunca se confunde? (Me refiero ctambien a técnicas que engañan hasta a IDA y Olly)