Resources for Computer Architecture

This page will be organized more cleanly in the future. It includes materials for the entire semester, not just the beginning.
  1. Notes on x86 architecture (and useful exploration links for Linux asm)
  2. CPU Layout (will be added)
  3. Cache coherency (will be added)
  4. Multicore architectures (e.g. AMD Hypertransport) (will be added)
  5. GPGPU architectures (General Purpose Graphics Processing Units) (will be added)
    1. NVIDIA Cuda (including NVIDIA G8 and CUDA Overview)
    2. Intel Larrabee
    3. OpenCL (a newer standard)
  6. Hacker Curriculum (hacking and ethics):
  7. Security issues relating to buffer overflows, escalation of privileges
    1. A syllabus from a related course by Sergey Bratus at Dartmouth Coullege
      1. Buffer overruns and related issues
      2. PLT and GOT (global offset table) "weak links" in the linker
    2. Return-oriented programming: Cracking the kernel through Tcl-like (Forth-like) threaded programming
      1. "Return-oriented programming, or when good instructions go bad" (will add link), Novav Shacham
      2. Start here (Phrack, Nergal)
      3. PaX (Phrack)
      4. return-oriented rootkits (Hund/Holz) (and slides)
  8. This Wikipedia return-to-libc attack article is a good place to start, in looking for other Wikipedia security articles, and external links such as Bypassing non-executable-stack during exploitation using return-to-lib (.pdf)
  9. ELF hackery (cracking the linker)
    1. Notes on linkers for book Linkers and Loaders
    2. ELF Hackery (part 1)
    3. ELF Hackery (part 2)
    4. grugg -- Cheating the ELF (pdf)
    5. More ELF Buggery (follow-on paper)
  10. (optional) DMTCP (Distributed MultiThreaded CheckPointing)
  11. (optional) Virtualization, Paravirtualization, Xen (free, open source virtual machine) and other topics for virtual machines.


Potential Ideas for Projects concerning security. This list will be extended to provide project ideas in many areas --- not just in security.
example project ideas (ignore Crypto part): Dynamic loading, library function hijacking, ELF hackery

  1. Hack the Linux dynamic linker ld-linux.so to log information and perform ad-hoc checks when libraries and loaded and functions are dynamically linked. You can start with a provided prototype.
  2. Write a tool that would add a given executable payload to an ELF binary and modify the binary headers appropriately so that it retains its intended functionality. The code's activation method is up to you -- you can have it run before the executable starts or interpose itself into a standard library function call. Such code could be used in an ELF virus or as framework for inserting trapdoors to catch intruders.