본문으로 바로가기


JMP


무조건 분기명령이라고 불리는 친구다


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


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

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

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


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






CALL


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


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


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


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







RET


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


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


eip의 내용은 직접적인 수정이 안되기 때문에 문법적으로는 바르지 않음으로 개념적으로만 알아놓으면 좋을듯 하다