인공지능 개발일지

[리버싱] 어셈블리어란? 본문

보안/리버싱

[리버싱] 어셈블리어란?

Prcnsi 2021. 10. 10. 18:05
728x90

1. 어셈블리어란?

한마디로 어셈블리어는 특정 프로세스에만 있는 Thread나 registers 혹은 I/O를 직접적으로 접근하고 컨트롤할 수 있다. 이는 기계어보다 조금 위의 low level 언어이다.
아래 그림에서는 이진수와 코드 가운데 위치한다.



+레지스터란?
CPU의 요청을 처리하는 데이터의 임시공간입니다! (tmp 같은같은 아이라고 볼 수 있죠)
그래서 CPU는 연산 레지스터란 저장공간이라고 생각하면 됩니다.

2. 왜 쓰는가

이는 유지, 보수가 어렵지만 적은 용량, 빠른 속도와 더불어 원하는 대로 직접적인 컨트롤을 할 수 있다는 장점이 있다.

3. 문법 종류

어셈블리어에는 Intel 문법(Window)과 AT&T 문법(Linux)이 있는데 Intel 문법이 주로 사용됩니다. 차이점은 Intel은 명칭 그대로 AT&T는 숫자 혹은 문자 앞에 $혹은 %를 사용한다는 점이 다릅니다.
(개인적으로 쉘 스크립트도 AT&T와 같이 $를 붙여서 저도 $,%가 익숙하긴해요.)

4. 기본 명령어

기본 명령어는 아래와 같습니다.

사진 출처: https://aistories.tistory.com/12

이상으로 간단하게 정리해 보았습니다.

728x90