실습/[System Hacking 실습]

Crackme 1번 문제

환석이 2023. 3. 17. 14:07

Ollydbg를 이용해서 리버싱 실습 문제를 풀어볼 예정이다. 

 

먼저 1번 문제이다. 

프로그램 실행시 1
프로그램 실행시 2

 

abex' 1st crackme 프로그램을 실행시킬 시 위 와 같은 화면을 볼 수 있다. 

 

error를 고치는게 문제의 핵심이라는 생각을 가지고 접근을 해봤다.

 

올리디버거로 crackme1 실행 모습

 

가장 먼저 좌측 상단의 

00401000 부분의 ModuleEntryPoint 부분을 확인할 수 있다. 

이 부분은 시작 포인트 지점으로 생각하면 이해가 쉽다.

 

문제를 진행하기 전 올리디버거의 주요 단축키들을 알아보았다. 

 

https://hwan2story.tistory.com/24

 

올리디버거 주요단축키

단축키 의미 F9 (Run) 프로그램이 종료될 때까지 코드 실행한다. F8 (Step Over) 한줄 실행 - 호출되는 함수의 내부동작까지는 보여지지 않는다. F7 (Step Into) 한줄 실행 - 호출되는 함수의 내부를 타고

hwan2story.tistory.com

 

F2 : 브레이크포인트 설정/해제

F7 : 한 단계씩 실행하기

F8 : 현재 블록 실행하기

F9 : 실행 재개하기

Ctrl+F2 : 모든 브레이크포인트 제거하기

 

이 중 이 5개 정도를 주로 사용하였다.

 

 

출처 : https://webcache.googleusercontent.com/search?q=cache:W9dE-u78lYoJ:https://devjino.tistory.com/158&cd=4&hl=ko&ct=clnk&gl=kr

올리디버거 같은 경우 4개의 뷰로 나누어져 있다. 

 

 

나는 이 올리디버거를 처음 실행해 보아서 F8을 눌러 한 단계씩 진행해 보았다.

 

그러다 보니 , 

 

0040100E

0040100E 이 부분에서 

 

처음 본 이 화면을 확인하였다. 이후 계속해서 F8을 눌러 스탭오버 해보았다. 

00401036

계속해서 진행 중 , 이번에는 00401036 부분에서 역시 아까 본 Error구문을 확인하였다. 

그 이후 계속해서 스탭오버 하였는데, 이상하게도 한 칸씩 내려가다가 

0040103B jmp

0040103 B 이 부분을 만나  00401050 부분으로 넘어가는 것을 확인했다. 

 

이 부분이 의문이 생겨서 jmp구문에 대해 조사해보았고

 

Jmp는 특정한 메모리 오프셋으로 이동시킨 다는 것을 알았다. 

 

 

친절하게 화살표로도 표시를 해주었고, 목적지인 00401050의 내용은 ExitProcess라는 구문이 담겨있었다. 

 

 

 

이후 계속 진행을 해보니, 더 이상 진행이 되지 않음을 확인했다. 

다시 Ctrl + F2를 통해 프로그램을 초기화해보기로 했다. 

 

아직 나는 초보로 주석에 조금 집착을 했었는데 , 이 문제에서는 이게 힌트가 되었었다. 

 

 

 

주석 부분의 저 MessageBox와 일치하는 call 함수는 모두 그 MessageBoxA의 내용을 출력하고 있었다. 

 

 

그렇다면 앞서 말한 Error 부분이 아닌 그 밑에 YEAH 부분을 CALL 한다면 손쉽게 문제를 해결할 수 있을 거 같았다. 

 

CALL부분을 더블클릭 해보면 수정할 수 있는 칸이 뜬다. 

 

이 뒤 숫자 부분을 Title이 "YEAH!" 부분을 호출해 보기 위해서 0040103 D 부분을 불러보기로 했다.

 

 

바꾼 뒤, 똑같이 F8을 눌러 진행해 보았다. 

 

call abex' _cr. 0040103D

이 부분을 만났을 때,

YEAH!

새로운 화면이 뜨는 것을 확인했다!

 

이제 문제를 풀었으니 정답. EXE 파일을 만들어 봐야겠다. 

 

우클릭 후 모든 수정요소와 기본 코드를 복사한다.

 

이후 파일명과 함께 저장해 주면 끝이다

 

abex' crackme #1 _ YEAH

나는 이런 식으로 만들어 보았다. 

 

이제 생성파일을 눌러보면?

YEAH!

아까와는 다른 결과를 확인할 수 있다.