1
Mhook
Si vous vous aventurez dans ce domaine, vous saurez déjà que les détours de Microsoft Research définissent à peu près la référence en matière de raccordement d'API.
- Gratuite
- Windows
Si vous vous aventurez dans ce domaine, vous saurez déjà que les détours de Microsoft Research définissent à peu près la référence en matière de raccordement d'API.Pourquoi n'obtenons-nous pas rapidement une comparaison?DÉTOURS VS.MHOOK Detours est disponible gratuitement avec une licence non commerciale mais il ne prend en charge que la plate-forme x86.Les détours peuvent également être autorisés à des fins commerciales, ce qui vous offre également une prise en charge complète de x64, mais vous ne voyez les conditions de licence qu'après avoir signé un NDA.Mhook est distribué gratuitement sous licence MIT avec prise en charge de x86 et x64.Detours évite de soutenir officiellement la fixation de crochets à une application en cours d'exécution.Bien sûr, vous êtes libre de le faire - mais si vous finissez par provoquer un crash aléatoire ici ou là, vous ne pouvez que vous blâmer.Mhook était censé être en mesure de définir et de supprimer des crochets dans les applications en cours d'exécution - après tout, c'est ce dont vous avez besoin dans le monde réel.Il fait de son mieux pour éviter d'écraser du code qui pourrait être en cours d'exécution par un autre thread.Detours prend en charge le raccordement et le décrochage transactionnels;c'est-à-dire, la mise en place d'un tas de crochets en même temps avec une approche tout ou rien.Les crochets ne seront définis que si tous peuvent être définis, sinon la bibliothèque annulera toutes les modifications apportées.Mhook ne fait pas ça.Enfin, Mhook est assez paresseux lorsqu'il s'agit de gérer la mémoire des trampolines qu'il utilise.Detours alloue des blocs de mémoire selon les besoins et utilise la zone de données résultante pour stocker autant de trampolines que possible.Mhook, d'autre part, utilise un appel à VirtualAlloc par hook en cours de définition.Chaque hook a besoin de moins de 100 octets de stockage, ce qui est très coûteux, car VirtualAlloc finit par récupérer 64 Ko de l'espace d'adressage virtuel du processus chaque fois que Mhook l'appelle.(La mémoire allouée réelle sera une seule page, ce qui est également très coûteux.) En fin de compte, cela n'a probablement pas vraiment d'importance, sauf si vous définissez un très grand nombre de crochets dans une application.De plus, cela est très facile à corriger.