Récupérer les syscall (appels systèmes) sous Windows Serveur 2025 (Assembleur)

L'assembleur sous Windows : un chemin de croix volontaire

Écrire en langage assembleur, c'est parler directement au CPU, sans intermédiaire, sans filets.
Sous Linux/BSD/Unix, on peut causer directement au noyau via les syscall (appels systèmes) qui sont documentés.
Mais sous Windows, c'est une autre salade : Microsoft n'a jamais eu envie que les développeurs jouent trop près du métal...

Leur API officielle, Win32, agit comme une énorme couche tampon. Les appels systèmes internes (NT syscalls) sont volontairement instables : leurs numéros changent selon les versions, leurs prototypes bougent, et aucune doc officielle ne les garantit.
Résultat : coder en assembleur natif pour Windows, c'est s'embarquer dans un bricolage fragile, souvent cassé au prochain patch.

Ce qui embête Microsoft, c'est que contourner Win32 et utiliser directement les syscalls revient à sauter toutes leurs couches de compatibilité, de sécurité... et de télémétrie.
En clair : ça échappe à leur contrôle. Pas étonnant que seuls les rootkits, les malwares, ou les vieux hackers nostalgiques s'y amusent encore.

Bref, écrire en assembleur sous Windows, c'est possible, mais c'est comme décider de grimper l'Everest en tongs ... :-D


Ci-dessous, je vous fournis un script PowerShell permettant de désassembler ntdll.dll et d'en extraire les syscall !
Il génère un fichier .csv complet, mais vous pouvez extraire directement les syscall en exécutant le script ainsi :

.\Extract-NTDLL-Syscalls.ps1 -OnlySyscalls

⬆️ Retour en haut de la page