Si incursiona en esta área, entonces ya sabrás que los Desvíos de Microsoft Research prácticamente establecen el punto de referencia cuando se trata de la conexión de API. ¿Por qué no hacemos una comparación fuera del camino rápidamente?
DETOURS VS. MHOOK
Detours está disponible de forma gratuita con una licencia no comercial, pero solo es compatible con la plataforma x86. Los desvíos también pueden tener una licencia para uso comercial que también le brinda soporte completo para x64, pero solo puede ver las condiciones de la licencia después de firmar un NDA.
Mhook se distribuye libremente bajo una licencia MIT con soporte para x86 y x64.
Los desvíos evitan el soporte oficial de la conexión de enlaces a una aplicación en ejecución. Por supuesto, eres libre de hacerlo, pero si terminas causando un bloqueo aleatorio aquí o allá, solo puedes culparte.
Mhook estaba destinado a poder configurar y elimine los ganchos de las aplicaciones en ejecución; después de todo, para eso lo necesita en el mundo real. Hace todo lo posible para evitar sobrescribir el código que podría estar siendo ejecutado por otro hilo.
Detours admite enganches y desenganches transaccionales; es decir, establecer un montón de ganchos al mismo tiempo con un enfoque de todo o nada. Los enlaces solo se establecerán si se pueden configurar todos, de lo contrario, la biblioteca revertirá los cambios realizados. Mhook no hace esto.
Finalmente, Mhook es bastante perezoso cuando se trata de administrar la memoria para los trampolines que usa.
Desvíos asigna bloques de memoria según sea necesario, y utiliza el área de datos resultante para almacenar tantos trampolines como corresponda. Mhook, por otro lado, usa una llamada a VirtualAlloc por cada conexión que se establece. Cada gancho necesita menos de 100 bytes de almacenamiento, por lo que es un gran desperdicio, ya que VirtualAlloc termina tomando 64K del espacio de direcciones virtuales del proceso cada vez que Mhook lo llama. (La memoria asignada real será una sola página, lo que también es un gran desperdicio). Sin embargo, al final, esto probablemente no importa, a menos que esté configurando una gran cantidad de enlaces en una aplicación. Además, esto es muy fácil de arreglar.
Mhook Comentarios
Todavía no hay comentarios