프로그래밍 강의/리버싱

리버싱 무작정 따라 하기 [3. 무조건 점프하기]

wnsrn3436 2012. 12. 25. 12:42

 

이번에는 IF 문을 이용하여 이런 식으로 코드를 짰다고 가정해봅시다.

보통 이런 경우는 문자열이 메모리상에 저장되기 때문에 쉽게 이메일 주소를 얻을 수가 있습니다만, 우리는 어떤 값을 입력해도 이메일 주소가 나오게 수정을 하고자 합니다.

 

 

올리디버거로 열어보면 이런 식의 간단한 어셈블리어로 되어있습니다.

 

 

이중 JE ~ 쪽을 눌러봅시다. 빨간 게 꼭 누르고 싶지 않나요?

그런데 옆에 화살표가 00401B5F 즉 알맞은 값을 가리키고 있네요?

 

여러분은 이제 이것이 IF문과 비슷한 역할을 한다고 생각을 해보아도 될 것 같습니다.

아마 조건이 되면 저 주소로 점프하는 거 같지 않나요?

 

그래요. 위에 JE 위에 CMP 라고 먼저 조건을 가정하고 점프를 하는 것입니다.

 

명령어에 관한 내용은 http://shakii.tistory.com/78 를 참조해주시면 좋을 것 같네요.

아니라면 어셈블리어 명령어라고 검색창에 치셔도 무방합니다.

 

 

JE 가 문제인지를 알았으니 이제 수정을 해야 할 것입니다.

JE 는 조건점프. 즉 조건이 되면 점프를 하는 것입니다.

그렇다면 무조건 점프라는 것은 없을까요? 바로 그 무조건 점프가 JMP 라는 명령어입니다.

위와 같이 수정해봅시다.

 

 

자! 이제 아무 값이나 입력을 해도 다 알맞은 값이 나오네요!

 

이름없음1.cpp

이름없음1.exe

Comments