본문 바로가기
리버싱/CodeEngn 문제해결

Basic L10

by 멍청이 개발자 2026. 9. 16.
반응형

문제는 다음과 같다.

그림0. 문제화면

우선 프로그램을 실행해보면 다음과 같은 창이뜬다.

그림1. 프로그램 실행화면

여기서 Name이나 Serial칸에 뭔갈 입력하려고 해도 입력이 전혀 되지 않는다.

우선 PEView로 열어보니 다음과 같았다.

그림2. PEView

UPX패킹은 확실히 아닌데 일단 뭔가 일반적인 PE파일은 아닌게 확실하다. 

그래서 Detect It Easy라는 프로그램을 이용해서 패킹 종류를 확인해봤다.

그림3. DIE화면

ASPack이라고 쓰여있다.

ASPack은 처음보는 패커이므로 일단 x32dbg로 실행을 해보자.

그림4. x32dbg

UPX와 마찬가지로 pushad라는 구문이 보인다.

UPX에서 한것처럼 하드웨어 BP를 걸고 popad구문으로 이동해보자.

그림5. popad

popad까지 이동을 했다. 

여기서부터 F7로 한 단계씩 실행하는 ret을 만나서 445834로 이동했다.

그림6. ret이후

보다시피 언패킹이 되었고 OEP는 00445834이다.

우선 별도의 StolenByte는 없었으므로 이 상태로 덤프를 떠서 저장했다.

혹시나 하는 마음으로 덤프뜬 파일을 PEView에 올려보았다.

그림7. Address of Entry Point와 Image Base 확인

보다시피 Address of Entry Point가 000045834이다.

Image Base가 00400000이므로 우리가 찾은 00445834가 OEP가 맞았다.

ASPack도 UPX와 크게 다를 바는 없어 보인다.

 

이제 등록 성공으로 가는 분기문을 찾아야 하므로 덤프뜬 파일을 디버거에 올리고 문자열 참조를 시도해봤다.

Register관련 문자를 쓰다보니 아래와 같은 문자열을 발견했다.

그림8. 문자열 참조

Registered ... well done!

대놓고 성공메시지가 보인다. 이 부분의 코드를 따라가봤다.

그림9. 디스어셈블리 코드

아마도 이 코드에서 Not registered .... try again!문자열을 Registered ... well done!로 바꾸는 부분이 있는 것 같다.

이 코드에서 그 부분을 명확히 찾기는 힘들지만 적어도 문자를 바꾸려면 Registered ... well done!을 건드리는 부분에는 도달을 해야한다.

위쪽에 있는 분기문들을 하나씩 살펴보았다.

그림10. 분기문

4454d4에 있는 분기문이 실행이 되면 Registered... 부분을 그냥 지나치게 된다. 그렇다면 이 분기문이 실행이 되지 않는다면 정상적으로 성공으로 이어지게 될 것이다. 따라서 이 부분을 성공으로 가는 분기점이라고 할 수 있다.

이 부분의 OPCODE는 7555이다.

 

정답은 OEP + OPCODE이므로 004458347555이다.

반응형

'리버싱 > CodeEngn 문제해결' 카테고리의 다른 글

Basic L12  (0) 2026.09.18
Basic L11  (0) 2026.09.18
Basic L09  (0) 2026.09.15
Basic L08  (0) 2026.09.15
Basic L07  (0) 2026.09.15