es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cuáles son las formas en que se pueden aplicar hooks a un proceso x86 (en los niveles más bajos)?

Anteriormente, cuando pensaba en engancharme, quizás estaba pensando en un nivel un poco alto. Estaba pensando en una API de depuración del sistema operativo que suponía que agregaba una bandera a algún proceso del kernel o del sistema operativo responsable de manejar ese evento, así que si un cierto proceso al que agregamos un enganche desencadena esa llamada al sistema, o esa excepción, o una llamada de API de nivel superior que estamos enganchando, nuestro enganche se ejecutaría.

Pero ahora estoy viendo ejemplos de lo que parece ser instrucciones reales parcheadas en el proceso como enganches. Claramente, necesito estudiar esto un poco más, pero parece que se podría hacer de varias maneras, ya sea mediante parches/inyección, APIs de depuración, etc. Quiero entender todas las formas en que se aplican los enganches en el nivel más bajo.

¿Cómo se puede hacer esto (en términos de métodos de bajo nivel, capacidades de CPU, APIs de kernel, etc.)? Si es altamente específico de una API de sistema operativo, o altamente específico de una CPU, entonces me gustaría saber eso.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    La creación de hooks se puede hacer de varias maneras, dependiendo del sistema operativo y de las capacidades de la CPU.

    En el nivel más bajo, se pueden utilizar las capacidades de la CPU para crear hooks. Por ejemplo, en procesadores x86, se puede usar la instrucción INT 3 para crear un breakpoint. Cuando el procesador encuentra esta instrucción, detendrá la ejecución y transferirá el control a un depurador. Esto se puede usar para crear un hook que ejecute código cuando se encuentra una cierta instrucción.

    Las API del kernel también se pueden utilizar para crear hooks. Por ejemplo, en Windows, se puede usar la API SetWindowsHookEx para crear un hook que ejecute código cuando ocurre un cierto evento.

    Finalmente, se puede utilizar la inyección de código para crear hooks. Esto implica inyectar código en un proceso y luego ejecutarlo. Esto se puede usar para crear un hook que ejecute código cuando se encuentra una cierta instrucción.

Comments are closed.