GaGe

어셈블리어 08. JMP 본문

SISS (2017-2018)/어셈블리어

어셈블리어 08. JMP

Sorrel 2018. 7. 22. 01:17
JMP = 실행의 흐름을 뛴다라는 의미

EIP라는 레지스터는 다음에 실행할 명령어의 주소를 저장하는데 평소에는 주소가 차례로 증가하지만 JMP 명령어를 이용해서 중간에 EIP에 저장된 주소를 변경하면 바로 그 주소로 넘어갈 수 있다.

EIP도 레지스터이긴 하지만 범용레지스터가 아니기 때문에 MOV명령어로 그 값을 변경해 줄 수 없고 JMP로 가능하다.



JMP 명령어를 넣으면


JMP SHORT [주소값]
이렇게 명령어가 된다.




short는 실행할 명령어랑 현재 명령어가 가까울 때를 의미한다.

위처럼 40100F에서 옆에 EB F4가 있는 걸 볼 수 있는데, eb가 jmp short를 의미하고 f4가 움직일 만큼이다. 40100F가 끝나면 401011이 eip에 저장되는데 여기서 f4만큼 움직이라는 뜻이다.
401011에 f4(-c)만큼 움직이면 401005로 변한다.

jmp루프 내에서 특정한 장치가 없다면 무한루프가 된다.
Comments