PROJET AUTOBLOG


Korben

Site original : Korben

⇐ retour index

Cosmopolitan – Compiler un binaire unique multi-OS

mercredi 3 mars 2021 à 09:00

Justine Tunney est une développeuse qui un jour, en étudiant du vieux code source, a découvert qu’il était possible d’encoder des fichiers Windows PE (Portable Executable) sous la forme de shell script unix. Cette magie s’opère grâce au fait que le shell Thompson n’utilise pas la ligne d’entête des script commençant par #!. On appelle ça aussi le shebang. « Sh » pour Sharp, à savoir le dièse, et le « bang » pour le point d’exclamation.

Justine a donc compris qu’il était possible de créer un format binaire global fonctionnant aussi bien sous Linux que macOS et Windows.

Pour aller plus loin dans sa découverte, elle a donc mis au point un projet de bibliothèque en C baptisé Cosmopolitan Libc qui permet de compiler du code dans un format exécutable fonctionnant sur tous les OS (Linux + Mac + Windows + FreeBSD + OpenBSD + NetBSD + BIOS) un peu comme ce qu’on pourrait faire avec du java, sauf que là, pas besoin d’interpréteur ou de machine virtuelle.

Voici un exemple de hello world compilé avec Cosmopolitan :

# Un petit hello world en C
printf %s '
  main() {
    printf("hello world\n");
  }
' >hello.c

Une petite compilation avec gcc et les libs qui vont bien :

gcc -g -O -static -fno-pie -no-pie -mno-red-zone -nostdlib -nostdinc \
  -o hello.com.dbg hello.c -Wl,--gc-sections -Wl,-z,max-page-size=0x1000 -fuse-ld=bfd \
  -Wl,-T,ape.lds -include cosmopolitan.h crt.o ape.o cosmopolitan.a
objcopy -SO binary hello.com.dbg hello.com

Et voilà, un petit binaire multi OS ! C’est dingue !

Sur son site, elle propose ce binaire « hello world » qui effectivement fonctionne sans modification sous Mac et Windows et que vous pouvez tester vous-même. (rendez le exécutable avec un chmod +x avant)

Elle explique tout cela sur sa page web. Et la lib Cosmopolitan est sur Github. Maintenant vous saurez quoi proposer aux développeurs qui détestent ElectronJS ;-)))

Merci à Lolilol pour l’info !

A la recherche d’un DNS qui vous protège et respecte votre vie privée ?

Vie privée, contrôle parental, exceptions de filtrage…

NextDNS offre une grosse couche de sécurité qui vous permet de bloquer automatiquement la résolution de certains noms de domaine en fonction de listes fournies par différents acteurs. Vous pouvez par exemple bloquer les sites remontés par Google comme les sites fournissant des malwares ou proposant des pages de phishing. Tout ce qui est cryptojacking, c’est-à-dire les sites utilisant votre navigateur pour miner de la cryptomonnaie à votre insu, peut être également bloqué.

Le typosquatting vous connaissez ? Il s’agit de prendre un nom de domaine qui ressemble vraiment à un nom de domaine officiel et tromper les gens qui feraient des fautes de frappe ou en utilisant des caractères ASCII graphiquement proche de véritables lettres de l’alphabet. Et bien ici, même chose, NextDNS vous protège.

En Savoir + sur NextDNS