Depende del procesador.
En algunos procesadores, se transfiere del valor máximo al mínimo en silencio. En otros procesadores, genera una excepción de alguna forma.
Famosamente, los procesadores Intel y AMD x86 diferían en este punto, que es uno de los defectos que hicieron posible hackear el XBox original.
- ¿Hay algún beneficio de la doble especialización en ciencias de la computación e ingeniería informática?
- Cómo encontrar esperanza en mi vida
- ¿Por qué William Chen eligió las estadísticas en lugar de la informática o la ingeniería informática?
- ¿Cómo se podría hacer una PC para juegos?
- Cómo explicar la ingeniería informática a un laico
Extractos relevantes:
Los ingenieros de Microsoft utilizaron otro truco brillante: saltan hasta el final del espacio de direcciones (que está cubierto por la ROM secreta) y apagan la ROM secreta en la última instrucción dentro del espacio de direcciones. Esta es una versión simplificada de la idea:
FFFFFFF1 mov eax, 80000880h
FFFFFFF6 mov dx, 0CF8h
FFFFFFF9 fuera dx, eax
FFFFFFFB agregar dl, 4
FFFFFFFC mov al, 2
FFFFFFFE fuera dx, al
Después de la última instrucción, el contador del programa (EIP) se desbordará a 00000000, lo que, de acuerdo con la documentación de la CPU, causa una excepción, y como no hay un controlador de excepciones configurado, causa una doble falla, lo que detendrá efectivamente la máquina .
…
Un hacker llamado visor, que nunca reveló su nombre real, se preguntó si el rollover a 00000000 en caso de un “hash” incorrecto de 2bl realmente causó una doble falla y detuvo la CPU. Utilizó los códigos x para escribir la instrucción de ensamblaje para “jmp 0xFFFF0000” en la ubicación de memoria 00000000 en RAM y cambió los últimos cuatro bytes en 2bl, para que la ROM secreta ejecute el código de pánico. La Xbox felizmente continuó ejecutando código a las 00000000 y dio el salto al flash.
…
Ahora, ¿por qué no hay doble falta? Los piratas informáticos del equipo de Xbox Linux consultaron con los empleados de AMD y explicaron que las CPU de AMD arrojan una excepción en caso de desbordamientos de EIP, pero las CPU de Intel no lo hacen.
La razón por la que las CPU Intel no lo hacen es por … cosas de la década de 1970. La ejecución en CPU x86 comienza en la parte superior del espacio de direcciones (menos 16 bytes), pero algunos fabricantes de computadoras querían tener su ROM en la parte inferior del espacio de direcciones, es decir, en 0, por lo que Intel implementó la instrucción con la codificación 0xFFFF, que es lo que obtienes al leer direcciones no conectadas a ningún chip, como NoOperation (“nop”) y hace que la CPU no arroje ninguna excepción en el caso del espacio de direcciones envolvente. De esta manera, la CPU “subiría” hasta el tope y finalmente ejecutaría el código en 0.
AMD no implementó este comportamiento, ya que ya no era necesario para cuando AMD ingresó al mercado x86 con sus propios diseños, y porque consideraban que este comportamiento era un riesgo de seguridad y solucionarlo no significaría una incompatibilidad significativa.