본문 바로가기
Study/Reversing

[리버싱] CALL, JMP, RET(RETN) 명령어에 대해 알아보자

by graygreat 2017. 9. 3.
728x90
반응형



CALL


함수를 호출할 때 사용되는 명령어


오퍼랜드가 가리키는 곳으로 프로그램의 흐름이 변경됨


JMP와 차이점은 함수가 끝나고 다시 복귀할 수 있도록 EIP값이 변경되기 전에 기존의 위치를 스택에 저장함


다시 돌아올 때는 스택에서 해당 정보를 꺼내어 복귀함





JMP


오퍼랜드가 가리키는 곳으로 프로그램의 흐름이 바로 변경됨


EIP값이 저장되지 않아 다시 돌아올 수 없음


옵션에는 127byte 범위 내에서 점프하는 short


같은 세그먼트 내에서 점프하는 near


현재 세그먼트를 벗어나는 far




RET(RETN)


CALL을 통해 호출된 함수에서 다시 복귀하기 위해 사용하는 명령


스택에 저장된 정보를 기반으로 흐름이 바뀌는 것이기 때문에 의미상으로는 POP EIP와 동일하지만 


EIP의 내용은 직접적인 수정이 안되기 때문에 문법적으로는 바르지 않음으로 개념적으로만 알아놓자

반응형

댓글