[리버싱 핵심원리] ch06. abex' crackeme #1 분석

2022. 12. 28. 11:51· Reverse Engineernig/study
목차
  1. 1. 프로그램 확인
  2. 1.1 디버깅

1. 프로그램 확인

  • abex' crackme1-voiees.exe ( 실습파일에는 voiees.exex 라고 되있을건데 확장자를 exe로 변경후 실습)
  • 어셈블리 언어로 작성된코드이다. > stub code 추가되어 있지 않음

abex' crackme1-voiees.exe 실행시
확인 눌렀을때

 

1.1 디버깅

 

abex' crackme1-voiees.exe 파일을 디버거에 올렸을때 나오는 첫 화면이다.

우리의 목표는 Ok, I really think ... 라는 문구를 출력하는 것이다.

코드가 짧고 배우는 초기단계 이므로 하나씩 실행해 보며 코드를 파악해 볼 것이다.

 

 

40100E 주소의 call 함수를 실행하자 프로그램을 처음 실행했을때 뜨는 창을 만났다.

확인을 누른후 계속 실행해보자

 

에러 메시지 출력까지 왔다. 다음 명령어가 <401050>으로 jmp 하는거고,

<401050>주소의 함수는 프로세스를 종료시키는 함수인걸 알 수 있다.

 

<40103D> 주소로 가야 우리가 원하는 메시지박스를 출력할 수 있는데

어떻게 해야할까? 

 

 

여기서 우리가 주목해야할 부분은 바로 여기이다.

 

 

je 는 조건분기문인데 조건이 성립하면 jmp 명령어를 실행한다.

그래서 대부분 je명령어 바로 앞쪽을 보면 cmp 명령어로 조건을 지정하는 부분이 있다.

 

자 이제 확인해보면

 

cmp 문으로 eax 값과 esi 값을 비교하고있는데 레지스트리 창을 확인해보면

값이 다른걸 알 수있다.

 

조건에 부합하기때문에 jmp명령어가 실행되지않고 다음명령어로 내려가게되어

Error 메시지가 출력되는곳으로 이동하는것이다.

 

그럼 이제 jmp 명령어를 실행시킬 방법을 알아보자

 

  • cmp 명령어 수정

 

 eax 값과 eax 값을 비교하게 하면 당연히 똑같은 값을 비교하는것이므로

참인 결과가 나와 jmp명령어를 실행하게 된다.

 

  • je명령어 수정

 

조건분기문인 je 를 그냥 분기문인 jmp 로 수정하면 조건에 상관없이

40103D 주소로 jmp 하게 된다.

 

  • ZF(Zero Flag) 값 수정

 

je 명령어를 실행전에 ZF(Zero Flag) 연산결과를 1(참) 로 수정하면

조건에 부합하여 40103D 주소로 jmp 하게 된다.

 

위 방법들을 사용해 실행하면

 

우리가 목표로 하는 메시지박스를 실행할 수 있다.!

 

저작자표시 (새창열림)

'Reverse Engineernig > study' 카테고리의 다른 글

[리버싱 핵심원리] ch08. abex' crackme2  (0) 2022.12.30
[리버싱 핵심원리] ch07. 스택 프레임  (0) 2022.12.28
[리버싱 핵심원리] ch05. 스택  (0) 2022.12.27
[리버싱 핵심원리] ch04. IA-32 Register 기본 설명  (0) 2022.12.27
[리버싱 핵심원리] ch03. 리틀 엔디언 표기법  (0) 2022.12.26
  1. 1. 프로그램 확인
  2. 1.1 디버깅
'Reverse Engineernig/study' 카테고리의 다른 글
  • [리버싱 핵심원리] ch08. abex' crackme2
  • [리버싱 핵심원리] ch07. 스택 프레임
  • [리버싱 핵심원리] ch05. 스택
  • [리버싱 핵심원리] ch04. IA-32 Register 기본 설명
po3nyo
po3nyo
po3nyo
공부기록장
po3nyo
전체
오늘
어제
  • 분류 전체보기 (208)
    • Programming (13)
      • HTML (0)
      • JavaScript (1)
      • CSS (1)
      • PHP (1)
      • Java (2)
      • Database (7)
      • Python (1)
      • C (0)
    • Web Hacking (28)
      • Web (14)
      • DVWA (12)
      • Bee-Box (0)
    • Reverse Engineernig (11)
      • study (11)
      • lena (0)
    • System Hacking (0)
    • Forensics (0)
    • Cryptography (0)
    • Wargame (58)
      • root-me.org (19)
      • webhacking.kr (0)
      • los.rubiya.kr (0)
      • TryHackMe (0)
      • HackerFactory.co.kr (0)
      • dreamhack.io (0)
      • picoctf.org (27)
      • Hackme.org (11)
      • CTF (1)
    • OS (6)
      • Windows (1)
      • LINUX (5)
    • Algorithm (22)
      • BOJ (22)
      • 기타 (0)
    • Tools (14)
    • Etc (7)
    • 알쓸신잡 (5)
    • 전공 (40)
      • 운영체제 (11)
      • 정보통신 (13)
      • 소프트웨어공학 (9)
      • 컴퓨터 구조 (7)

블로그 메뉴

  • 방명록

공지사항

인기 글

태그

  • 정보통신
  • order by절
  • html
  • 침투
  • 레코드 제한
  • ceate
  • Hackmechallenge
  • dvwa
  • 정보보안
  • 취약점
  • 알쓸신잡
  • rootme
  • 정보보호
  • 웹해킹
  • Python
  • writeup
  • Infosec
  • SQL
  • php
  • sql 분법
  • rootmeorg
  • mus1c
  • OWASP
  • sql 데이터타입
  • 모의해킹
  • Hackme.org
  • sql 조건문
  • picoCTF
  • dvwa실습
  • wirteup

최근 댓글

최근 글

🔒 · Designed By 정상우.v4.2.2
po3nyo
[리버싱 핵심원리] ch06. abex' crackeme #1 분석
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.