리버스 엔지니어링/치트엔진

치트엔진으로 Crackme 분석해보기

뿔맨 2018. 9. 1. 06:34
반응형
치트엔진 이라는 툴을 사용하여 Crackme를 분석해보겠습니다.

우선 치트엔진은 주로 게임이나 상용 소프트웨어를 Crack 할 때 많이 쓰이는 것으로 알고있습니다.
허나 이번 포스팅에서는 게임이 아닌 Crackme 를 분석을 해보겠습니다.

아래 그림은 치트엔진 UI 입니다. 기능들이 엄청 많아보입니다.

기능들이 엄청 많아보이는데 저 기능들을 다 쓰는지는 모르겠습니다.

아래 그림은 이번에 분석 할 Crackme 입니다.

패커 여부는 알 수 없다 라고 나와있습니다.

Crackme를 실행하면 위와 같이 CD-ROM 이 없다고 합니다.

이제 치트엔진으로 한 번 열어봐서 어떤 식으로 코드가 짜여있는지 보겠습니다.

왼쪽 위의 모니터 모양의 버튼을 클릭 한 후 Process List의 abex' 1st crackme를 클릭합니다.
그러면 해당 프로세스ID를 가져옵니다. 이 기능은 OllyDbg의 Attach 기능으로 확인됩니다.

Firts Scan 버튼 위에 프로세스ID와 파일명이 출력되면서 정상적으로 Attach 하였다는 것을 알려주고 있습니다.

치트엔진 하단에 보시면 ' Memory view '를 클릭해주면 위와 같이 코드들이 보이는 것을 확인할 수 있습니다.

je Reverse_L01.exe+103D 에 BP를 걸어줍니다. 다른 디버거와는 다르게 치트엔진은 F5가 BP설정 입니다.

확인을 눌러주면 아래 그림과 같이 특정 폼들이 생성됩니다.

BP를 설정하고 오른쪽 위에 레지스터, 플래그가 보이고, 하단에는 스택을 보여주고 있습니다.

ZF를 1로 바꿔주고 진행(F8)을 하겠습니다.

정상적으로 우회가 되어 확인되었다는 함수로 들어왔습니다.

위와 같이 MessageBox 함수를 호출해서 메시지를 띄운 후 ExitProcess 함수를 호출해서 프로세스를 종료합니다.


+ 번외
코드케이브(CodeCave)를 해보겠습니다.
CodeCave는 Null 바이트에 사용자가 원하는 코드를 작성하여 프로그램의 흐름을 변경하는 기법 입니다.

jmp문을 사용해서 사용자가 작성한 코드로 이동합니다.
이동 후 eax, esi 레지스터들을 초기화 시키고 cmp eax, esi 로 이동합니다.
그러면 eax = 0, esi = 0 이므로 결과 값이 true 가 됩니다.

감사합니다.



반응형