Visit Our UNIX and Linux User Community


Obfuscated C


 
Thread Tools Search this Thread
Top Forums Programming Obfuscated C
# 1  
Old 03-28-2002
MySQL Obfuscated C

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. Smilie



Code:
#  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));
}

# 2  
Old 03-29-2002
Hey, I like that!
I've moved it to $HOME/bin since it is a lot better than "man ascii"...
Here's one of my favorites:
Code:
 main() { printf(&unix["\021%six\012\0"],(unix)["have"]+"fun"-0x60);}

It was written by David Korn, and won Best One-Liner in 1987.
Another one I think is awesome is thadgavin.c, a winner in 2000 (source too long to post here).

Also, a stongly suggested entry to look at in jarijyrki.c in 2000. I've actually used that program before for work purposes!

Lookin' good PxT!
# 3  
Old 04-03-2002
One liner is not working!!!! by david korn

That one liner is not working.
What include files should I have in the code ?

thank you,
sharath chandra
# 4  
Old 04-03-2002
Dr. Korn's one liner seems to have been written in the days of K&R C. LivinFree uses HP-UX. HP-UX includes a old K&R C compiler for free as part of the OS. I am sure that he is using this compiler to compile the one liner.

The old C preprocessor seems to set the symbol "unix" to be "1" for some odd reason. And I guess that ansi cleaned up the name space. I never noticed this before and now I wonder what old C compilers did on, say, an old IBM pc. Set unix to 0? Or leave unix undefined and set ms-dos to 1?

In any event, I got the one liner to work with ansi C by adding a line "#define unix 1".
# 5  
Old 04-03-2002
I also got it compiled on a Linux machine with gcc.
I checked the Makefile, and I didn't see any extra options either that may be needed on some systems. I also checked the hint file again to see if some compilers didn't like it... The commands I used were:
$ gcc -o korn korn.c
$ ./korn
unix

What system are you using to compile? What compiler?
# 6  
Old 04-03-2002
Nice

Hi,
It was nice and could't trace how it is printing.

Awesome..................

thank you,
K.S.SHARATH CHANDRA

Previous Thread | Next Thread
Test Your Knowledge in Computers #499
Difficulty: Medium
The term 'self-documenting' code means the compiler has advanced A.I. which documents what each line of code actually does.
True or False?

3 More Discussions You Might Find Interesting

1. Programming

Obfuscated "Hello World!" in Python 2.7.x...

Obfuscated Hello World! in Python 2.7.x This is seriously impressive:- Obfuscating "Hello world!" - Ben Kurtovic (2 Replies)
Discussion started by: wisecracker
2 Replies

2. Web Development

Random - Any help decoding obfuscated code?

I have this following file and I would quite like to get it decoded - any help / advice is appreciated. I would like to know how to decrypt it, however if someone is able to do it for me I would be equally grateful. <?php //Obfuscation provided by FOPO - Free Online PHP Obfuscator v1.2:... (6 Replies)
Discussion started by: mcclunyboy
6 Replies

3. Shell Programming and Scripting

Removing obfuscated javascript from js files

ello, I am trying to remove obfuscated code in multiple files on a server, the malicious code is surronded by /*km0ae9gr6m*//*qhk6sa6g1c*/ I had success removing from some files using this command sed -i ':strt;s|/\*km0ae9gr6m\*/*/\*qhk6sa6g1c\*/||g;/\/\*km0ae9gr6m\*\//{N;b strt}'... (5 Replies)
Discussion started by: cuantica
5 Replies

Featured Tech Videos