Friday, February 22, 2008

How to obfuscate an "Hello World" program


#include

main(){
int x=0,y[14],*z=&y;*(z++)=0x48;*(z++)=y[x++]+0x1D;
*(z++)=y[x++]+0x07;*(z++)=y[x++]+0x00;*(z++)=y[x++]+0x03;
*(z++)=y[x++]-0x43;*(z++)=y[x++]-0x0C;*(z++)=y[x++]+0x57;
*(z++)=y[x++]-0x08;*(z++)=y[x++]+0x03;*(z++)=y[x++]-0x06;
*(z++)=y[x++]-0x08;*(z++)=y[x++]-0x43;*(z++)=y[x]-0x21;
x=*(--z);while(y[x]!=NULL)putchar(y[x++]);
}


Are you wondering about what this code outputs?
This is a simple Hello World application, coded (in the C programming Language) in a very complicated way :-)

And to imagine that there are people who do this as a hobby :-)

1 comment:

Carlos Martins said...

Esse nem é dos mais complicados, está a fazer o dump do código para a memória e depois faz o print.

Há uns anos atrás vi uns verdadeiramente alucinantes, do tipo:
compilavas o código, depois passavas o source code como input para o programa compilado e ele invertia o codigo fonte, e depois de compilares o codigo invertido o raio do programa compilava para fazer outra coisa qualquer.

Realmente há gente que parece nao ter mais nada que fazer... :)