Salut
On dit toujours que c'est impossible etc, mais y'a du progrès !
J'ai fait quelques tests avec les 2 meilleurs outils que j'ai trouvé :
Boomerang
http://boomerang.sourceforge.net/
Decompile-it
http://decompile-it.com/frontend.html
Pour decompile-it, le programme doit obligatoirement avoir été compilé avec les infos de debug, contrairement à boomerang.
Les résultats sont quand même surprenants
J'ai utilisé pour ça un programme simple, le "plus ou moins" qu'on trouve sur le site du zéro :
http://pastebin.com/uj9V366s
(Compilé avec gcc -g 1.c , gcc 4.5)
Résultat de Boomerang (avec ou sans le -g, ça donne le même):
http://pastebin.com/nkTvQymL
C'est relativement moyen, mais on comprend bien ce que fait le programme.
Résultat decompile-it:
http://pastebin.com/TbJjxdJX
Là, c'est vraiment bluffant 
Il a juste fait une erreur avec le == du while, mais sinon, le programme y est, et pour avoir testé plusieurs programmes, les erreurs sont assez rares.
Par contre, sans le "-g", il fait moins le malin, contrairement à boomerang.
Après... les optimisations.
Déjà, avec gcc 4.7, decompile-it plante.
Avec gcc 4.5 et "-O", internal server error 
Finalement avec gcc 3.4, "-g" et "-O3", il veut bien décompiler:
http://pastebin.com/x9uH6ebG
C'est déjà beaucoup moins bien.
Boomerang (-O3, et sans -g):
http://pastebin.com/9VzC0Rix
Ca change pas énormément du premier.
Bref, pour conclure, je dirai que c'est des outils vraiment intéressants, mais les deux ne procèdent pas vraiment de la même façon.
Boomerang:
-Mal structuré et pas compilable directement
-Si le programme n'est pas compilé avec -g ou s'il est optimisé, vous aurez plus de chance avec lui
-Décompile tous les langages que ce soit des binaires linux/windows ou des .dll/.so (Mais par exemple le pascal, ça donne un résultat minable)
-A tendance a segfault/freezer, notemment avec des gros programmes (La taille du code généré est assez exponentielle
).
-On peut décompiler une seule procédure à une adresse dans le code, et les sous procédures si nécessaire
-Programme opensource
Decompile-it.com:
-Code compilable(la plupart du temps) et très compréhensible
-Si le programme n'est pas compilé avec -g, on oublie.
-A tendance a planter avec les optimisations ou les versions très récentes de gcc
-Décompile uniquement C,C++ et Fortran, uniquement les "elf binary" de linux. (Malgré tout, il m'a décompilé des .exe sans broncher, mais en a refusé d'autres)
-Décompile uniquement le programme entier, pas de sous-procédures.
-Propose des solutions commerciales soi-disant meilleures.
-Site internet commercial
Au final, si c'est compilé en debug, decompile-it est vraiment TRES bon.
Certains vont dire "oui mais c'est pas du tout fiable, ça marche juste pour des petits programmes extremement simple"... bah non.
J'ai testé de décompiler dvtm ( http://www.brain-dump.org/projects/dvtm/ )
Bon, boomerang se casse clairement la gueule sur ce coup là.
Decompile-it par contre...me parait presque miraculeux 
http://pastebin.com/c0TeNiYf
Après évidemment, c'est beau comme ça, mais si on veut un truc qui fonctionne, faudra passer un moment à patcher.
Enfin, je pense, j'ai pas vérifié le code, mais je suppose qu'il a fait des bourdes.
Voilà voilà 