GCC 2022
GCC 2018 Alumni
Pwn2Own 2021
Routers
macOS
... the goal of a reverse engineering ... is to understand the functionality of a given program such that you can identify deeper issues.
~ ctf101.org
fill <bowl>, <ingredient/bowl>
stir <bowl>
chop <bowl>
boil <bowl>, <time>

; cook rice
fill A, rice
fill A, water
boil A, 18 minutes
stir A
; ingredients
fill B, onions
fill B, carrots
chop B
boil B, peas
; mix to fry
fill B, A
1. Boil rice for 18 minutes
2. Chop onions and carrots
3. Mix the onions, carrots
and peas with the rice
; cook rice
fill A, rice
fill A, water
boil A, 18 minutes
stir A
; ingredients
fill B, onions
fill B, carrots
chop B
boil B, peas
; mix to fry
fill B, A
int main(){
int a = 1337;
int b = 31337;
return a+b;
}
push rbp
mov rbp, rsp
mov DWORD PTR [rbp-4], 1337
mov DWORD PTR [rbp-8], 31337
mov edx, DWORD PTR [rbp-4]
mov eax, DWORD PTR [rbp-8]
add eax, edx
pop rbp
ret
int main(){
int a = 1337;
int b = 31337;
return a+b;
}
push rbp
mov rbp, rsp
mov DWORD PTR [rbp-4], 1337
mov DWORD PTR [rbp-8], 31337
mov edx, DWORD PTR [rbp-4]
mov eax, DWORD PTR [rbp-8]
add eax, edx
pop rbp
ret
push rbp
mov rbp, rsp
mov DWORD PTR [rbp-4], 1337
mov DWORD PTR [rbp-8], 31337
mov edx, DWORD PTR [rbp-4]
mov eax, DWORD PTR [rbp-8]
add eax, edx
pop rbp
ret
55
48 89 E5
C7 45 FC 39 05 00 00
C7 45 F8 69 7A 00 00
8B 55 FC
8B 45 F8
01 D0
5D
C3
nop
nop
nop
nop
nop
nop
mov
mov <dst> <src>
mov rax, 0x1337
mov rbx, 0x2022
mov rcx, rbx
mov
mov (memory)
add/sub
add <dst> <src>
mov rax, 0x100
mov rbx, 0x200
add rax, rbx
add/sub
if(some_condition){
do_something();
}
else {
do_something_else();
}
jmp
jmp <dst>
mov rax, 0x100
jmp skip
mov rax, 0x1337
skip:
nop
nop
jmp
cmp
cmp <a>, <b>
EFLAGS
mov rax, 0x100
mov rbx, 0x200
cmp rax, rbx
jmp (cond)
jcc <dst>
EFLAGS
mov rax, 0x100
mov rbx, 0x200
cmp rax, rbx
mov rcx, rax
jl rbx_lesser
mov rcx, rbx
rbx_lesser:
nop
jmp (cond)
call
call <dst>
nop
call foo
hlt
foo:
mov rax, 0x1337
ret
nop
call