“Hola Mundo” ofuscado en C
Escrito por
J.F. el Wednesday, 27 de February del 2008 a las 17:56
Todo aquel que haya estudiado informática, o haya tenido algún contacto con el mundo de la programación quizás le suene el lenguaje de programación C. Es antiguo, y en multitud de ocasiones es el primer lenguaje de programación que aprendes, y luego usas sus bases para aprender otros nuevos más modernos y avanzados.
Por ello, me ha resultado gracioso toparme en ésta página con diferentes formas ofuscadas de programar el "Hola Mundo". Aquí las teneis, hay que ser muy geek para hacer ésto:
hello1.c
C:
-
#define _________ }
-
#define ________ putchar
-
#define _______ main
-
#define _(a) ________(a);
-
#define ______ _______(){
-
#define __ ______ _(0x48)_(0x65)_(0x6C)_(0x6C)
-
#define ___ _(0x6F)_(0x2C)_(0x20)_(0x77)_(0x6F)
-
#define ____ _(0x72)_(0x6C)_(0x64)_(0x21)
-
#define _____ __ ___ ____ _________
-
#include<stdio.h>
-
_____
hello2.c
C:
-
#include<stdio.h>
-
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++]);
-
}
hello3.c
C:
-
#include<stdio.h>
-
#define __(a) goto a;
-
#define ___(a) putchar(a);
-
#define _(a,b) ___(a) __(b);
-
main()
-
{ _:__(t)a:_('r',g)b:_('$',p)
-
c:_('l',f)d:_(' ',s)e:_('a',s)
-
f:_('o',q)g:_('l',h)h:_('d',n)
-
i:_('e',w)j:_('e',x)k:_('\n',z)
-
l:_('H',l)m:_('X',i)n:_('!',k)
-
o:_('z',q)p:_('q',b)q:_(',',d)
-
r:_('i',l)s:_('w',v)t:_('H',j)
-
u:_('a',a)v:_('o',a)w:_(')',k)
-
x:_('l',c)y:_('\t',g)z:___(0x0)}
hello4.c
C:
-
int n[]={0x48,
-
0x65,0x6C,0x6C,
-
0x6F,0x2C,0x20,
-
0x77,0x6F,0x72,
-
0x6C,0x64,0x21,
-
0x0A,0x00},*m=n;
-
main(n){putchar
-
(*m)!='\0'?main
-
(m++):exit(n++);}
hello5.c
C:
-
main(){int i,n[]={(((1<<1)<<(1<<1)<<(1<<
-
1)<<(1<<(1>>1)))+((1<<1)<<(1<<1))), (((1
-
<<1)<<(1<<1)<<(1<<1)<<(1<<1))-((1<<1)<<(
-
1<<1)<<(1<<1))+((1<<1)<<(1<<(1>>1)))+ (1
-
<<(1>>1))),(((1<<1)<<(1<<1)<<(1<<1)<<(1
-
<<1))-((1<<1)<<(1<<1)<<(1<<(1>>1)))- ((1
-
<<1)<<(1<<(1>>1)))),(((1<<1)<<(1<<1)<<(1
-
<<1)<<(1<<1))-((1<<1)<<(1<<1)<<(1<<(1>>1
-
)))-((1<<1)<<(1<<(1>>1)))),(((1<<1)<<(1
-
<<1)<<(1<<1)<<(1<<1))-((1<<1)<<(1<<1)<<(
-
1<<(1>>1)))-(1<<(1>>1))),(((1<<1)<<(1<<1
-
)<<(1<<1))+((1<<1)<<(1<<1)<<(1<<(1>>1)))
-
-((1<<1)<<(1<<(1>>1)))),((1<<1)<<(1<<1)
-
<<(1<<1)),(((1<<1)<<(1<<1)<<(1<<1)<<(1<<
-
1))-((1<<1)<<(1<<1))-(1<<(1>>1))),(((1<<
-
1)<<(1<<1)<<(1<<1)<<(1<<1))-((1<<1)<<(1
-
<<1)<<(1<<(1>>1)))-(1<<(1>>1))), (((1<<1
-
)<<(1<<1)<<(1<<1)<<(1<<1))- ((1<<1)<<(1
-
<<1)<<(1<<(1>>1)))+(1<<1)), (((1<<1)<<(
-
1<<1)<<(1<<1)<<(1<<1))-((1<<1)<<(1<<1)
-
<<(1<<(1>>1)))-((1<<1) <<(1<<(1>>1)))),
-
(((1<<1)<<(1<<1)<<(1<<1)<<(1<<1))- ((1
-
<<1)<<(1<<1)<<(1<<1))+((1<<1)<<(1<<(1>>
-
1)))), (((1<<1)<<(1<<1) <<(1<<1))+(1<<(1
-
>>1))),(((1<<1)<<(1<<1))+((1<<1)<<(1<<(
-
1>>1))) + (1<<(1>>1)))}; for(i=(1>>1);i
-
<(((1<<1) <<(1<<1))+((1 <<1)<<(1<<(1>>1
hello6.cpp
C:
-
Cheating a bit here. This only works with a cpp compiler (tried it with g++).</stdio.h></stdio.h></stdio.h>
-
-
#include <stdio.h>
-
#define _(_) putchar(_);
-
int main(void){int i = 0;_(
-
++++++++++++++++++++++++++++
-
++++++++++++++++++++++++++++
-
++++++++++++++++++++++++++++
-
++++++++++++++++++++++++++++
-
++++++++++++++++++++++++++++
-
++++i)_(++++++++++++++++++++
-
++++++++++++++++++++++++++++
-
++++++++++i)_(++++++++++++++
-
i)_(--++i)_(++++++i)_(------
-
----------------------------
-
----------------------------
-
----------------------------
-
----------------------------
-
----------------i)_(--------
-
----------------i)_(++++++++
-
++++++++++++++++++++++++++++
-
++++++++++++++++++++++++++++
-
++++++++++++++++++++++++++++
-
++++++++++++++++++++++++++++
-
++++++++++++++++++++++++++++
-
++++++++++++++++++++++++++i)
-
_(----------------i)_(++++++
-
i)_(------------i)_(--------
-
--------i)_(----------------
-
----------------------------
-
----------------------------
-
----------------------------
-
----------------------------
-
------i)_(------------------
-
----------------------------
-
i)return i;}
Finalmente el clásico:
C:
-
#include <stdio.h>
-
int main(void)
-
{
-
return 0;
-
}
Enlace: | Manuales de C
Vía: | MundoGeek
Categoría: Curiosidades, Programación |
No hay Comentarios »
Mantente actualizado sobre Informática Práctica suscribiéndote al feed.
Feed RSS

