Abex Crackme#1

Abex Crackme#1

in

Reversing abex Crackme #1 Write up

최근들어 리버싱을 하게되어 나뭇잎책을 읽으며 기초부터 공부하고 있다.

리버싱의 기초 문제인 abex 의 crack me 1번 문제이다.

우선 exe로 된 실행파일을 실행시키면 다음과 같이 에러 문구가 뜨면서 종료가 되게된다.

crackme1_1 crackme1_2

x32dbg 를 사용하여 exe 파일을 열면 다음과 같이 자동으로 ep(entry point) 즉 프로그램의 시작점을 찾아준다.

crackme1_3

401024의 코드를 보면 cmp eax, esi로 eax 와 esi 를 비교한다.
그 후 밑의 401026 코드에서 je(jump if equal)로 두 수가 같다면은 40103D의 코드로 이동시킨다
40103D의 코드는 Ok 로 문제가 해결되는 코드이다.

crackme1_4

코드에서 Space를 눌르면 어셈블리언어를 자유롭게 패치할 수 있다.
je로 두수를 비교하지 않고 바로 JMP를 사용하여 점프시켜보자

crackme1_5

그러면 처음 실행시 와는 다른 메시지가 출력되게 된다.

crackme1_6

하지만 이렇게 코드패치만 진행할시에는 다음실행시에는 패치시킨 프로그램이 작동하지 않는다.
파일패치를 통해 새롭게 프로그램을 만들어줘야 다음 실행시에도 패치한 코드가 작동하게 된다.

crackme1_7