
문제에 들어가보면 Windows game을 통해서 다운을 받을 수 있다.
아래와 같이 압축 해제 시 비밀번호를 입력하는 창이 나타난다. 문제 설명에 명시된 비밀번호 picoctf를 입력하여 압축을 풀어준다.


압축을 해제하면 아래와 같이 응용 프로그램 파일을 확인할 수 있다. 이를 실행하면 다음과 같이 게임 화면이 나타나는 것을 확인할 수 있다.


게임을 실행해 본 결과, 벽 너머에 있는 깃발(Flag)에 도달하면 풀리는 문제인 것으로 보인다.
현재 확인할 수 있는 정보로는 플레이어가 이동할 때의 좌표값이 있다. 이를 치트엔진(Cheat Engine)을 활용하여 분석해 보겠다.
게임 화면을 살펴보면 사다리가 존재하는 것을 확인할 수 있다. 사다리를 오르내리면 플레이어의 Y좌표(높이)가 변하므로, 이를 활용하여 치트엔진에서 좌표값을 추적해 보겠다.
이렇게 pico.exe를 켜준다음 일단 scan Type을 Unknown inital value로 Value Type를 Double로 설정을 해준다.
이렇게 설정하는 이유는 현재 플레이어의 정확한 좌표값을 알 수 없기 때문이다. Unknown initial value로 스캔하면 특정 값을 입력하지 않아도 메모리에 존재하는 모든 값을 우선 저장한 뒤, 이후 값의 변화 여부를 기준으로 필터링할 수 있다. 그리고 Value Type는 Double로 설정해준 이유는 좌표값은 보통 Double로 많이 사용되기 때문이다.

설정을 완료한 후 첫 번째 스캔(First Scan)을 진행하면 수많은 주소값이 검색되는 것을 확인할 수 있다.

이후 사다리를 이용해 높이를 변경한 뒤 다시 스캔하면, 아래와 같이 후보 주소가 줄어드는 것을 확인할 수 있다.

이와 같이 사다리를 이용해 높이를 변경한 뒤 Next Scan을 반복하면, 아래와 같이 후보 주소가 87개까지 줄어든 것을 확인할 수 있다.

이제 검색된 값들을 하단의 주소 리스트에 추가한 뒤, 값을 고정(Freeze)시켜 본다. 값을 고정한 상태에서 게임 내에서 점프를 시도했을 때 실제로 움직임에 영향을 주는 주소를 찾으면, 그것이 플레이어의 Y좌표(높이)를 제어하는 메모리 주소이다.

플레이어의 Y좌표에 해당하는 주소를 찾았다면, 해당 Value 값을 약 100 정도 높여 준다. 그러면 아래와 같이 플레이어가 공중으로 떠오른 뒤 밖으로 나온것을 확인 할 수 있다.

이를 통해 벽 밖으로 빠져나간 뒤 깃발(Flag)에 도달하면 플래그를 획득할 수 있다.

'캡스톤 디자인 > 정보보호 프로젝트실습' 카테고리의 다른 글
| [팰월드 안티치트 프로젝트] #5 전용서버 메모리 분석 - 스피드핵 (0) | 2026.04.02 |
|---|---|
| [팰월드 안티치트 프로젝트] #4 전용서버 메모리 분석 - 서버 측 변조는 정말 가능한가? (0) | 2026.03.31 |
| [팰월드 안티치트 프로젝트] #3 팰월드 치트 동작 원리 분석 - Cheat Engine CT 파일 리버싱 (Inf Spher) (0) | 2026.03.26 |
| [팰월드 안티치트 프로젝트] #2 팰월드 치트 동작 원리 분석 - Cheat Engine CT 파일 리버싱 (Damage/Health) (0) | 2026.03.24 |
| [팰월드 안티치트 프로젝트] #1 - 언리얼 엔진 5 게임은 어떻게 분석되는가? (0) | 2026.03.23 |