abex crackme #1

오서영·2022년 3월 23일
0
post-thumbnail

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

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으로 바꿔준다.

profile
개발과 보안에 관심 있는 대학생입니다😎

0개의 댓글