abex crackme #2

오서영·2022년 5월 1일
0

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

abex crackme의 두 번째 예제 문제를 통해 배울 수 있는 개념을 정리해보았다.

1. 문자열 검색

Code > Mouse Right Click > [Search for] > [All referenced strings]

Disassembler로 돌아가기

Mouse Right Click > [Follow in Disassembler]

문자열 검색

Mouse Right Click > [Search for text]

2. 코드 분석

분석 기능

어셈블러 코드를 LOCAL.53처럼 사용자가 보기 편하도록 자동으로 Analysis한 기능

분석 기능 해제하는 법

Code > Mouse Right Click > [Analysis] >
1. [Remove analysis from selection]
2. [Remove analysis from module]

3. 스택 분석

스택(Stack)의 기능

  1. 변수를 저장해 함수로 전달
  2. 서브루틴에서 사용되는 변수를 저장
  3. 서브루틴을 수행하기 전에 메인 루틴의 레지스터를 저장

스택 데이터 수정하기

Stack > Mouse Right Click > [Edit]> [inary edit...]> HEX +00 수정

4. 데이터 표시

리틀 엔디안(Little Endian)

작은 숫자부터 표기하는 방법

  • 메모리 영역, 기타 화면에 나오는 숫자

빅 엔디안(Big Endian)

큰 숫자부터 표기하는 방법

  • 레지스터, 주석, 스택 영역에 나오는 숫자

5. 메모리 분석하기

메모리에 저장되어 있는 데이터

  1. Address : 메모리 주소
  2. Hex dump : 메모리에 저장된 데이터
    다른 메모리를 가리키는 주소일 수도 있고, 프로그램에서 사용되는 실제 데이터일 수도 있음
  3. ASCII : Hex dump에 들어 있는 데이터를 ASCII 코드 값으로 변경

데이터를 찾아가는 방법

Code > Mouse Right Click > Follow in Dump >
1. Memory address : 메모리에서 해당 주소가 저장된 위치를 찾아줌
2. Immediate constant : 주소에 저장된 데이터를 보여줌
3. Selection : 선택한 명령어가 저장된 메모리 위치로 이동

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

0개의 댓글