Study
CodeEngn Basic 06 본문
6. CodeEngn Basic 06
Back to user모드를 이용하여 해결할 수 있는 문제이다.
6.1 문제 풀이
디버깅을 시작하면 PUSHAD가 먼저 보인다. POPAD와 짝을 이루어 압축 해제하는 코드의 경계를 나타낸다.
[Search for] -> [All Commands]를 이용하여 POPAD를 찾는다.
PUSHAD 아래의 POPAD를 더블클릭한다.
OEP로 진입하는 JMP문이 있다. 정답의 일부이므로 가렸다.
Back to user모드에 진입하기 위해 프로그램을 실행시키고 메시지 박스를 띄운다.
※참고
함수가 진행 중일 때 Back to user모드를 이용하여 함수가 끝나는 시점으로 이동할 수 있다.
메시지 박스가 띄워진 시점의 상태이다. Stack Window 아래에서 Running임을 볼 수 있다.
이때 F12를 눌러
Paused 상태로 만든다.
그리고 이어서 [Alt + F9]를 눌러
Back to user모드로 진입한다.
그다음 메시지 박스의 확인 버튼을 누르면
위와 같이 메시지 박스 호출 직후에서 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 |