SWUFORCE/워게임

[추가 공부] 어셈블리어 공부

S_SDY 2026. 3. 31. 20:53

어셈블리어란?

0과 1로 이루어진 기계어와 1대1로 대응되는 명령어로 이루어진 저급언어

 

 

어셈블리어 명령어 종류

1. PUSH 

: 스택에 값 저장

형식 : PUSH [OPERAND]

 

2. POP

: 스택 맨 위에 있는 값을 가져오고, 삭제

형식 : POP [OPERAND]

 

3. MOV

: src의 값을 dest에 넣어주는 역할

형식 : MOV [dest], [src]

 

ex) MOV EAX, 1  ------> 1을 EAX에 저장

 

 

4. LEA

: src주소를 dest에 넣어주는 역할

형식 : LEA [dest], [src]

 

5. INC

: 값을 1씩 증가

형식 : INC [OPERAND]

 

6. DEC

: 값을 1씩 감소

형식 : INC [OPERAND]

 

7. CALL

: 함수를 호출하는 역할. 복귀할 주소를 PUSH 후 함수로 이동

형식 : CALL [Address]

 

8. RET

: CALL로 호출된 함수 종료 후 CALL 수행 시 스택에 저장했던 복귀 주소로 돌아옴.

형식 : ret

 

 

9. LEA

: 지정한 주소값을 가져오는 명령어로, 주로 값을 가져와야 하는 경우에 사용됨.

형식 : lea eax, [ebx]  -------> ebx 안의 숫자를 eax에 복사

 

 


 

이제 문제에서 봤던 main함수를 분석해보자.

endr64 : 실행 시작점을 알림

push rbp : rbp를 스택에 저장

mov rbp, rsp : rsp를 rbp에 저장

mov edx, 0x3e9 : edx에 0x3e9를 저장

mov esi, 0x3e9  : esi에 0x3e9를 저장

mov edi, 0x3e9 : edi에 0x3e9를 저장

mov eax, 0x0 : eax에 0x0을 저장

call 1080 <setresgid@plt> : setresgid함수 호출. 

lea rax, [rip+0xe53] : rip에서 0xe53만큼 떨어진 곳의 값을 rax안에 저장.

mov rdi, rax : rdi에 rax 값을 저장

call 1090 <system@plt> : system함수 호출

lea rax, [rip+0xe4a] : rip에서 0xe4a만큼 떨어져있는 값을 rax에 저장

mov rdi, rax : rdi에 rax 값을 저장

call 1070 <puts@plt> : puts함수 호출

mov eax, 0x0 : eax에 0x0저장

pop rbp : 스택에서 rbp 가져오고 삭제

ret : 위에서 가져온 위치로 이동.

 

 

'SWUFORCE > 워게임' 카테고리의 다른 글

[Dreamhack]My Nervous PPT  (1) 2026.04.28
[Dreamhack]lolololologfile  (0) 2026.04.07
[Dreamhack]Path Finder  (0) 2026.03.31
[추가공부] 파이썬 request.remote_addr  (0) 2026.03.24
[web]pathtraversal  (0) 2026.03.24