Lena Tutorial 2단계

Security/Reversing

레나 튜토리얼 2단계 ReverseMe 키파일 생성(win 10, x96dbg 기준)

 

1단계와 다르게 파일 패치가 아닌 파일을 분석하여 키파일을 만들고 정상동작하게 만드는 것이 목표

 

1. 401073번 줄의 CreateFileA 함수는 실행하는 exe파일과 동일한 위치에 있는 파일을 여는 함수. 따라서 reverseMe가 있는 폴더에  ketfile.dat를 생성해야 함.

 

2. keyfile이 있다면 1단계에서 봤던 오류 문구는 넘어감. 그 이후 ReadFile함수를 만나게 되는데, 이 함수는 지정된 파일에서 데이터를 읽고 파일에 써져있는 내용을 저장함. 40109C를 보면 읽은 바이트 수를 402173에 저장하고 문자열을 40211A에 저장함.

 

3. 그 후 내려오다보면 4010B4와 그 다음줄에서 EBX와 ESI를 xor연산으로 초기화함. 그리고 4010B8에서 402173주소에 있는 값과 10을 비교하는데 여기서 10은 16진수 10으로 16을 의미함.

 

4. 그 밑에 jl 명령어로 402173에 있는 값이 16보다 작다면 오류 메세지를 출력하는 줄로 점프하기 때문에 파일은 최소 16글자여야함.

 

5. 4010C1에서 초기화한 EBX에 문자열이 있는 40211A주소값을 더해서 AL에 복사함. 다음줄에서 AL이 0이 아니라면 AL과 47이 같은지 검사하는데 47은 아스키코드로 G이기 때문에 AL이 G인지 검사하는것. AL이 G면 아까 초기화한 ESI와 EBX를 한개씩 증가, G가 아니면 EBX만 증가함. 따라서 문자열이 끝날때 까지 EBX를 증가시켜 문자열을 한개씩 맞춰보면서 G의 개수가 저장되는 ESI가 8이하라면 오류메세지를 출력하고 크다면 정상적으로 출력. AL이 0이라면 ESI가 8과 같은지 검사하고 ESI가 8보다 작다면 오류 메세지 출력. AL이 0이라는 것은 NULL문자로 문자열의 끝을 가르킴.

 * 여기서 AL은 EAX의 하위 8bit를 가르킴.

 

6. 따라서 정상적인 keyfile.dat는 G가 8개 이상 포함된 16글자 이상의 문자열이 된다.

'Security > Reversing' 카테고리의 다른 글

리버싱 핵심원리 5장  (0) 2023.03.27
리버싱 핵심원리 4장  (0) 2023.03.27
Lena Tutorial 1단계  (0) 2023.03.27
리버싱 핵심원리 3장  (0) 2023.03.27
리버싱 핵심원리 2장  (0) 2023.03.27
'Security/Reversing' 카테고리의 다른 글
  • 리버싱 핵심원리 5장
  • 리버싱 핵심원리 4장
  • Lena Tutorial 1단계
  • 리버싱 핵심원리 3장
hojoo
hojoo
그냥 개발이 즐거운 사람
  • hojoo
    dev_record
    hojoo
  • 전체
    오늘
    어제
    • 분류 전체보기 (84)
      • Study (0)
        • 모든 개발자를 위한 HTTP 웹 기본 지식 (0)
        • Real MySQL 8.0 (0)
        • 친절한 SQL 튜닝 (0)
        • 도메인 주도 개발 시작하기 (0)
        • 대규모 시스템 설계 기초 (0)
      • Computer Science (68)
        • Problem Solving (30)
        • Data Structure (4)
        • Spring Boot (14)
        • DB (1)
        • Java (4)
        • OS (3)
        • Server (3)
        • Tech (0)
      • Security (16)
        • Reversing (15)
        • Assembly (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    12033
    리버싱 핵심원리
    레나 튜토리얼
    Reversing
    2539
    19622
    Header
    dreamhack.io
    n+1
    bean
    servlet
    자료구조
    PE header
    백준
    프로그래머스
    DB
    13265
    9421
    Spring boot
    x64dbg
    서버 증설 횟수
    DP
    Lena tutorial
    15973
    소수상근수
    16946
    리버싱
    21278
    n^2 배열 자르기
    HTTP
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
hojoo
Lena Tutorial 2단계
상단으로

티스토리툴바