CS/Etc.

x86-64

Nakuri 2023. 9. 20. 17:04
728x90

General Purpose Register

rax (accumulator register) 함수의 반환 값
rbx (base register) x64에서는 주된 용도 없음
rcx (counter register) 반복문의 반복 횟수, 각종 연산의 시행 횟수
rdx (data register) x64에서는 주된 용도 없음
rsi (source index) 데이터 원본 포인터
rdi (destination index) 데이터 목적지 포인터
rsp (stack pointer) 스택 포인터
rbp (stack base pointer) 스택 바닥 포인터

 

 

rip : Instruction Pointer

 

 

Flag Register

CF(Carry Flag)
ZF(Zero Flag)
SF(Sign Flag)
OF(Overflow Flag)

 

 

 

x86-64 레지스터 호환

R*X 64비트
E*X 하위 32비트
*X 하위 16비트
*H 상위 8비트(*X 기준)
*L 하위 8비트

 

 

 

Assembly

데이터 이동(Data Transfer) mov, lea
산술 연산(Arithmetic) inc, dec, add, sub
논리 연산(Logical) and, or, xor, not
비교(Comparison) cmp, test
분기(Branch) jmp, je, jg
스택(Stack) push, pop
프로시져(Procedure) call, ret, leave
시스템 콜(System call) syscall

 

 

syscall

요청: rax

인자 순서: rdi → rsi → rdx → rcx → r8 → r9 → stack

 

 

x64 syscall table

read 0x00 unsigned int fd char *buf size_t count
write 0x01 unsigned int fd const char *buf size_t count
open 0x02 const char *filename int flags umode_t mode
close 0x03 unsigned int fd

mprotect 0x0a unsigned long start size_t len unsigned long prot
connect 0x2a int sockfd struct sockaddr * addr int addrlen
execve 0x3b const char *filename const char *const *argv const char *const *envp

 

 

https://dreamhack.io/lecture/roadmaps/all/reverse-engineering

 

목록 | 로드맵 | Dreamhack

Background: Static Analysis vs. Dynamic Analysis 0.0★ (0) Free

dreamhack.io

 

'CS > Etc.' 카테고리의 다른 글

note  (0) 2023.09.25
[Dreamhack] Quiz: x86 Assembly 2  (0) 2023.09.22