[comp.lang.c] Forget uMIILs -- why not an 'obfuscate' tool for C instead?

eric@golux.UUCP (Eric S. Raymond) (10/24/88)

In <6152@june.cs.washington.edu> pardo@cs.washington.edu (David Keppel) writes:
> Essentially, preform all the optimizations that I can on the C source,
> and  steal liberally from the Obfusacted C Code Contest.

This gives me an interesting and twisted thought. Consider the following
notional man page:

--------------------------------------------------------------------------
NAME
   obfuscate -- code obfuscator for semi-secure source code distribution

SYNOPSIS
   obfuscate [file...]

DESCRIPTION
   The obfuscate tool applies transformations to a set of source files intended
to make the source unreadable as possible. The intent is to support secure
distribution of proprietary C source.

   Obfuscate begins by preprocessing the file, throwing away all information
in comments and mnemonic defines. Then it randomly renames all variables using
conventions designed to confuse the eye.

   Next, obfuscate  applies a further series of transformations we shall leave
deliberately undocumented here. Some of these are `smart' obfuscations using
source features deducible from flow analysis.

   Finally, obfuscate smashes all non-significant whitespace out of the file
and reformats it as a sequence of solid-filled 8-character lines.

   Though the output of obfuscate will always compile to the same (stripped) 
object code as its input, the obfuscate algorithm is deliberately
nondetermistic; some of the transformations applied will vary randomly from
run to run.

NOTE
   To make reverse-engineering of the scramble algorithms more difficult, the
source of obfuscate is distributed in obfuscated form.
--------------------------------------------------------------------------

Maybe this is as good a secure uMIIL as we can hope for. I'd write it, but I've
got my hands full with 3.0 news and changing machines. Anybody else wanna try?
-- 
      Eric S. Raymond                     (the mad mastermind of TMN-Netnews)
      UUCP: ...!{uunet,att,rutgers}!snark!eric = eric@snark.UUCP
      Post: 22 S. Warren Avenue, Malvern, PA 19355      Phone: (215)-296-5718

rsalz@bbn.com (Rich Salz) (10/25/88)

The discussions on HIMIL's, MIIL's, stopped being relevant to comp.lang.c
some time ago.

Please edit your Newsgroups lines more carefully.

Thanks,
	/rich $alz
-- 
Please send comp.sources.unix-related mail to rsalz@uunet.uu.net.

djones@megatest.UUCP (Dave Jones) (10/25/88)

From article <eB93d#29Vk4y=eric@golux.UUCP>, by eric@golux.UUCP (Eric S. Raymond):

> NAME
>    obfuscate -- code obfuscator for semi-secure source code distribution
> 
> SYNOPSIS
>    obfuscate [file...]
> 


Perhaps we should have a contest to see who can write the best version
of this... "The Obfuscating C Contest."

Then again, maybe not.

libes@cme-durer.ARPA (Don Libes) (10/25/88)

I went to a talk in April '87, where Jim Gimpel (the fellow who wrote
C-terp) described a system for doing exactly this - converting readable
C code to obfuscated code for the purposes of source distribution.

It was definitely written by that time because he showed some
examples.  Oddly, though, I've never seen any advertisements for it
since then.

Don Libes          libes@cme.nbs.gov      ...!uunet!cme-durer!libes

jeff@amsdsg.UUCP (Jeff Barr) (10/26/88)

I recently received information on a product known as PC-LINT (?) sold by
Gimpel Software (Pensylvania, I believe).

They distribute PC-LINT in an OBSCURED source form which allows recompilation
but apparently is not amenable to human inspection.

I wonder what 'cb' could do for it?

I'm not associated with Gimpel Software.

							Jeff

	 /-------------------------------------------------------\
	/  Jeff Barr   AMS-DSG   uunet!amsdsg!jeff   800-832-8668 \
	\  American Express: "Don't leave $HOME without it".	  /
	 \-------------------------------------------------------/
-- 
	 /-------------------------------------------------------\
	/  Jeff Barr   AMS-DSG   uunet!amsdsg!jeff   800-832-8668 \
	\  American Express: "Don't leave $HOME without it".	  /
	 \-------------------------------------------------------/