IOCCC image by Matt Zucker

The International Obfuscated C Code Contest

1987/wall - Most useful obfuscation

Author:

To build:

    make all

To use:

    ./wall
    # enter some numbers

    ./wall | some_command
    # enter some strings or numbers, depending on command

Try:

    ./try.sh

You may of course run the commands manually and enter text as you wish. For instance you might try one or both of:

    ./wall | bc

    ./wall | cat

and enter some input like:

    x*x
    2^x
    quit # for the cat version

which the script does through a pipeline except that here you can enter more text if you wish, line by line.

Judges’ remarks:

What we found amazing was how the flow of control was transferred between subroutines. Careful inspection will show that the array of pointers to functions named vi refers to functions which seem to not be directly called. Even so, these pointers to functions are being used as an argument to signal(3) (used both with and without an arg - but how?). Can you determine why this is being done and how it is being exploited?

Some compilers complained about this file, so we changed: =++I to = ++I.

Author’s remarks:

No remarks were provided by the author.

Inventory for 1987/wall

Primary files

Secondary files


Jump to: top