728x90
반응형
SMALL
어셈블리 명령어
명령코드 | |
데이터 이동 | mov, lea |
산술 연산 | inc, dec, add, sub |
논리 연산 | and, or, xor, not |
비교 | cmp, test |
분기 | jmp, je, jg |
스택 | push, pop |
프로시저 | call, ret, leave |
시스템 | syscall |
데이터 이동
mov a, b : b에 들어있는 값을 a에 대입 | |
mov rdi, [rsi+scx*8] | "rsi+scx*8" 값을 rdi에 대입 |
lea a, b : b의 유효 주소를 a에 저장 | |
lea rdi, [rsi+scx*8] | "rsi+scx*8" 을 rsi에 대입 |
산술 연산
add a, b : a에 b의 값을 더함 | |
add eax, ebx | eax += ebx |
sub a, b : a에 b의 값을 뺌 | |
sub eax, ebx | eax -= ebx |
inc a : a의 값을 1 증가 시킴 | |
inc eax | eax += 1 |
dec a : a의 값을 감소 시킴 | |
dec eax | eax -= 1 |
논리 연산
and a, b : a와 b의 비트가 모두 1이면 1, 아니면 0 | |
eax = 10110101 / ebx = 11010001 | |
and eax, ebx | eax = 10010001 |
or a, b : a와 b의 비트 중 하나라도 1이면, 아니면 0 | |
eax = 10110101 / ebx = 11010001 | |
or eax, ebx | eax = 11110101 |
xor a, b : a와 b의 비트가 서로 다르면 1, 같으면 0 | |
eax = 10110101 / ebx = 11010001 | |
xor eax, ebx | eax = 1100100 |
not a : a의 비트 전부 반전 | |
eax = 10110101 | |
not eax | eax = 1001010 |
비교
cmp a, b : a와 b를 비교 |
두 피연산자를 빼서 대소를 비교함 |
test a, b : a와 b를 비교 |
두 피연산자에 AND 비트연산을 취함 |
분기
jmp addr : addr로 rip를 이동시킴 |
je addr : 직전에 비교한 두 피연산자가 같은 점프 |
jg addr : 직전에 비교한 두 연산자 중 전자가 더 크면 점프 |
스택
push a : a를 스택 최상단에 쌓음 |
pop a : 스택 최상단의 값을 꺼내서 a에 대입 |
프로시저
call addr : addr에 위치한 프로시저 호출 |
leave : 스택프레임 정리 |
ret : return address로 변환 |
시스템 콜
syscall | rax | arg0 (rdi) | arg1 (rsi) | arg2 (rdx) |
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 *cont *argv | const char *cont *envp |
728x90
반응형
LIST
'시스템 보안 > 이론' 카테고리의 다른 글
[System] 컴퓨터 아키텍처 (0) | 2023.05.01 |
---|---|
[System] 리눅스 프로세스 메모리 구조 (0) | 2023.05.01 |
[System] x86, x64 레지스터, BoF 란 무엇인가? (0) | 2023.03.20 |
[System] .so .a .o .c 이란 무엇인가? (0) | 2023.03.14 |
[System] dll 파일이란 무엇인가? (0) | 2023.03.14 |