Notice
Recent Posts
Recent Comments
Link
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

Study

CodeEngn Basic 06 본문

Reversing/코드엔진

CodeEngn Basic 06

마늘부추 2019. 6. 15. 18:30

6. CodeEngn Basic 06

[그림 6.1]

Back to user모드를 이용하여 해결할 수 있는 문제이다.

 

6.1 문제 풀이

[그림 6.2]

디버깅을 시작하면 PUSHAD가 먼저 보인다. POPAD와 짝을 이루어 압축 해제하는 코드의 경계를 나타낸다.

 

[그림 6.3]

[Search for] -> [All Commands]를 이용하여 POPAD를 찾는다.

 

[그림 6.4]

PUSHAD 아래의 POPAD를 더블클릭한다.

 

[그림 6.5]

OEP로 진입하는 JMP문이 있다. 정답의 일부이므로 가렸다.

 

[그림 6.6]

Back to user모드에 진입하기 위해 프로그램을 실행시키고 메시지 박스를 띄운다.

 

※참고
함수가 진행 중일 때 Back to user모드를 이용하여 함수가 끝나는 시점으로 이동할 수 있다.

 

[그림 6.7]


메시지 박스가 띄워진 시점의 상태이다. Stack Window 아래에서 Running임을 볼 수 있다.
이때 F12를 눌러

 

[그림 6.8]

Paused 상태로 만든다.
그리고 이어서 [Alt + F9]를 눌러

[그림 6.9]

Back to user모드로 진입한다.

 

[그림 6.10]

그다음 메시지 박스의 확인 버튼을 누르면

 

[그림 6.11]

위와 같이 메시지 박스 호출 직후에서 BreakPoint가 걸려 프로세스가 멈춘다.

 

조금 위쪽을 보면 사용자가 입력한 문자열과 키값을 비교하는 과정도 볼 수 있고, 결과 메시지를 띄우기 위한

문자열들도 볼 수 있다.

 

6.2 Comment
원래 Back to user모드라는것을 몰라서 Data 영역에 존재하는 키값을 보고 문제를 맞췄다.
사실 이 모드를 이용하는 게 정답인지도 잘 모르겠다.
압축을 다 풀었는데 왜 문자열을 검색했을 때 사용된 데이터들이 제대로 안 나온 걸까?

'Reversing > 코드엔진' 카테고리의 다른 글

CodeEngn Basic 07  (0) 2019.09.08
CodeEngn Basic 05  (0) 2019.06.15
CodeEngn Basic 04  (0) 2019.06.15
CodeEngn Basic 03  (0) 2019.06.13
CodeEngn Basic 02  (0) 2019.06.13