Skip to topic | Skip to bottom
Bennington College
r1.27 - 06 Mar 2006 - 02:01 - JoeHolt

Start of topic | Skip to actions

YESTERYEAR

March 6, 2006

In order to learn how computers work, we need to return to a time before computer innards consisted of featureless silicon blocks. We need to go back to a time where you could learn by tugging on wires and watching the red glow of LEDs.


19,435 PAGES

December 7, 2005

A disassembly of iTunes
iTunes disassembly, as a text file. 1,107,740 lines.
iTunes disassembly, as a PDF. 19,435 pages.

If you want to understand the disassemblies, you should look at this PowerPC reference. That's the microprocessor in current generation Macintoshes. Scroll down to the section titled PowerPC application-level registers and look at the number and kinds of registers it has, and a little further down to PowerPC application-level instruction set and study the summary of its assembly language instructions. Notice that for all it's advances, the microprocessor still basically branches, does math, and plays with memory. Just what microprocessors did 30 years ago.

What is a disassembly? It's when you take the binary of a program and turn it back into a more readable text file. It's similar to what the author may've originally written (if the code were written in assembly language), but it lacks the author's variable and function names, and any comments that might've been in the sources. Typically programs are written in higher level languages, such as C, so a disassembly is the first step to figuring out what the program does and how it works, but it's not the end. A good knowledge of what compiler-generated assembly code looks like is a big help.

Viruses
Wikipedia has a good set of introductory articles about computer viruses:

I'm a fan of the book Firewalls and Internet Security by William Cheswick. The library has it. I first learned about the silliness of "Security through obscurity" from this book. It's a classic.

Regarding the vulnerability of various operating systems:

  • As of November 2005, Symantec had not identified a single Macintosh virus.
  • In the first half of 2005, 11,000 new viruses for Windows were identified.

(From Newsweek, "Ask the Technologist," November 7, 2005)

Recently a huge botnet was discovered and broken up by Dutch police and the FBI. A 19-year-old programmer and two accomplices in their 20s were responsible for comprising over a million computers world-wide. It's got everything: viruses, child pornography, distributed denial of service revenge attacks. Here are a few articles that covered it:

Another botnet in the news. "3 accused of inducing ill effects on computers at local hospital," Seattle Times, February 11, 2006.

It turns out the Seattle hospital's computers — along with up to 50,000 others across the country — had been turned into an army of robots controlled by 20-year-old Christopher Maxwell of Vacaville, Calif., according to a federal indictment issued Thursday. And Maxwell, along with two juveniles, earned about $100,000 in the process, court documents state.
Their scheme was to install adware on the remote computers and receive payment from the adware companies.

OF CODES

November 30, 2005

Phase 1
0010000000000000001000010000000100011000010000000010100011110000110100010000000001000010010010010010100000000000110100010000000001000010010010011110011111110111  

Phase 2
0010000000000000
0010000100000001
0001100001000000
0010100011110000
1101000100000000
0100001001001001
0010100000000000
1101000100000000
0100001001001001
1110011111110111
 
(Mary's interpretation)

Phase 3
0010000000000000    MOV   R0, #0
0010000100000001    MOV   R1, #1
0001100001000000    ADD   R0, R0, R1
0010100011110000    CMP   R0, #240
1101000100000000    BNE   +4
0100001001001001    NEG   R1, R1
0010100000000000    CMP   R0, #0
1101000100000000    BNE   +4
0100001001001001    NEG   R1, R1
1110011111110111    B     -14

Phase 4
0   MOV   R0, #0        x = 0;
2   MOV   R1, #1        dx = 1;
4   ADD   R0, R0, R1    loop: x = x + dx;
6   CMP   R0, #240      if (x == 240)
8   BNE   +4
10  NEG   R1, R1        dx = -dx;
12  CMP   R0, #0        if (x == 0)
14  BNE   +4
16  NEG   R1, R1        dx = -dx;
18  B     -14           goto loop;

Phase 5
x = 0;
dx = 1;
while (1) {
   x = x + dx;
   if (x == 240) {
      dx = -dx;
   }
   if (x == 0) {
      dx = -dx;
   }
}

I Attachment sort Action Size Date Who Comment
OfCodes.zip manage 233.6 K 30 Nov 2005 - 11:40 JoeHolt  
codebw.gif manage 0.7 K 30 Nov 2005 - 21:42 JoeHolt  
iTunesdisassembly.txt manage 25981.8 K 07 Dec 2005 - 11:23 JoeHolt  
iTunesdisassembly.pdf manage 39859.5 K 07 Dec 2005 - 11:24 JoeHolt