1
0
mirror of https://github.com/pakt/ropc synced 2026-06-08 16:36:27 +00:00
Files
2012-09-20 03:16:35 -07:00

235 lines
2.5 KiB
NASM

;extern printf
global start_rop
;----------------------------------------
; DATA
;----------------------------------------
SECTION .data
a: dd 5
fmt: db "a=%d, eax=%d", 10, 0
;----------------------------------------
; CODE
;----------------------------------------
SECTION .text
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
; nops above are necessary -- without them BAP emits incorrect IR
xor eax, eax
xor ebx, ebx
xor ecx, ecx
xor edx, edx
xor esi, esi
xor edi, edi
xor ebp, ebp
xor esp, esp
inc esp
shl esp, 10
load_const:
pop eax
ret
read_mem:
mov eax, [ebx+0xdeadbeef]
mov edx, [ecx+0x0badf00d]
ret
read_mem_op:
xor eax, [ebx+0xf00d]
ret
write_mem:
mov eax, 0
mov edx, 0x11223344
mov [ebx+0xbadc0de], ecx
ret
write_mem_op:
xor [eax+0xbeef], ebx
xor eax, eax
xor ebx, ebx
ret
g4:
xor eax, edx
mov esi, [esp+8]
mov ebp, edi
pop ecx
ret
g5:
add edx, ecx
ret
tricky:
add eax, ebx
xor ebx, ebx
sub ecx, 0x123
setz bl
add eax, ebx
ret
copy_reg:
mov eax, ebx
ret
load_flags:
lahf
ret
stuff:
pop ebx
ret
mov eax, [ebx]
ret
mov [eax], ebx
ret
add esp, eax
ret
save_esp:
mov eax, esp
ret
add esp, ebx
pop ecx
pop edx
ret
add eax, ebx
ret
pop eax
ret
pop ebx
ret
pop ecx
ret
pop edx
ret
mov [ecx], edx
ret
mov edx, [ecx]
ret
add ecx, eax
ret
add edx, ebx
ret
add ecx, edx
ret
sub ecx, edx
ret
mov ecx, [ecx]
ret
mov ecx, [edx]
ret
mov edx, [edx]
ret
mov eax, [eax]
ret
mov ebx, [eax]
ret
mov [eax], eax
ret
mov [ebx], eax
ret
mov [eax], ecx
ret
mov edx, [ebx]
ret
sub eax, ebx
ret
add eax, ebx
ret
or eax, ebx
ret
and eax, ebx
ret
and ecx, edx
ret
and ebx, ecx
ret
and eax, edx
ret
and ebx, edx
ret
mul ebx
ret
mul ecx
ret
mul edx
ret
add ebx, ecx
ret
add eax, ecx
ret
pop ecx
ret
xor edx, edx
div ebx
ret
xor eax, ebx
ret
xor eax, ecx
ret
xor eax, edx
ret
start_rop:
mov esp, [esp+4]
ret