
프로그램을 실행시키면 원하는 그림을 퍼즐로 만들어 게임을 하는 프로그램이다.

원래 있는 그림 말고 새로운 그림을 추가를 하려면 라이선스가 등록이 되어있야 추가를 할 수 있지만, 프로그램을 보면 라이선스를 등록할 수 있는 공간이 존재하지 않는다.
• 분석 시작

올리디버거에 프로그램을 올린 다음 문자열 검색을 통해 "For registered users only" 문구를 검색해준다.

해당 분기점에서 브레이크 포인트를 걸어준다.
ZFlag가 1이 키 때문에 JE가 점프가 되면서 "For registered users only"가 실행이 되기 때문에 JE를 JNZ로 수정을 한 다음 저장을 해준다.

정상적으로 새로운 이미지를 올릴 수 있다.
이런 방식으로도 가능하지만 계속 라이선스를 검색할 수 있기 때문에 루틴 추적하는 곳을 변경해 보자.
- 루틴 추적하기

문자열 검색을 통해 해당 루틴 위치로 이동을 한다.
(원래 프로그램 상태바에 Flash jigsaw Proucer <unregistered>가 적혀 있다)

스택을 보면 이 루틴을 호출했던 위치를 알 수 있다.
FFFFFF00 이 스택에 쌓여 있으므로 mov AL, BYTE PTR SS:[ESP+4]에서 BYTE 이기 때문에 00이 들어있다.

해당 CALL 함수에서 체크하는 루틴을 호출을 한다.
**우리가 찾아야 하는 것은 EAX에 FFFFFF00이 호출이 된 곳을 찾아야 한다.
그렇기 때문에 PUSH EAX가 바로 위에 보인다. 즉, 그 CALL에서 받아와 EAX에 저장을 한다는 것이다.

F8로 실행을 시키다 보면 XOR AL, AL에서 XOR을 한 다음 RETN을 하면 PUSH EAX로 가게 된다.

XOR AL, AL을 mov AL, 1로 수정을 해준 다음 파일을 저장한다.

새로운 이미지를 추가할 수 있게 된다.
'모의해킹 > 리버싱' 카테고리의 다른 글
안티디버깅 Exception과 중요한 API 정보 확인 : 레나 챌린지(Level13) (0) | 2023.09.24 |
---|---|
난독화의 시작 (델파이 프로그램) : 레나 챌린지 (Level 12) (0) | 2023.09.23 |
비주얼베이직(VB) GUI 디컴파일 분석 : 레나 챌린지 (Level 10) (0) | 2023.09.17 |
비주얼베이직(VB) 프로그램 시리얼 키 획득 : 레나 챌린지 (Level 9) (0) | 2023.09.17 |
Artgem 크랙 : 레나 챌린지 (Level 8) (0) | 2023.09.16 |