O O Ø O O O O
Assembly Language Hackery
For a guy who got his start with computers when I did, reverse engineering and assembly language were a way of life. Over the years, I've done less and less work in assembly, though it never seems to go away completely. This page is a collection of miscellany devoted to asm hackery, and is usually updated whenever I'm dragged back into the fray.
x86 References and Resources
- For x86, the Intel 64 and IA-32 manuals are pretty much the bible. I think it is up to 5 volumes now:
Additional Intel Information:
- AMD64 Developer Documentation— the other, better chip.
- Software Optimization Guide for AMD Athlon™ 64 and AMD Opteron™ Processors
- AMD64 Architecture Programmer's Manual Volume 1: Application Programming
- AMD64 Architecture Programmer's Manual Volume 2: System Programming
- AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and system Instructions
- AMD64 Architecture Programmer's Manual Volume 4: 128-Bit Media Instructions
- AMD64 Architecture Programmer's Manual Volume 5: 64-Bit Media and x87 Floating-Point Instructions
- The GNU Assembler (GAS) Manual
- One particularly good (and free) reference on x86 assembly language programming is the Art of Assembly Language Programming. The tools links at the same site are also useful.
- Iczelion's page (and tutorials) may also be useful.
Debugging
Handy tip for debugging assembly from GDB (originally from Dmitry Bakhvalov.
(gdb) disassemble _start (Place a breakpoint at _start+1) (If placed at _start the breakpoint (gdb) b *0x8048075 To step thru the code I use the following macro: (gdb)define n >ni >printf "eax=%x ebx=%x ...etc...",$eax,$ebx,...etc... >x /8i $pc >end Then start the program with r command and debug with n.
Reverse Engineering
Reverse engineering is the start of any good hack. Fravia's site is an oldie, but a goodie. CrackZ has a good tutorial page. A list of tools can be found at protools.
Miscellany
One that I've always enjoyed: +ORC stalking.