Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
ICALL-GADGET — Exploit permettant de rediriger le flux de contrôle d'un module noyau légitime vers votre propre module noyau illégitime afin de contourner le stack walking des anti-cheats | Kitploit
Outils/GitHubGitHub/gmh5225/icall-gadget
Mécanismes de PersistanceExploitationÉvasion IDS/IPSRétro-ingénierieShellcodeRed TeamingDéveloppement de Charges UtilesExploitation de Binaires
GitHubgmh5225/icall-gadget

ICALL-GADGET

Exploit permettant de rediriger le flux de contrôle d'un module noyau légitime vers votre propre module noyau illégitime afin de contourner le stack walking des anti-cheats

12il y a 2 ansPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Voir le dépôt
Partager

ABUS DES GADGETS ICALL POUR LA COMMUNICATION

Informations générales : cela se trouve dans le noyau Windows et cela nous permettra de communiquer dans notre driver sans être détecté par les anticheats

Donc je parcourais IDA et j'ai trouvé ceci

image

Après une inspection plus approfondie, nous pouvons voir qu'il appelle une fonction nommée _guard_dispatch_icall_ptr. L'icall est essentiellement un jmp vers rax, donc si vous réfléchissez un peu, nous pouvons modifier toute cette fonction pour appeler notre handler à la place en utilisant du shellcode.

Notre Shellcode

Nous allons créer un shellcode qui place dans rax un pointeur vers notre fonction handler. Ainsi, lorsque la fonction est appelée, elle exécutera notre shellcode et appellera notre handler. Nous devons nous assurer que lorsque nous créons notre shellcode, il fait exactement la même taille en octets que le code que nous modifions. Voici donc un exemple du shellcode que j'ai utilisé en asm ; vous devrez le convertir en octets.

 sub    rsp,0x38
 movabs rax,0xdeadbeef #placeholder for handler
 movabs r10,0xab39cfee
 inc    rax
 dec    rax
 call   QWORD PTR [rip+0x720d4]        # 0x720f8
 jmp    0x29

Notre code

En cpp, nous devons simplement obtenir l'adresse de la fonction puis y mapper notre shellcode, mais c'est là que ça devient délicat : si nous faisons cela simplement tel quel, nous corromprons la pile et obtiendrons un écran bleu de temps en temps. Pour éviter cela, nous devrons réparer la pile. Donc au lieu de retourner à l'intérieur de notre handler, nous devrions effectuer les mêmes opérations que la fonction ferait si nous ne l'avions pas modifiée. Je laisse cela au lecteur car je ne veux pas donner tout cuit une méthode incroyable d'évasion des anticheats, mais rappelez-vous de regarder l'asm original de la fonction et de voir ce que nous modifions. NOTE ANNEXE : Si vous corrigez la corruption de pile et faites ce que la fonction était censée faire à l'intérieur de votre handler, il apparaîtra que rien n'a été modifié ! :)

 //getting address to function
 FunctionAddress = module + 0xD70C; 
  
 BYTE shellcode[] = { 0x48, 0x83, 0xEC, 0x38, 0x48, 0xB8, 0xEF, 0xBE, 0xAD, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x49, 0xBA, 0xEE, 0xCF, 0x39, 0xAB, 0x00, 0x00, 0x00, 0x00, 0x48, 0xFF, 0xC0, 0x48, 0xFF, 0xC8, 0xFF, 0x15, 0xD4, 0x20, 0x07, 0x00, 0xE9, 0x00, 0x00, 0x00, 0x00 };

 memcpy(&shellcode[6], &hkfunction, 8);

 DisableWriteProtection();
 memcpy((PVOID)FunctionAddress, &shellcode, sizeof(shellcode));
 EnableWriteProtection();

Conclusion

J'espère que vous avez tiré quelque chose de ce petit write-up ; sachez simplement que vous pouvez aussi trouver d'autres gadgets qui feront bien plus, et plus c'est complexe, mieux c'est.

Télécharger l’outil