관리 메뉴


Kinesis´s Open Document

리버스 엔지니어링 : 고전게임 - 에올의 모험 Crack 본문

MEMO/기술 자료/Reverse Engineering

리버스 엔지니어링 : 고전게임 - 에올의 모험 Crack

Kinesis 2020. 11. 6. 01:03
※ 주의! 리버스 엔지니어링을 무분별히 사용해서는 안됩니다. 특히 현재 상업적으로 배포되고 있는 소프트웨어 등을 변조하여 재배포 하는 등의 행위는 기업에게 피해를 발생시키고, 더 나은 소프트웨어가 이용자에게 제공될 기회를 저해하는 한 편, 저작권 침해로 인해 문제가 발생할 소지가 있습니다. 여기에서는 더 이상 판매를 하고 있지 않는 것으로 알고 있는 고전 게임을 활용해 Crack 의 원리 중 하나를 다루고 있습니다. 이에 따라 본 내용은 제작사 또는 저작권자 등에 의해 문제가 될 경우 언제든지 삭제되거나 비공개로 전환될 수 있습니다.

 

간혹 추억이나 향수에 빠져 고전 게임을 할 때가 있다.

최근에도 향수에 빠져 에올의 모험이란 게임을 플레이해보고자 실행했는데…

아니 이게 웬걸 "Please Don't Copy!" 라는 메시지가 나타난다. 맙소사...

 

에올의 모험 실행 후 "Please Don't Copy!" 라는 메시지가 나타난 모습

 

화면을 보고 잠시 고민을 해보았다. 해당 메시지는 불법 복제를 막기 위해 마련된 메시지 일 것이고, 이 에올의 모험이라는 게임은 매우 오래전 dos 운영체제를 이용하던 시절 쯤에 나온 게임으로 기억하니 불법 복제 방지를 위한 장치가 복잡하지 않을 것이라고 생각이 든다.

 

그렇다면, 리버스 엔지니어링을 이용해서 Crack 을 해볼 수 있지 않을까?

 

 

이런데 쓰라고 구매했던 것은 아니지만, 리버스 엔지니어링 연습한다고 스스로를 정당화 하면서, 관련 도구인 IDA를 실행시켜 eol_game.exe 파일을 불러온다.

 

 

막상 불러와보니 초기 실행되는 main 함수에서부터 jz라는 조건문 검사를 통해 요건을 충족하지 못한 경우 "Please Don't Copy" 라는 문구의 주소(offset)을 eax에 부여하고 화면에 뿌려준 뒤 eax 값을 초기화 하고 종료를 호출하는 루틴이 보인다.

 

 

혹시나 싶어 그래프를 통해 로직을 살펴보니 더욱 심플...

그렇다면 조건 비교를 통해 Jump가 이루어지는 jz short loc_10040 구문을 조건 비교 없이 무조건 loc_10040로 넘겨 뛰게(Jump) 한다면, "Please Don't Copy!" 라는 메시지는 볼일이 없어지게 될 것 같다.

 

 

고로 나는 이제 어쎔블리(Assemble)를 수정하여 패치를 진행한다!

 

 

"jz short loc_10040" 구문을 "jmp short loc_10040" 로 변경해 준다.

 

 

수정후 "jmp short loc_10040" 코드 뒤로는 실행될 일이 없어지고 바로 loc_10040 부분으로 넘어가게 된 흐름이 보인다.

 

 

그래프로 봐도 "Please Don't Copy!" 를 나타내고 종료되는 부분이 연결된 부분 없이 따로 떨어져나와 있는 모습이 확인된다.

 

 

수정을 했으니 수정된 내용을 파일로 내보내기 위한 작업을 수행한다.

 

 

필요에 따라 백업본을 생성(Create backup 체크)해도 되고... 아무튼 파일을 내보내고 게임을 실행해 본다.

 

 

"Please Don't Copy!" 라는 문구가 나타나지 않고 게임 화면이 나타난 모습이 확인된다.

 

 

오예 만나서 반갑다 에올~!

 

※ 주의! 다시 한번 강조 드립니다. 리버스 엔지니어링을 무분별히 사용해서는 안됩니다. 특히 현재 상업적으로 배포되고 있는 소프트웨어 등을 변조하여 재배포 하는 등의 행위는 기업에게 피해를 발생시키고, 더 나은 소프트웨어가 이용자에게 제공될 기회를 저해하는 한 편, 저작권 침해로 인해 문제가 발생할 소지가 있습니다. 여기에서는 더 이상 판매를 하고 있지 않는 것으로 알고 있는 고전 게임을 활용해 Crack 의 원리 중 하나를 다루고 있습니다. 이에 따라 본 내용은 제작사 또는 저작권자 등에 의해 문제가 될 경우 언제든지 삭제되거나 비공개로 전환될 수 있습니다.


Comments