KEMBAR78
CNIT 127 Lecture 7: Intro to 64-Bit Assembler (not in book) | PDF
CNIT 127: Exploit Development



Lecture 7: 64-bit Assembler
Not in textbook
Rev. 3-9-17
64-bit Registers
• rip = Instruction pointer
• rsp = top of stack
Windows Limitations
• Windows doesn't implement full 64-bit
addressing
• Windows 2008 Server uses 44 bits
– Max. 16 TB RAM
• Windows 8.1, 2015 revision, uses 48 bits
– Max. 256 TB RAM
• Links Ch L7d, L7e
OS Limitations
• OS uses
top half
• User
programs
use lower
half
System Calls
• syscall replaces INT 80
L7h: Searchable Linux Syscall Table
L7c: Introduction to x64 Assembly
Intel Developer Zone
• More details
about
registers
Common Opcodes
Syscall 1: Write
Simplest Program: ABC
Works, then Crashes
(no exit)
Exit
Works Without Crashing
Letters in Order
Using a .data section
• db = "Define Byte"
Objdump
Using gdb
• .data and .text sections appear the same
.text and .data Sections
info registers
Using read
"echo" with a .data section
Works with Junk at End
Caesar Cipher
Works for 4 Bytes Only
Objdump Shows a 32-bit Value
Intel 64 and IA-32 Architectures
Software Developer's Manual
Must use a Register
Now it Works
Challenge 1

"Hello from YOURNAME"
Challenge 2

Caesar (3 steps back)
Challenge 3: XOR Encryption

CNIT 127 Lecture 7: Intro to 64-Bit Assembler (not in book)