Buenos días. Estoy jugando en ollydbg. Por lo que veo en x86 las instrucciones ( PUSHAD y PUSHA => Código: 60) y ( POPAD y POPA => Código: 61) tienen el mismo identificador de instrucción.
Cuando fuerzo en ensamblador escribiendo PUSHA se corrige automaticamente a PUSHADD y lo mismo pasa con POPA que se corrige a PUSHADD. Supongo que depende de otro factor que se utilice una intrucción u otra.
Como puedo forzar la ejecución de estas instrucciones para mover solo 16 bits?
Gracias.
Depende del ensamblador de Olly. En este caso toma lo mismo PUSHA y PUSHAD como operand-size de 32 bits.
La única forma es pushear los valores 1 a 1. No conozco forma de "forzar" al asm de Olly (aunque no descarto que exista alguna forma).
Saludos!
Supongo que dichas instrucciones son interpretadas como pusha o pushad dependiendo de la arquitectura 16-bit o 32-bit, ya que acabo de compilar un exe en 16-bit y otra en 32-bit, y pues siguen siendo 0x60 solo que en el de 16-bit lo interpreta como pusha o pushaw (push all word) y en 32-bit como pushad (push all dword)
Entonces hacer de cuenta que la instrucción 0x60 simplemente hace un push de los registros completos independientemente si está en 16-bit o 32-bit, como mandarle a alguien a comprar 6 panes y ya, dicho comprador no va ha revisar que si los panes son muy grandes solo debería traer la mitad, o si son muy pequeños mejor traer el doble XD