본문 바로가기
해킹/시스템해킹

어셈블리어 문법 간단 정리

by 맑은청이 2020. 8. 3.
728x90
반응형

오늘은 리버싱을 할 때 많이 보는 어셈블리어를 간단하게 살펴보도록 하겠습니다. 

예전에 처음 배울 땐 참 많이 헷갈렸었는데 이제는 잘 알아보게 됐으니... 정리를 해야겠어요

 

-MOV A  B : B의 값을 A에 옮깁니다. 

만약 MOV RAX 100 같은 경우에는 RAX = 100; 

과 같이 생각하시면 됩니다. 

하지만 연산을 포함할 수는 없습니다.  

연산을 포함 시키는 MOV 를 LEA 라고 할 수 있습니다. 

 

-LEA : A 의 값을 B의 값으로 연산을 포함하여 복사

 

LEA EAX, [EAX + 1000] 

다음과 같으면 EAX + 1000을 넣은 값을 EAX 에 다시 넣어줍니다. 

LEA EBX, [EAX + 1000]

만약 다음과 같다면 EAX 의 값 차이는 없겠죠?

 

-JMP : 특정 위치로 건너 뛰어서 코드 실행 

조건 점프 명령도 존재, JA, JB, JE 등의 명령어는 두 인자를 받아서 비교 후 JUMP 함

 

- CALL : 함수 호출 했다가 다시 원래 위치로 돌아올 때 사용 

 JMP 랑 다른 점은 RET 에 저장하고 원래 상태로 돌아온다는 것

 

- NOP : 아무 작업도 하지 않는 명령어, 1 Byte 의 빈 공간을 차지

 

- RET : 현재 함수가 끝난 뒤에 돌아갈 주소 지정을 위해 사용 

 

- PUSH : 스택에 해당 값 삽입

 

- POP : 스택에 있는 값 제거 

 

- LEAVE : 현재까지의  메모리 스택을 비우고 EBP 를 자신을 호출한 메모리 주소로 채움, 실행 중인 함수를 종료하기 위해 정리하는 작업에 사용

 

 

 

728x90
반응형

'해킹 > 시스템해킹' 카테고리의 다른 글

시스템 해킹 별 찍기 프로그램 구현  (0) 2020.08.04
어셈블리어로 반복문 구현  (1) 2020.08.03
시스템 해킹 echo 구현  (0) 2020.08.03
시스템해킹 메모리 커럽션  (0) 2020.08.02
시스템 해킹 기초  (0) 2020.08.01