The core of `bin/gen-other-html.sh` code that converts entry non-README.md into HTML has been moved into a new tool: `bin/othermd2html.sh`. The `bin/othermd2html.sh` tool will be useful to the `bin/cvt-submission.sh` tool that is under development. Added info about `bin/othermd2html.sh` to `bin/README.md`. Changed `bin/gen-other-html.sh` VERSION from "1.4.1 2024-08-18" to "1.5 2024-08-27". HTML produced by `bin/gen-other-html.sh` now uses a "jump to" mid-bar test now shows the `YYYY/dir/index.html` link text (with `YYYY/dir/` added). Performed `make gen_other_html` to accomplish the above and to test under macOS. Performed `make gen_top_html` to accomplish the above and to test under macOS.
511 lines
17 KiB
HTML
511 lines
17 KiB
HTML
<!DOCTYPE html>
|
|
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
|
<!-- START: two lines up starts content from: inc/top.default.html -->
|
|
|
|
<!-- END: this line ends content from: inc/top.default.html -->
|
|
<!-- START: this line starts content from: inc/head.default.html -->
|
|
|
|
<head>
|
|
<link rel="stylesheet" href="../../ioccc.css">
|
|
<link href="https://fonts.googleapis.com/css2?family=Outfit:wght@100..900&display=swap" rel="stylesheet">
|
|
<meta charset="utf-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
|
|
<title>The International Obfuscated C Code Contest</title>
|
|
<link rel="icon" type="image/x-icon" href="../../favicon.ico">
|
|
<meta name="description" content="obfuscation.md for 2015/burton">
|
|
<meta name="keywords" content="IOCCC, 2015/burton, obfuscation.md">
|
|
</head>
|
|
|
|
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
|
|
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
|
|
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
|
|
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
|
|
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
|
|
|
|
<!-- END: this line ends content from: inc/head.default.html -->
|
|
|
|
<!-- -->
|
|
<!-- This web page was formed via the tool: bin/gen-other-html.sh -->
|
|
<!-- The content of main section of this web page came from: 2015/burton/obfuscation.md -->
|
|
<!-- -->
|
|
|
|
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
|
|
<!-- !!! Do not modify this web page, instead modify the file: 2015/burton/obfuscation.md !!! -->
|
|
<!-- !!! Do not modify this web page, instead modify the file: 2015/burton/obfuscation.md !!! -->
|
|
<!-- !!! Do not modify this web page, instead modify the file: 2015/burton/obfuscation.md !!! -->
|
|
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
|
|
|
|
<!-- Markdown content was converted into HTML via the tool: bin/md2html.sh -->
|
|
|
|
<!-- START: this line starts content from: inc/body.default.html -->
|
|
|
|
<body>
|
|
|
|
<!-- END: this line ends content from: inc/body.default.html -->
|
|
<!-- START: this line starts content from: inc/topbar.default.html -->
|
|
|
|
<div class="theader">
|
|
<nav class="topbar">
|
|
<div class="container">
|
|
<div class="logo">
|
|
<a href="../../index.html" class="logo-link">
|
|
IOCCC
|
|
</a>
|
|
</div>
|
|
|
|
<div class="topbar-items">
|
|
<div class="item">
|
|
<span class="item-header">
|
|
Entries
|
|
</span>
|
|
|
|
<div class="sub-item">
|
|
<div class="outfit-font">
|
|
<a href="../../years.html" class="sub-item-link">
|
|
Winning Entries
|
|
</a>
|
|
</div>
|
|
|
|
<div class="outfit-font">
|
|
<a href="../../authors.html" class="sub-item-link">
|
|
Winning Authors
|
|
</a>
|
|
</div>
|
|
|
|
<div class="outfit-font">
|
|
<a href="../../location.html" class="sub-item-link">
|
|
Location of winning authors
|
|
</a>
|
|
</div>
|
|
|
|
<div class="outfit-font">
|
|
<a href="../../bugs.html" class="sub-item-link">
|
|
Bugs and (mis)features
|
|
</a>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="item">
|
|
<span class="item-header">
|
|
Status
|
|
</span>
|
|
|
|
<div class="sub-item">
|
|
<div class="outfit-font">
|
|
<a href="../../news.html" class="sub-item-link">
|
|
IOCCC News
|
|
</a>
|
|
</div>
|
|
|
|
<div class="outfit-font">
|
|
<a href="../../status.html" class="sub-item-link">
|
|
Contest status
|
|
</a>
|
|
</div>
|
|
|
|
<div class="outfit-font">
|
|
<a href="../../next/index.html" class="sub-item-link">
|
|
Rules and Guidelines
|
|
</a>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="item">
|
|
<span class="item-header">
|
|
FAQ
|
|
</span>
|
|
|
|
<div class="sub-item">
|
|
<div class="outfit-font">
|
|
<a href="../../faq.html" class="sub-item-link">
|
|
FAQ
|
|
</a>
|
|
</div>
|
|
|
|
<div class="outfit-font">
|
|
<a href="../../faq.html#submit" class="sub-item-link">
|
|
How to enter the IOCCC
|
|
</a>
|
|
</div>
|
|
|
|
<div class="outfit-font">
|
|
<a href="../../faq.html#fix_an_entry" class="sub-item-link">
|
|
Fixing IOCCC entries
|
|
</a>
|
|
</div>
|
|
|
|
<div class="outfit-font">
|
|
<a href="../../faq.html#fix_web_site" class="sub-item-link">
|
|
Fixing the website
|
|
</a>
|
|
</div>
|
|
|
|
<div class="outfit-font">
|
|
<a href="../../faq.html#fix_author" class="sub-item-link">
|
|
Updating author info
|
|
</a>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="item">
|
|
<span class="item-header">
|
|
About
|
|
</span>
|
|
|
|
<div class="sub-item">
|
|
<div class="outfit-font">
|
|
<a href="../../index.html" class="sub-item-link">
|
|
IOCCC Home
|
|
</a>
|
|
</div>
|
|
|
|
<div class="outfit-font">
|
|
<a href="../../judges.html" class="sub-item-link">
|
|
The IOCCC Judges
|
|
</a>
|
|
</div>
|
|
|
|
<div class="outfit-font">
|
|
<a href="../../contact.html" class="sub-item-link">
|
|
Contacting the IOCCC
|
|
</a>
|
|
</div>
|
|
|
|
<div class="outfit-font">
|
|
<a href="../../SECURITY.html" class="sub-item-link">
|
|
IOCCC Security Policy
|
|
</a>
|
|
</div>
|
|
|
|
<div class="outfit-font">
|
|
<a href="../../thanks-for-help.html" class="sub-item-link">
|
|
Thanks for the help
|
|
</a>
|
|
</div>
|
|
|
|
<div class="outfit-font">
|
|
<a href="../../markdown.html" class="sub-item-link">
|
|
IOCCC markdown guidelines
|
|
</a>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</nav>
|
|
|
|
<div class="header-mobile-menu">
|
|
<noscript>
|
|
<a href="../../nojs-menu.html" class="topbar-js-label">
|
|
Please Enable JavaScript
|
|
</a>
|
|
</noscript>
|
|
|
|
<button id="header-open-menu-button" class="topbar-mobile-menu">
|
|
<img
|
|
src="../../png/hamburger-icon-open.png"
|
|
alt="hamburger style menu icon - open state"
|
|
width=48
|
|
height=48>
|
|
</button>
|
|
|
|
<button id="header-close-menu-button" class="hide-content">
|
|
<img
|
|
src="../../png/hamburger-icon-closed.png"
|
|
alt="hamburger style menu icon - closed state"
|
|
width=48
|
|
height=48>
|
|
</button>
|
|
|
|
<div id="mobile-menu-panel" class="hide-content">
|
|
<div class="mobile-menu-container">
|
|
|
|
<div class="mobile-menu-wrapper">
|
|
<div class="mobile-menu-item">
|
|
Entries
|
|
</div>
|
|
<div class="mobile-submenu-wrapper">
|
|
|
|
<a class="mobile-submenu-item" href="../../years.html">
|
|
Winning Entries
|
|
</a>
|
|
|
|
<a class="mobile-submenu-item" href="../../authors.html">
|
|
Authors of winning IOCCC entries
|
|
</a>
|
|
|
|
<a class="mobile-submenu-item" href="../../location.html">
|
|
Location of authors
|
|
</a>
|
|
|
|
<a class="mobile-submenu-item" href="../../bugs.html">
|
|
Bugs and (mis)features
|
|
</a>
|
|
|
|
</div>
|
|
</div>
|
|
|
|
<div class="mobile-menu-wrapper">
|
|
|
|
<div class="mobile-menu-item">
|
|
Status
|
|
</div>
|
|
<div class="mobile-submenu-wrapper">
|
|
|
|
<a class="mobile-submenu-item" href="../../status.html">
|
|
Contest status
|
|
</a>
|
|
|
|
<a class="mobile-submenu-item" href="../../next/index.html">
|
|
Rules and Guidelines
|
|
</a>
|
|
|
|
<a class="mobile-submenu-item" href="../../news.html">
|
|
IOCCC News
|
|
</a>
|
|
|
|
</div>
|
|
</div>
|
|
|
|
<div class="mobile-menu-wrapper">
|
|
<div class="mobile-menu-item">
|
|
FAQ
|
|
</div>
|
|
<div class="mobile-submenu-wrapper">
|
|
|
|
<a class="mobile-submenu-item" href="../../faq.html">
|
|
Frequently Asked Questions
|
|
</a>
|
|
|
|
<a class="mobile-submenu-item" href="../../faq.html#submit">
|
|
How to enter the IOCCC
|
|
</a>
|
|
|
|
<a class="mobile-submenu-item" href="../../faq.html#fix_an_entry">
|
|
Fixing IOCCC entries
|
|
</a>
|
|
|
|
<a class="mobile-submenu-item" href="../../faq.html#fix_web_site">
|
|
Fixing the website
|
|
</a>
|
|
|
|
<a class="mobile-submenu-item" href="../../faq.html#fix_author">
|
|
Fixing author info
|
|
</a>
|
|
|
|
</div>
|
|
</div>
|
|
|
|
<div class="mobile-menu-wrapper">
|
|
<div class="mobile-menu-item">
|
|
About
|
|
</div>
|
|
<div class="mobile-submenu-wrapper">
|
|
|
|
<a class="mobile-submenu-item" href="../../index.html">
|
|
IOCCC Home
|
|
</a>
|
|
|
|
<a class="mobile-submenu-item" href="../../judges.html">
|
|
The IOCCC Judges
|
|
</a>
|
|
|
|
<a class="mobile-submenu-item" href="../../contact.html">
|
|
Contacting the IOCCC
|
|
</a>
|
|
|
|
<a class="mobile-submenu-item" href="../../thanks-for-help.html">
|
|
Thanks for the help
|
|
</a>
|
|
|
|
</div>
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<script>
|
|
var headerOpenMenuButton = document.getElementById("header-open-menu-button");
|
|
var headerCloseMenuButton = document.getElementById("header-close-menu-button");
|
|
var mobileMenuPanel = document.getElementById("mobile-menu-panel");
|
|
|
|
headerOpenMenuButton.addEventListener("click", () => {
|
|
headerOpenMenuButton.classList.remove("topbar-mobile-menu");
|
|
headerOpenMenuButton.classList.add("hide-content");
|
|
|
|
headerCloseMenuButton.classList.remove("hide-content");
|
|
headerCloseMenuButton.classList.add("topbar-mobile-menu");
|
|
|
|
mobileMenuPanel.classList.remove("hide-content");
|
|
mobileMenuPanel.classList.add("topbar-mobile-panel");
|
|
});
|
|
|
|
headerCloseMenuButton.addEventListener("click", () => {
|
|
headerCloseMenuButton.classList.remove("topbar-mobile-menu");
|
|
headerCloseMenuButton.classList.add("hide-content");
|
|
|
|
mobileMenuPanel.classList.add("hide-content");
|
|
mobileMenuPanel.classList.remove("topbar-mobile-panel");
|
|
|
|
headerOpenMenuButton.classList.add("topbar-mobile-menu");
|
|
headerOpenMenuButton.classList.remove("hide-content");
|
|
});
|
|
</script>
|
|
|
|
<!-- END: this line ends content from: inc/topbar.default.html -->
|
|
<!-- START: this line starts content from: inc/header.default.html -->
|
|
|
|
<div class="header">
|
|
<a href="../../2011/zucker/index.html">
|
|
<img src="../../png/ioccc.png"
|
|
alt="IOCCC image by Matt Zucker"
|
|
width=300
|
|
height=110>
|
|
</a>
|
|
<h1>The International Obfuscated C Code Contest</h1>
|
|
<h2>obfuscation.html for 2015/burton</h2>
|
|
</div>
|
|
|
|
<!-- END: this line ends content from: inc/header.default.html -->
|
|
<!-- START: this line starts content from: inc/navbar.up2index.html -->
|
|
|
|
<div class="navbar">
|
|
<a class="Left" href="index.html">↑ jump to 2015/burton/index.html ↑</a>
|
|
<a class="Right" href="https://validator.w3.org/nu/?doc=https%3A%2F%2Fioccc-src.github.io%2Ftemp-test-ioccc%2F2015%2Fburton%2Fobfuscation.html">✓</a>
|
|
</div>
|
|
|
|
<!-- END: this line ends content from: inc/navbar.up2index.html -->
|
|
<!-- START: this line starts content from: inc/before-content.default.html -->
|
|
|
|
<div class="content" id="content">
|
|
|
|
<!-- END: this line ends content from: inc/before-content.default.html -->
|
|
<!-- START: this line starts content for HTML phase 21 by: bin/pandoc-wrapper.sh via bin/md2html.sh -->
|
|
|
|
<!-- BEFORE: 1st line of markdown file: 2015/burton/obfuscation.md -->
|
|
<h3 id="deobfuscation">Deobfuscation</h3>
|
|
<p><code>calc</code> is a recursive-descent parser. It allocates from the stack deep enough
|
|
that all expressions are exhausted before the recursion stack depth reaches the
|
|
allocations. The memory map and source is documented in
|
|
<a href="src.doc.txt">src.doc.txt</a>. Tokens are encoded using values 0-20, where 0 is an
|
|
invalid token, 1 is minus, 2 is space, 3 is plus, etc. The necessary constants
|
|
are derived at the start of the program, using the guarantee that globals are
|
|
initialized to zero; so a correct NULL pointer is obtained from an uninitialized
|
|
global pointer variable, and the integers from uninitialized global <code>int</code>
|
|
variables. If <code>x</code> is a global <code>int</code>, then <code>!x</code> is <code>1</code>, and the derivation
|
|
proceeds from there, using some identities that are confusingly similar and
|
|
interestingly combined (increasing obfuscation):</p>
|
|
<pre><code> obc clr
|
|
--- ---
|
|
-~x x+1
|
|
~-x x-1
|
|
y-~x y+x+1</code></pre>
|
|
<p>The derived constants are a compromise between simple expressions, maximum utility,
|
|
and minimum number of variables used.</p>
|
|
<p>Command line arguments are copied into the upper half of the input buffer,
|
|
separated by a space. This allows the code to have a single input parser by using
|
|
a pointer-to-func to either <code>getchar(3)</code> if live, or a <code>getchar(3)</code> simulator.</p>
|
|
<p>A small amount of obfuscation comes from <code>void</code> functions declared <code>int</code>, but
|
|
missing <code>return</code>. This is necessary to allow these functions in ternary <code>?:</code>
|
|
expressions and paired with <code>&&</code> and <code>||</code>; but the requisite returns would add
|
|
symbol count at no benefit to obscurity or functionality. Function
|
|
decomposition was mostly chosen to avoid curly braces: if a <code>for</code>-loop required
|
|
multiple statements, the body became a new function. Last, but not least:
|
|
sharing state via global variables is an ancient and honored form of
|
|
obfuscation, and remarkably effective.</p>
|
|
<hr style="width:10%;text-align:left;margin-left:0">
|
|
<p>Jump to: <a href="#">top</a></p>
|
|
<!--
|
|
|
|
Copyright © 1984-2024 by Landon Curt Noll. All Rights Reserved.
|
|
|
|
You are free to share and adapt this file under the terms of this license:
|
|
|
|
Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)
|
|
|
|
For more information, see:
|
|
|
|
https://creativecommons.org/licenses/by-sa/4.0/
|
|
|
|
-->
|
|
<!-- AFTER: last line of markdown file: 2015/burton/obfuscation.md -->
|
|
|
|
<!-- END: this line ends content for HTML phase 21 by: bin/pandoc-wrapper.sh via bin/md2html.sh -->
|
|
<!-- START: this line starts content from: inc/after-content.default.html -->
|
|
|
|
</div>
|
|
|
|
<!-- END: this line ends content from: inc/after-content.default.html -->
|
|
<!-- START: this line starts content from: inc/footer.default.html -->
|
|
|
|
<!--
|
|
|
|
Copyright © 1984-2024 by Landon Curt Noll. All Rights Reserved.
|
|
|
|
You are free to share and adapt this file under the terms of this license:
|
|
|
|
Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)
|
|
|
|
For more information, see:
|
|
|
|
https://creativecommons.org/licenses/by-sa/4.0/
|
|
|
|
-->
|
|
|
|
<div class="footer">
|
|
|
|
<div id="copyright"><h3>Copyright © 1984-2024 by Landon Curt Noll:
|
|
<a href="https://creativecommons.org/faq/#what-does-some-rights-reserved-mean"
|
|
target="_blank"
|
|
rel="license noopener noreferrer">Some Rights Reserved</a></h3>
|
|
<p>
|
|
This work is <b>licensed by Landon Curt Noll</b> under
|
|
<b><a href="https://creativecommons.org/licenses/by-sa/4.0/?ref=chooser-v1"
|
|
target="_blank"
|
|
rel="license noopener noreferrer"
|
|
style="display:inline-block;">CC BY-SA 4.0</a></b>.
|
|
<img style="height:22px!important;margin-left:3px;vertical-align:text-bottom;"
|
|
src="../../png/cc.png"
|
|
alt="cc inside circle symbol">
|
|
<img style="height:22px!important;margin-left:3px;vertical-align:text-bottom;"
|
|
src="../../png/by.png"
|
|
alt="person inside circle symbol">
|
|
<img style="height:22px!important;margin-left:3px;vertical-align:text-bottom;"
|
|
src="../../png/sa.png"
|
|
alt="arrow looping back on itself inside circle symbol"><br>
|
|
You should <b>carefully review</b> the
|
|
<b><a href="https://creativecommons.org/licenses/by-sa/4.0/legalcode.en"
|
|
target="_blank"
|
|
rel="license noopener noreferrer">CC BY-SA 4.0 LEGAL CODE</a></b>
|
|
before using the licensed material.<br>
|
|
You may wish to review the
|
|
<b><a href="../../license.html"
|
|
target="_blank"
|
|
rel="license noopener noreferrer">highlights of some of the key features and terms</a></b>
|
|
of <b>CC BY-SA 4.0</b>.<br>
|
|
</p>
|
|
</div>
|
|
|
|
<div id="coda"><h3>Coda</h3>
|
|
<p>
|
|
<a href="https://validator.w3.org/nu/?doc=https%3A%2F%2Fioccc-src.github.io%2Ftemp-test-ioccc%2F2015%2Fburton%2Fobfuscation.html" rel="nofollow">Nu HTML check this web page</a><br>
|
|
<a href="#top">Jump to top</a> <a href="#content">Jump to Content</a>
|
|
</p>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<!-- END: this line ends content from: inc/footer.default.html -->
|
|
<!-- START: this line starts content from: inc/bottom.default.html -->
|
|
|
|
</body>
|
|
</html>
|
|
|
|
<!-- END: this line ends content from: inc/bottom.default.html -->
|