Remove hint.html and index.html
As per discussions on GitHub the index.html and hint.html files should be deleted in favour of README.md files (from any .text/.txt/.markdown/.md files which will be turned into README.md in an upcoming commit).
This commit is contained in:
1 parent
ee8a36310f
commit
77fb0f11a2
143 files changed
-28606
No files matched your search
@@ -1,185 +0,0 @@
|
||||
<!doctype html public "-//W3C//DTD HTML 4.0 Transitional //EN">
|
||||
<html>
|
||||
<head>
|
||||
<meta name="GENERATOR" content="mkd2html 2.2.2">
|
||||
<meta http-equiv="Content-Type"
|
||||
content="text/html; charset=utf-8"> <link rel="stylesheet"
|
||||
type="text/css"
|
||||
href="../hint.css" />
|
||||
<title></title>
|
||||
<title>Best abuse of CPP</title>
|
||||
</head>
|
||||
<body>
|
||||
<CENTER>
|
||||
<IMG SRC="/png/ioccc.png" ALT="IOCCC" height=78 width=267>
|
||||
<P><FONT size="6"><I>The International Obfuscated C Code Contest</I></FONT></P>
|
||||
<div id="bar">
|
||||
<ul>
|
||||
<li><a href="../index.html">About the 27th IOCCC</a></li>
|
||||
<li><a href="../whowon.html">27th IOCCC Winners</a></li>
|
||||
<li><a href="/index.html">IOCCC home</a></li>
|
||||
<li><a href="/winners.html">List of All Winners</a></li>
|
||||
<li><a href="/judges.html">The Judges</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<P><FONT size="6"><B>A 27<sup>th</sup> IOCCC Winner</B></FONT></P>
|
||||
</CENTER>
|
||||
|
||||
|
||||
<h1>Best abuse of CPP</h1>
|
||||
|
||||
<p>Don Yang<br/>
|
||||
<a href="http://uguu.org/">http://uguu.org/</a></p>
|
||||
|
||||
<p>The code for this entry can be found in <a href="prog.c">prog.c</a></p>
|
||||
|
||||
<h2>Judges' comments:</h2>
|
||||
|
||||
<h3>To use:</h3>
|
||||
|
||||
<pre><code>make
|
||||
./prog
|
||||
</code></pre>
|
||||
|
||||
<h3>Try:</h3>
|
||||
|
||||
<pre><code>echo "International Obfuscated C Code Contest 2020" | ./prog 23209 > code.c
|
||||
|
||||
# compile without a PIN
|
||||
cc code.c -o decode
|
||||
# yes, you must compile with -DPIN=<number>
|
||||
|
||||
# compile with the wrong pin
|
||||
cc -DPIN=555 code.c -o wrongcoded # wait for it ...
|
||||
./wrongcoded | hexdump -C
|
||||
# Use the wrong PIN: You're gonna have a bad time.
|
||||
|
||||
# compile with a PIN
|
||||
cc -DPIN=23209 code.c -o decoded # wait for it ...
|
||||
./decoded
|
||||
# weeeeeeeeeeeeee! You are having a good time!
|
||||
</code></pre>
|
||||
|
||||
<h3>Selected Judges Remarks:</h3>
|
||||
|
||||
<p>You might think of this entry as code obfuscater with a code.
|
||||
If you use the wrong code, you’re gonna have a bad time.
|
||||
What is compiling this entry about?
|
||||
<a href="https://southpark.fandom.com/wiki/Asspen/Script">Having a good .. time</a>!</p>
|
||||
|
||||
<p>This winning entry also comes with a <a href="spoiler.html">JavaScript timelapse
|
||||
spoiler</a> that shows how this entry was written.</p>
|
||||
|
||||
<h2>Author’s comments:</h2>
|
||||
|
||||
<h3>Synopsis</h3>
|
||||
|
||||
<pre><code>echo "Hello world" | ./mile 12345 > encoded.c
|
||||
|
||||
gcc -DPIN=12345 encoded.c -o ./decoded && ./decoded
|
||||
</code></pre>
|
||||
|
||||
<h3>Details</h3>
|
||||
|
||||
<p>Mile is a C code generator. Run without arguments for the help message below:</p>
|
||||
|
||||
<pre><code>usage: [PIN] < input.txt > output.c
|
||||
|
||||
where [PIN] is an integer in the range of 1..65535
|
||||
</code></pre>
|
||||
|
||||
<p>When run with an encoding PIN (first command line argument), Mile will
|
||||
read bytes from stdin and generate C code on stdout. Example:</p>
|
||||
|
||||
<pre><code>echo "Hello, world!" | ./mile 56789 > encoded.c
|
||||
</code></pre>
|
||||
|
||||
<p>This generated code will reproduce the same input bytes on stdout when
|
||||
executed, if it was compiled with the same encoding PIN.</p>
|
||||
|
||||
<pre><code>gcc -DPIN=56789 encode.c -o decoded
|
||||
</code></pre>
|
||||
|
||||
<p>The generated code reconstructs all data at compile time by seeding a
|
||||
random number generator with the given PIN to reproduce the input bytes,
|
||||
and simply does one fwrite() call at run time to print those bytes. Not
|
||||
specifying a PIN is a compile time error. Specify the wrong PIN and
|
||||
output code will still compile, but will likely produce garbage instead of
|
||||
the input bytes. If the original input was empty then any PIN works, but
|
||||
you might get a compile time warning complaining about empty arrays.</p>
|
||||
|
||||
<p>Because all data is reconstructed at compile time, expect the compile time
|
||||
to be excruciatingly long if you try to encode too much data. Code
|
||||
generated by encoding a haiku will probably compile in seconds, a limerick
|
||||
may require tens of seconds, a sonnet will take minutes. Give Mile an
|
||||
epic poem and you can probably write a faster preprocessor before GCC is
|
||||
done (Clang probably already failed long before then).</p>
|
||||
|
||||
<p>I see that there is a lack of preprocessor abuse in recent years, probably
|
||||
because programming in preprocessor is too tedious. Mile is meant to help
|
||||
with that by producing C code filled with at least 98% preprocessor lines
|
||||
for any input. Now you too can enjoy long compile times with minimal
|
||||
effort.</p>
|
||||
|
||||
<h3>Features</h3>
|
||||
|
||||
<ul>
|
||||
<li><p>Output is randomized using system clock, so if you wait a second between
|
||||
runs, you should get a different generated code even for the same
|
||||
encoding PIN.</p></li>
|
||||
<li><p>Customized bytecode encoding of preprocessor boilerplates, mostly for
|
||||
compression but should also make reverse engineering more fun.</p></li>
|
||||
<li><p>CRC32 of the source code is embedded in the source code itself.</p></li>
|
||||
<li><p>Code layout shaped to resemble “Mile” from “Didn’t I Say to Make My
|
||||
Abilities Average in the Next Life?!”. Mile is known to be able to talk
|
||||
to nanomachines directly, which is exactly what programming in
|
||||
preprocessor feels like.</p></li>
|
||||
</ul>
|
||||
|
||||
|
||||
<h3>Compatibility</h3>
|
||||
|
||||
<p>Mile has been verified to work in these environments (also, compiles
|
||||
without warnings on all of these):</p>
|
||||
|
||||
<ul>
|
||||
<li>gcc 9.2.0 on Cygwin</li>
|
||||
<li>gcc 8.3.0 on Linux</li>
|
||||
<li>gcc 7.4.0 on Cygwin</li>
|
||||
<li>gcc 6.1.0 on JSLinux</li>
|
||||
<li>gcc 5.4.0 on Linux</li>
|
||||
<li>clang 8.0.1 on Linux</li>
|
||||
<li>clang 8.0.1 on Cygwin</li>
|
||||
<li>tcc 0.9.27 on Linux</li>
|
||||
<li>tcc 0.9.25 on JSLinux</li>
|
||||
</ul>
|
||||
|
||||
|
||||
<p>Output of Mile is a bit more taxing, and only works with a subset of the
|
||||
above:</p>
|
||||
|
||||
<ul>
|
||||
<li>gcc: works just fine when using 8.3.0 and below, but may trigger warning
|
||||
for large files. gcc 9.2.0 and above may crash with large files.</li>
|
||||
<li>clang: works fine for small files, fails on large files due to
|
||||
<a href="https://bugs.llvm.org/show_bug.cgi?id=44480">preprocessor bug</a>.</li>
|
||||
<li>tcc: works just fine on Linux. Fails silently on JSLinux.</li>
|
||||
</ul>
|
||||
|
||||
|
||||
<p>For people eager to encode large files, an extra utility has been packaged
|
||||
with this entry to preprocess the generated output to make them more
|
||||
acceptable to typical compilers. View the <a href="cppp.cc">cppp.cc</a> source and
|
||||
then compile it with a c++ compiler of your choice.</p>
|
||||
<BR>
|
||||
<HR>
|
||||
<TABLE><TR>
|
||||
<TD><a rel="license" href="https://creativecommons.org/licenses/by-sa/3.0/"><img alt="Creative Commons License" style="border-width:0" src="/png/by-sa-3.0-88x31.png" /></a></TD>
|
||||
<TD><P>© Copyright 1984-2020,
|
||||
<A HREF="/judges.html">Leo Broukhis, Simon Cooper, Landon Curt Noll</A>
|
||||
- All rights reserved<BR>
|
||||
This work is licensed under a <a rel="license" href="https://creativecommons.org/licenses/by-sa/3.0/">Creative Commons Attribution-ShareAlike 3.0 Unported License</a>.</P></TD>
|
||||
<TD> <!--<a href="https://validator.w3.org/check?uri=referer"><img src="https://www.w3.org/Icons/valid-html401" alt="Valid HTML 4.01 Transitional" height="31" width="88"></a>--></TD>
|
||||
</TR></TABLE>
|
||||
</body>
|
||||
</html>
|
||||
Reference in new issue
Block a user