Capturando cambios de valor de registro x86 en hardware, es decir, a nivel de circuito

0

Necesito encontrar una forma de observar (en otra máquina 'monitor') los registros críticos para el proceso de traducción de direcciones en plataformas x86, incluidos IDTR, GDTR, CR3, etc. Esta supervisión debe realizarse en tiempo real. en el sentido de que se deben observar los cambios maliciosos.

Se ha considerado la depuración de hardware, pero esto puede no ser factible. Lo que me gustaría saber es si es posible / factible extraer información directamente de los registros de hardware a través de una sonda. Quiero sugerir, en mi tesis, probar el registro de instrucciones, de modo que todas las instrucciones ejecutadas puedan analizarse en el monitor externo, y usar esto para determinar si la instrucción modifica uno de estos otros registros.

Lo siento si mi pregunta es vaga, pero alguien puede explicar si es posible y, de ser así, cómo capturar valores de los registros en hardware (no en el nivel del software) y en tiempo real. Todo lo que sé es que los registros utilizan "flip flops" para el almacenamiento de bits. ¿Cómo envío notificaciones de cambios en el valor de estos registros / bits a otro dispositivo, sin incluir ningún método relacionado con el software en la máquina en cuestión?

    
pregunta Michael Haycroft

1 respuesta

4

No puedes probar físicamente los registros en un chip moderno. No creo que esto sea posible, incluso si tiene el microscopio de exploración y tunelización absurdamente costoso necesario para sondearlo con la tapa cerrada; es probable que estén bajo demasiadas capas de metal.

Tampoco creo que las capacidades de depuración de hardware sean suficientes para esto. Es posible que pueda acceder a los registros en JTAG: enlace pero no en" tiempo real ", tendría que realizar un solo paso la ejecución.

Existe el "Modo de administración del sistema", que está poco documentado, que es un hipervisor de hardware, pero una vez más, no creo que tenga las capacidades de "captura" adecuadas para activar modificaciones en registros específicos.

Encontré su otra pregunta en enlace , BTW.

La única forma en que podría hacer esto sería construir un procesador de "núcleo suave" en un FPGA, que sería mucho más lento que un procesador real pero más rápido que una emulación, y luego puede monitorear cualquier cambio que desee.

    
respondido por el pjc50

Lea otras preguntas en las etiquetas