winux — exécuteur
Windows PE pour Linux.
Exécution native et transparente de binaires Windows PE32+ (x86_64) sur Linux, sans Wine, sans machines virtuelles, sans conteneurs.
git clone https://github.com/devfrp/winux.git && cd winux && make && sudo make install
Des binaires Windows, exécutés comme des processus Linux
winux charge un exécutable PE32+ directement dans un processus Linux : projection
des sections en mémoire, résolution des imports, synthèse TEB/PEB, puis exécution native sous un
filtre seccomp BPF. Le nom du .exe apparaît dans
ps/htop, ses sections PE sont étiquetées dans
/proc/pid/maps — pas de Wine, pas de VM, pas de conteneur.
Architecture
Pipeline d'exécution complet, du binaire PE jusqu'au noyau Linux.
mmap des sections · relocationskernel32.dll · stubs ntdll.dll · table Handle→fd · traduction des cheminsFonctionnalités
Tout ce dont vous avez besoin pour exécuter des binaires Windows sur Linux, sans compromis.
Chargeur PE
Analyse des en-têtes PE32+, projection mmap des sections aux adresses virtuelles, application des relocations avec précision.
Résolveur IAT statique
Résolution statique des imports avec ~45 fonctions kernel32 et 17 stubs ntdll, sans dépendance externe.
Gestionnaire mémoire
Implémentation de VirtualAlloc/VirtualFree et tas mémoire avec liste libre protégée par mutex.
Modèle de threads
Synthèse TEB/PEB, configuration du segment GS via arch_prctl, gestion native des threads.
Pont Win32
Table Handle→fd, traduction transparente des chemins Windows vers Linux (C:\ → /, séparateurs, etc.).
Filtre seccomp BPF
Liste blanche d'environ 50 appels système via libseccomp, pour une isolation renforcée.
Intégration système
Le nom du processus affiche le nom du .exe dans ps/htop. Sections PE étiquetées dans /proc/pid/maps.
Transparence E/S
Redirection transparente des entrées/sorties entre l'espace utilisateur Windows et les descripteurs Linux natifs.
Démarrage rapide
Installez winux en trois commandes et exécutez votre premier binaire PE.
Installation
# Cloner le dépôt git clone https://github.com/devfrp/winux.git # Compiler cd winux && make # Installer sudo make install # Exécuter un binaire Windows ! winexec prog.exe
Options disponibles
winexec --debug # Journalisation verbeuse winexec --no-seccomp # Désactiver le filtre d'appels système winexec --paths # Mappage de chemins personnalisé
Dépendances · Debian / Ubuntu
sudo apt install gcc make libseccomp-dev
Spécifications
Une base de code légère, performante et bien architecturée.
Questions fréquentes
Tout ce que vous devez savoir sur winux.
winux remplace-t-il Wine ?
Non. winux est un exécuteur léger spécialisé dans les binaires PE32+ (x86_64). Il n'implémente pas l'ensemble de l'API Win32 comme Wine. Il est conçu pour les charges de travail où la transparence et la légèreté priment sur la compatibilité totale.
Quels types de binaires sont supportés ?
winux supporte les exécutables Windows PE32+ au format x86_64. Les binaires 32 bits (PE32) ne sont pas pris en charge actuellement.
Est-ce sécurisé pour un environnement de production ?
winux intègre un filtre seccomp BPF qui restreint l'exécutable à environ 50 appels système. Cependant, comme tout outil en développement actif, évaluez les risques pour votre cas d'usage avant tout déploiement en production.
Pourquoi le noyau Linux ≥ 4.17 est-il requis ?
winux utilise l'option MAP_FIXED_NOREPLACE pour la projection mémoire, introduite dans le
noyau Linux 4.17. Cette option garantit un placement mémoire sécurisé sans écraser les projections
existantes.
Puis-je désactiver le filtre seccomp ?
Oui, utilisez le drapeau --no-seccomp. Cela peut être utile pour le débogage, mais retire
la couche de sécurité offerte par le filtrage des appels système.