어셈블리어 명령어 (assembler language)

oolongeya

·

2021. 8. 22. 19:43

어셈블리어는 같은 인텔 CPU에서도 인텔기반 표기 방법과 AT&T 기반 표기 방법에 차이가 있다. 디버거를 사용하여 어셈블리어를 표시할 때 표기 방법을 선택할 수 있다.

 

  인텔 AT&T
레지스터 표현 eax %eax
값의 표현 AABBCCDDh 또는 0xAABBCCDD $0xAABBCCDD
명령어 크기 표현 mov movl (long형)
movb (byte형)
메모리 주소 [주소] (주소)
오퍼랜드 방향 목적지(dst) <- 소스(src) 소스(src) -> 목적지(dst)

 

데이터 이동 명령어

데이터 이동 방법은 다음과 같이 다섯 가지로 구분된다.

x86 : 전부 다 사용 가능

ARM : 메모리에서 메모리로 직접 이동한 것은 불가능하다

 

1. 값을 직접 레지스터로 대입하기

2. 레지스터에서 레지스터로 옮기기

3. 값을 직접 메모리로 대입하기

4. 레지스터에서 메모리로 또는 그 반대로 옮기기

5. 메모리에서 메모리로 옮기기

 

목적지 destination(dst)

소스 source(src) 

 

mov dst, src

mov 명령어는 목적지로 값을 넣을 때 사용 src 에서 dst로 이동한다.

mov 명령 설명
mov eax, ebx EBX 레지스터 내의 값을 EAX 레지스터로 복사
mov eax, 0x42 값 0x42를 EAX 레지스터로 복사
mov eax, [0x4037c4] 메모리 주소 0x4037c4에 있는 4바이트 값을 EAX레지스터로 복사
mov eax, [ebx] EBX 레지스터가 명시한 메모리 주소의 4바이트 값을 EAX 레지스터로 복사
mov eax, [ebx+esi*4] EBX+EXI*4 연산 결과가 명시한 메모리 주소의 4바이트 값을 EAX 레지스터로 복사

 

lea dst. src

lea(Load Effective Address) 는 메모리 주소를 목적지에 넣을 때 사용. 

lea와 mov의 차이 설명
lea eax, [ebx+8] EBX+8을 EAX에 저장함
mov eax, [ebx+8] EBX+8 주소에 저장된 값을 EAX에 복사

 

push, pop

스택에 데이터를 넣거나 꺼내는 명령어 이다.

 

push는 오퍼랜드 값을 스택에 넣는다.

pop은 스택에서 값을 가져와 레지스터로 저장한다. 이 명령은 스택을 사용하기 때문에 ESP 값이 변경된다.

 

명령어 설명
pop eax 스택에서 값을 꺼내 eax에 저장함
(ESP가 4만큼 증가함)
mov eax, [esp] 스택에서 값을 읽어와 eax에 저장함
(ESP가 변하지 않음)

 

산술연산 명령어

 

명령 설명 사용 예
add 캐리를 포함하지 않은 덧셈 add ecx. 10
sub 캐리를 포함하지 않은 뺄셈 sub ecx, 5
inc 오퍼랜드 내용을 1 증가 inc ecx
dec 오퍼랜드 내용을 1 감소 dec ecx
mul (부호X) / imul (부호O) eax와 오퍼랜드를 곱셈하여 eax에 저장 mul ebx
div (부호X) / idiv (부호O) eax를 오퍼랜드를 나누어 eax에 저장 div ebx
neg 오퍼랜드의 2의 보수 (부호 반전) neg eax

 

제어 명령어

 

명령 설명 사용 예
cmp 두 개의 오퍼랜드 비교
(뺄샘 연산 후 플래그 설정)
cmp ecx, 0
test 두 개의 오퍼랜드 비교
(AND 연산을 수행 후 플래그 설정)
test eax, eax
call 해당되는 주소의 함수를 호출하여 수행 코드 위치를 옮김 call 0x12345678
int 오퍼랜드로 지정된 예외 처리 수행 (0xcd)
중단점으로 디버그용 소프트웨어 트랩 (0xcc)
오버플로우 예외 상황시 발생하는 트랩 (0xce)
하드웨어 디버그 트랩 (0xf1)
int 3
int3
int0
int1
leave 함수에서 사용한 지역변수 스택을 비움 leave
ret 스택에 저장된 주소로 복귀 ret
nop 아무 동작도 수행하지 않음 (0x90) nop

 

위 내용은 x64dbg 디버거를 활용한 리버싱과 시스템 해킹의 원리 서적의 내용을 정리한 것입니다.
저작권은 이 서적과 이 서적의 저자 김민수 님에게 있습니다.
반응형