Typo and format fixes 1984/mullender/README.md

Numerous typo fixes (like in links with an extraneous ')') and format fixes
were done.

Rebuilt index.html.
This commit is contained in:
Cody Boone Ferguson committed 2024-04-14 09:34:04 -07:00
1 parent dc8b61cb85
commit 878235d9b2
2 files changed
+35 -31

No files matched your search

+16 -14
View File
@@ -168,8 +168,8 @@ article for the quote! For a more detailed analysis, taken from the book Obfusca
and Other Mysteries, see below. We hope that this is okay with the author of the
book. Considering that the analysis is entirely the authors' comments we don't
think this will be a problem. Unfortunately the excerpt was PDF and it did not
copy paste well. We had to go back and forth to type so it's possible he made a
typo though he also fixed some typos found in the extract. As for the other
copy paste well. We had to go back and forth to type so it's possible we made a
typo though we also fixed some typos found in the extract. As for the other
comments:
### Remarks from the author:
@@ -194,7 +194,7 @@ We decided for fun to create an
[obfuscated](https://en.wikipedia.org/wiki/Obfuscation_(software)) set of
programs, only for the
[PDP](https://en.wikipedia.org/wiki/Programmed_Data_Processor), to do this, but
circumventing the channel (i.e. cheating, hence the needed obfuscation.). Our
circumventing the channel (i.e. cheating, hence the needed obfuscation). Our
programs worked and we handed them in.
Of course, the teacher had a good laugh and then rejected our submission. (We
@@ -207,12 +207,12 @@ there](https://groups.google.com/g/net.lang.c/c/lx-TAuEyeRI/m/HdOOnNx6LC0J) and
it.
Since we had just recently created these [obfuscated
programs](https://en.wikipedia.org/wiki/Obfuscation_(software))) we decided we could
programs](https://en.wikipedia.org/wiki/Obfuscation_(software)) we decided we could
use the same technique for an obfuscated C program. We upped the ante a bit by
making it "portable".
To add to the
[obfuscation](https://en.wikipedia.org/wiki/Obfuscation_(software))), we used
[obfuscation](https://en.wikipedia.org/wiki/Obfuscation_(software)), we used
different formats for the integers in the array: some in decimal, some in octal,
some in hexadecimal, and when the value would fit, some as an ASCII character.
@@ -312,11 +312,11 @@ program counter points at the second
[instruction](https://en.wikipedia.org/wiki/Instruction_set_architecture#Instructions),
we subtract 2 from the scratch register in the second instruction. Then we
subtract the length of the string and store the result in the location with
label 0. This has to do with the calling sequence of [system
label `0`. This has to do with the calling sequence of [system
calls](https://en.wikipedia.org/wiki/System_call) on the
[PDP](https://en.wikipedia.org/wiki/Programmed_Data_Processor). Following the
`sys` instruction is the system call number (4 for `write()`), the address of
the buffer (pointed to by label 0), and the length of the buffer (9). The [file
the buffer (pointed to by label `0`), and the length of the buffer (9). The [file
descriptor](https://en.wikipedia.org/wiki/File_descriptor) is in register `r0`.
The rest of the code implements a delay loop. In each iteration, a non-existing
system call (55) slows things down.
@@ -358,18 +358,18 @@ The first word (after the label `vax`) is the
[PDP](https://en.wikipedia.org/wiki/Programmed_Data_Processor) [branch
instruction](https://en.wikipedia.org/wiki/Branch_(computer_science)).
[PDP](https://en.wikipedia.org/wiki/Programmed_Data_Processor) branch
instructions are octal `400+` the distance divided by 2. The string that both
instructions are octal `400` + the distance divided by `2`. The string that both
the [PDP](https://en.wikipedia.org/wiki/Programmed_Data_Processor) and
[VAX](https://en.wikipedia.org/wiki/VAX)
programs use is after the `str` label, and the
[PDP](https://en.wikipedia.org/wiki/Programmed_Data_Processor) code is after the
pdp label.
`pdp` label.
On the [VAX](https://en.wikipedia.org/wiki/VAX), the program
[pushes](https://en.wikipedia.org/wiki/Stack_(abstract_data_type)) 9 (the length
of the string), the address of the string and 1 (the [file
descriptor](https://en.wikipedia.org/wiki/File_descriptor) on the
[stack](https://en.wikipedia.org/wiki/Stack_(abstract_data_type)) and calls
[stack](https://en.wikipedia.org/wiki/Stack_(abstract_data_type))) and calls
`write(2)`. Since we didn't know the exact calling sequence for [system
calls](https://en.wikipedia.org/wiki/System_call), we just copied the source for
the `write(2)` system call stub into our program. After `write(2)` finishes, the
@@ -445,7 +445,8 @@ compiled in modern systems.
}
```
As can be seen, there is a slight preference for decimal, and also a character
As can be seen, there is a slight preference for
[decimal](https://en.wikipedia.org/wiki/Decimal), and also a character
format is sometimes used, but only if the data is a printable ASCII character.
When we ran this program, we were almost completely satisfied with the result.
@@ -455,9 +456,10 @@ Since everybody knows what a [PDP-11](https://en.wikipedia.org/wiki/PDP-11)
branch instruction looks like (everyone knows that the traditional magic word
for an executable, `0407`, is a [PDP-11](https://en.wikipedia.org/wiki/PDP-11)
[branch](https://en.wikipedia.org/wiki/Branch_(computer_science))), we changed
that to decimal. After checking the size of the resulting program we saw that it
was one byte too long. The limit was 512 bytes, and our program was 513 bytes.
So we changed the word `and` in the comment to `&&`.
that to [decimal](https://en.wikipedia.org/wiki/Decimal). After checking the
size of the resulting program we saw that it was one byte too long. The limit
was 512 bytes, and our program was 513 bytes. So we changed the word `and` in
the comment to `&&`.
<!--
+19 -17
View File
@@ -241,8 +241,8 @@ article for the quote! For a more detailed analysis, taken from the book Obfusca
and Other Mysteries, see below. We hope that this is okay with the author of the
book. Considering that the analysis is entirely the authors’ comments we don’t
think this will be a problem. Unfortunately the excerpt was PDF and it did not
copy paste well. We had to go back and forth to type so it’s possible he made a
typo though he also fixed some typos found in the extract. As for the other
copy paste well. We had to go back and forth to type so it’s possible we made a
typo though we also fixed some typos found in the extract. As for the other
comments:</p>
<h3 id="remarks-from-the-author">Remarks from the author:</h3>
<p>I have never known a lot about the <a href="https://en.wikipedia.org/wiki/VAX">VAX</a>
@@ -263,7 +263,7 @@ channel. This channel was simulated with a pair of
<a href="https://en.wikipedia.org/wiki/Obfuscation_(software)">obfuscated</a> set of
programs, only for the
<a href="https://en.wikipedia.org/wiki/Programmed_Data_Processor">PDP</a>, to do this, but
circumventing the channel (i.e. cheating, hence the needed obfuscation.). Our
circumventing the channel (i.e. cheating, hence the needed obfuscation). Our
programs worked and we handed them in.</p>
<p>Of course, the teacher had a good laugh and then rejected our submission. (We
knew him well, so we could get away with this.)</p>
@@ -273,11 +273,11 @@ where we read a bunch of newsgroups. I’m sure it was <a href="https://groups.g
there</a> and we saw
it.</p>
<p>Since we had just recently created these <a href="https://en.wikipedia.org/wiki/Obfuscation_(software)">obfuscated
programs</a>) we decided we could
programs</a> we decided we could
use the same technique for an obfuscated C program. We upped the ante a bit by
making it “portable”.</p>
<p>To add to the
<a href="https://en.wikipedia.org/wiki/Obfuscation_(software)">obfuscation</a>), we used
<a href="https://en.wikipedia.org/wiki/Obfuscation_(software)">obfuscation</a>, we used
different formats for the integers in the array: some in decimal, some in octal,
some in hexadecimal, and when the value would fit, some as an ASCII character.</p>
<p>The rest is history.</p>
@@ -357,11 +357,11 @@ program counter points at the second
<a href="https://en.wikipedia.org/wiki/Instruction_set_architecture#Instructions">instruction</a>,
we subtract 2 from the scratch register in the second instruction. Then we
subtract the length of the string and store the result in the location with
label 0. This has to do with the calling sequence of <a href="https://en.wikipedia.org/wiki/System_call">system
label <code>0</code>. This has to do with the calling sequence of <a href="https://en.wikipedia.org/wiki/System_call">system
calls</a> on the
<a href="https://en.wikipedia.org/wiki/Programmed_Data_Processor">PDP</a>. Following the
<code>sys</code> instruction is the system call number (4 for <code>write()</code>), the address of
the buffer (pointed to by label 0), and the length of the buffer (9). The <a href="https://en.wikipedia.org/wiki/File_descriptor">file
the buffer (pointed to by label <code>0</code>), and the length of the buffer (9). The <a href="https://en.wikipedia.org/wiki/File_descriptor">file
descriptor</a> is in register <code>r0</code>.
The rest of the code implements a delay loop. In each iteration, a non-existing
system call (55) slows things down.</p>
@@ -397,17 +397,17 @@ program that we came up with is as follows:</p>
<a href="https://en.wikipedia.org/wiki/Programmed_Data_Processor">PDP</a> <a href="https://en.wikipedia.org/wiki/Branch_(computer_science)">branch
instruction</a>.
<a href="https://en.wikipedia.org/wiki/Programmed_Data_Processor">PDP</a> branch
instructions are octal <code>400+</code> the distance divided by 2. The string that both
instructions are octal <code>400</code> + the distance divided by <code>2</code>. The string that both
the <a href="https://en.wikipedia.org/wiki/Programmed_Data_Processor">PDP</a> and
<a href="https://en.wikipedia.org/wiki/VAX">VAX</a>
programs use is after the <code>str</code> label, and the
<a href="https://en.wikipedia.org/wiki/Programmed_Data_Processor">PDP</a> code is after the
pdp label.</p>
<code>pdp</code> label.</p>
<p>On the <a href="https://en.wikipedia.org/wiki/VAX">VAX</a>, the program
<a href="https://en.wikipedia.org/wiki/Stack_(abstract_data_type)">pushes</a> 9 (the length
of the string), the address of the string and 1 (the <a href="https://en.wikipedia.org/wiki/File_descriptor">file
descriptor</a> on the
<a href="https://en.wikipedia.org/wiki/Stack_(abstract_data_type)">stack</a> and calls
<a href="https://en.wikipedia.org/wiki/Stack_(abstract_data_type)">stack</a>) and calls
<code>write(2)</code>. Since we didn’t know the exact calling sequence for <a href="https://en.wikipedia.org/wiki/System_call">system
calls</a>, we just copied the source for
the <code>write(2)</code> system call stub into our program. After <code>write(2)</code> finishes, the
@@ -479,7 +479,8 @@ compiled in modern systems.</p>
printf(&quot;};\n&quot;);
}
}</code></pre>
<p>As can be seen, there is a slight preference for decimal, and also a character
<p>As can be seen, there is a slight preference for
<a href="https://en.wikipedia.org/wiki/Decimal">decimal</a>, and also a character
format is sometimes used, but only if the data is a printable ASCII character.</p>
<p>When we ran this program, we were almost completely satisfied with the result.
The only problem we had was that the program had chosen an
@@ -488,9 +489,10 @@ Since everybody knows what a <a href="https://en.wikipedia.org/wiki/PDP-11">PDP-
branch instruction looks like (everyone knows that the traditional magic word
for an executable, <code>0407</code>, is a <a href="https://en.wikipedia.org/wiki/PDP-11">PDP-11</a>
<a href="https://en.wikipedia.org/wiki/Branch_(computer_science)">branch</a>), we changed
that to decimal. After checking the size of the resulting program we saw that it
was one byte too long. The limit was 512 bytes, and our program was 513 bytes.
So we changed the word <code>and</code> in the comment to <code>&amp;&amp;</code>.</p>
that to <a href="https://en.wikipedia.org/wiki/Decimal">decimal</a>. After checking the
size of the resulting program we saw that it was one byte too long. The limit
was 512 bytes, and our program was 513 bytes. So we changed the word <code>and</code> in
the comment to <code>&amp;&amp;</code>.</p>
<!--
Copyright © 1984-2024 by Landon Curt Noll. All Rights Reserved.
@@ -518,14 +520,14 @@ So we changed the word <code>and</code> in the comment to <code>&amp;&amp;</code
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1984/mullender/Makefile">Makefile</a> - entry Makefile</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1984/mullender/mullender.alt.c">mullender.alt.c</a> - alternative source</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1984/mullender/mullender.orig.c">mullender.orig.c</a> - original source</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1984/mullender/a.out.h">a.out.h</a> - header file for gentab.c for compatibility with 1984 systems</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1984/mullender/gentab.c">gentab.c</a> - author tool to generate code</li>
<li><a href="1984_mullender.tar.bz2">1984_mullender.tar.bz2</a> - download entry</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1984/mullender/a.out.h">a.out.h</a> - header file for gentab.c for compatibility with 1984 systems</li>
<li><a href="1984_mullender.tar.bz2">1984_mullender.tar.bz2</a> - download entry tarball</li>
</ul>
<h2 id="secondary-files">Secondary files</h2>
<ul>
<li><a href="index.html">index.html</a> - this web page</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1984/mullender/README.md">README.md</a> - markdown source for index.html</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1984/mullender/README.md">README.md</a> - markdown source for this web page</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1984/mullender/.entry.json">.entry.json</a> - description of entry in JSON</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1984/mullender/.gitignore">.gitignore</a> - list of files that should not be committed under git</li>
<li><a href=".path">.path</a> - directory path from top directory</li>