Well this year i decided to enter the International Obfuscated C Code Contest. This was my first attempt at writing obfuscated C (at least purposely), so I am sure that this is kids-stuff for the real obfuscation gurus. Anyway, the results are out, and I am not a finalist (I wasn't expecting to be), so I figured I would share my code with you all, just for fun. If anyone else made an entry this year, please share them!
Here are the remarks included with my entry:
This program grew out of a non-obfuscated utility that I threw
together a while ago. I use it as a reference from time to
time since different architectures produce different results (at
least, the output is different on my HP-UX box than it is on my
Intel box). It simply outputs a nicely formatted ascii character
table. It is run with no arguments and produces its report on
the standard out. I achieved obfuscation by using a couple of
levels of recursion, plus some confusingly named variables and
functions. I also included some additional code which does
absolutley nothing just to confuse things a little more.
I strived for "-Wall" cleanness. As a result I had to give up
a couple minor obfuscations, but I think it is still sufficiently
convoluted. This is my first attempt at obfuscated C -- it was
written over the course of several weeks as a diversion. By
the end it became very difficult to improve as I could no longer
understand how it worked without a serious amount of thought!
The code is neatly arranged in the form of my initials. :\)
# include <stdio.h>
# define d (
# define I1 1<<
# define b )
# define Il(l) \
return(l)
# define lI \
I*((I1 3)-1)+(I*(I1\
1))-(I-\
(I1 4))
#define \
_l(l) \
ll_l(l)
#define \
ll(l) l
#define \
l1 main(
long i,l,ll(I)=d(I1 5)-(I1 1)b;int _l(l)
{putchar d ll(l)b;Il(l);}int II(l,L){_l(
(l/L)+48);l-=((l/L)*L);d L/=10 b?II(l,L)
:0;Il(l);}int l1
b{*d d l b?&I:&l
b=I;if d l>(I1 8
b b Il(I1 0);_l(
32);_l(I1 5);II(
l,25<<2);_l(58);
_l(I1 5);_l(ll(l
));l%(I1 2)?0:_l
((I1 3)+(ll(I1 1)
)b;l++;Il(l1 l));
}