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 |