(désolé pour le titre tout pourri :$)
Je viens de tomber sur un outil assez rigolo : c'est un "compilateur" qui transforme du brainf**k en assembleur qui a la particularité de n'utiliser (presque) que des "mov".
Bon, soyons honnêtes, ça n'a pas d'utilité en pratique (je sais, je ne serais pas très bon en tant que commercial ^^) mais c'est original.
Il y a un GitHub :
https://github.com/xoreaxeaxeax/movfuscatorVous y trouverez des slides (beaucoup) qui expliquent le pourquoi du comment ça fonctionne.
Pour ceux qui veulent se frotter au résultat final, il y a aussi un crackme.
Si vous voulez juste un petit aperçu du résultat (le début de la section .text du crackme en question) :
08048230 <.text>:
8048230: a1 b0 1c 0e 08 mov 0x80e1cb0,%eax
8048235: 8b 04 85 a4 1c 0e 08 mov 0x80e1ca4(,%eax,4),%eax
804823c: c7 00 01 00 00 00 movl $0x1,(%eax)
8048242: c7 05 b0 1c 0e 08 00 movl $0x0,0x80e1cb0
8048249: 00 00 00
804824c: a1 a0 1c 0e 08 mov 0x80e1ca0,%eax
8048251: a3 94 1c 0d 08 mov %eax,0x80d1c94
8048256: b8 9c 1c 0e 08 mov $0x80e1c9c,%eax
804825b: 8b 15 ac 1c 0e 08 mov 0x80e1cac,%edx
8048261: a3 c4 1c 0e 08 mov %eax,0x80e1cc4
8048266: 8b 04 95 c0 1c 0e 08 mov 0x80e1cc0(,%edx,4),%eax
804826d: 8b 15 9c 1c 0e 08 mov 0x80e1c9c,%edx
8048273: 8b 92 c8 ff fe ff mov -0x10038(%edx),%edx
8048279: 89 10 mov %edx,(%eax)
804827b: a1 9c 1c 0e 08 mov 0x80e1c9c,%eax
8048280: 8b 15 ac 1c 0e 08 mov 0x80e1cac,%edx
8048286: a3 c4 1c 0e 08 mov %eax,0x80e1cc4
804828b: 8b 04 95 c0 1c 0e 08 mov 0x80e1cc0(,%edx,4),%eax
8048292: 8b 15 94 1c 0d 08 mov 0x80d1c94,%edx
8048298: 89 10 mov %edx,(%eax)
804829a: 89 f8 mov %edi,%eax
804829c: a3 94 1c 0d 08 mov %eax,0x80d1c94
80482a1: b8 9c 1c 0e 08 mov $0x80e1c9c,%eax
80482a6: 8b 15 ac 1c 0e 08 mov 0x80e1cac,%edx
80482ac: a3 c4 1c 0e 08 mov %eax,0x80e1cc4
80482b1: 8b 04 95 c0 1c 0e 08 mov 0x80e1cc0(,%edx,4),%eax
80482b8: 8b 15 9c 1c 0e 08 mov 0x80e1c9c,%edx
80482be: 8b 92 c8 ff fe ff mov -0x10038(%edx),%edx
80482c4: 89 10 mov %edx,(%eax)
80482c6: a1 9c 1c 0e 08 mov 0x80e1c9c,%eax
80482cb: 8b 15 ac 1c 0e 08 mov 0x80e1cac,%edx
80482d1: a3 c4 1c 0e 08 mov %eax,0x80e1cc4
80482d6: 8b 04 95 c0 1c 0e 08 mov 0x80e1cc0(,%edx,4),%eax
80482dd: 8b 15 94 1c 0d 08 mov 0x80d1c94,%edx
...
--
EDIT :
Je viens de tomber sur un wiki avec d'autres détails. Entre autres, ainsi que dionosis l'avait pressentit ça se décode facilement. =>
http://wiki.yobi.be/wiki/MoVfuscator_WriteupPour ceux qui se demandent comment je trouve des trucs pareils, c'est entre autres sur Reddit :
http://www.reddit.com/r/ReverseEngineering/