v1.0 · Licence MIT · exécuteur PE32+ natif

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
00

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.

01

Architecture

Pipeline d'exécution complet, du binaire PE jusqu'au noyau Linux.

Chargeur PEanalyse PE32+ · projection mmap des sections · relocations
Pont Win32stubs kernel32.dll · stubs ntdll.dll · table Handle→fd · traduction des chemins
Mémoire · Threads · E/SVirtualAlloc/VirtualFree · TEB/PEB + segment GS · redirection des E/S vers les descripteurs natifs
Filtre BPF seccompliste blanche d'environ 50 appels système via libseccomp
Noyau Linux ≥ 4.17 (x86_64)l'exécution reste un processus natif — ordonnancement, mémoire et E/S par le noyau
02

Fonctionnalités

Tout ce dont vous avez besoin pour exécuter des binaires Windows sur Linux, sans compromis.

Chargement

Chargeur PE

Analyse des en-têtes PE32+, projection mmap des sections aux adresses virtuelles, application des relocations avec précision.

Imports

Résolveur IAT statique

Résolution statique des imports avec ~45 fonctions kernel32 et 17 stubs ntdll, sans dépendance externe.

Mémoire

Gestionnaire mémoire

Implémentation de VirtualAlloc/VirtualFree et tas mémoire avec liste libre protégée par mutex.

Threads

Modèle de threads

Synthèse TEB/PEB, configuration du segment GS via arch_prctl, gestion native des threads.

Interop

Pont Win32

Table Handle→fd, traduction transparente des chemins Windows vers Linux (C:\ → /, séparateurs, etc.).

Sécurité

Filtre seccomp BPF

Liste blanche d'environ 50 appels système via libseccomp, pour une isolation renforcée.

Système

Intégration système

Le nom du processus affiche le nom du .exe dans ps/htop. Sections PE étiquetées dans /proc/pid/maps.

E/S

Transparence E/S

Redirection transparente des entrées/sorties entre l'espace utilisateur Windows et les descripteurs Linux natifs.

03

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
04

Spécifications

Une base de code légère, performante et bien architecturée.

~5 600
Lignes de C11
11+11+3
Composants · Headers · Tests
x86_64
Architecture
≥ 4.17
Noyau Linux min.
MIT
Licence
~50
Appels sys. autorisés
45
Fonctions kernel32
17
Stubs ntdll
05

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.