abex crackme #1

해당 시리즈에서는 책 "리버싱 입문(조성문 지음/프리렉 출판사)"를 공부하며 배운 내용을 정리한다.

abex crackme의 첫 번째 예제 문제를 통해 배울 수 있는 개념 2가지를 정리해보겠다.

문제


처음에 실행하면 위의 두 창이 순서대로 나온다. 컴퓨터가 하드디스크를 CD-Rom이라고 착각하게 만드는 것이 문제이다.


문제를 해결하고 나면 이와 같이 창이 뜨게 된다.

1. 프로그램 코드 변경하기

프로그램 코드 변경 방법

  1. F8로 계속해서 명령어들을 실행하다가 내가 변경하고 싶은 코드에서 멈춘다.
  2. 마우스 오른쪽 버튼 -> [Assemble...] 메뉴 클릭
  3. 명령어 수정
  4. 버튼 -> 버튼

주의할 점!
프로그램 실행 위치가 변경하고 싶은 코드 위에 있을 때 비로소 코드를 변경한다. 그 전까지는 계속 실행시켜준다. 미리 변경하면 안 된다.

2. 제로 플래그 변경하기

제로 플래그 레지스터(Zero Flag Register)

예를 들어 아래와 같은 명령어를 실행한다고 하자.

CMP EAX, ESI

이때 결과가 같다고 나오면 1이, 다르다고 나오면 0이 제로 플래그 레지스터에 저장된다.

제로 플래그 변경하는 법

오른쪽의 Registers (FPU)칸의 알파벳 옆 숫자를 0에서 1로, 혹은 1에서 0으로 바꿔준다.

좋은 웹페이지 즐겨찾기