반응형
ADD, SUB, INC 등의 보면 딱 알 수 있는 명령어에 대한 포스팅은 안하겠음.
CALL, JMP, RET 는 중요하니까 해야지.
CALL : 프로시저를 호출하는 명령이다. 프로시저? 바로 함수를 이야기하는 것임.
CALL과 JMP의 차이는 RET다.
너무 두루뭉술한 말이구나 내가 적어놓고도.
CALL은 호출되고 난 후에 이전에 실행중이던 프로시져로 복귀를 해야하고
JMP는 그럴 필요가 없다. 즉, RET명령이 필요없다는 것
CALL을 이용하여 호출하면 "프롤로그" 과정부터 수행해야한다.
지금껏 분석하면서 프롤로그는 많이 보았을 터임.
ESP레지스터를 EBP에 저장하여 복귀지점을 기록하는 것이다.
그리고 처음에 스택 공간을 할당한 것은.. 그 함수가 사용하는 매개변수가 잇을 때.
호출 한 후 복귀할 때 사용하는 것이 바로 RET명령이다.
RET 8h 라고 하면 8만큼의 스택을 비우고 복귀하라 이말.
반면 JMP는 프롤로그 과정을 거칠 필요가 없지.
단지 프로그램의 실행 흐름을 바꾸는 역할이라고 보면 된다.
반응형
'IT 그리고 정보보안 > Knowledge base' 카테고리의 다른 글
리버싱(Reversing) 그리고 올리디버거(Ollydbg) (0) | 2021.04.17 |
---|---|
어셈블리 - REP 명령어 (0) | 2021.04.17 |
어셈블리어 - CMP (0) | 2021.04.17 |
어셈블리어 - MOV와 LEA 차이점 (0) | 2021.04.17 |
어셈블리어 - LEA 명령어 (0) | 2021.04.17 |