리버싱 기초 문제 풀이

2025. 2. 4. 23:31·Security/Reverse Engineering

문제 설명

end로 점프하면 프로그램이 종료된다고 가정하자. 프로그램이 종료됐을 때, 0x400000 부터 0x400019까지의 데이터를 대응되는 아스키 문자로 변환하면 어느 문자열이 나오는가?

 

 

문제 풀이

라인별 코드 분석

- 1번째 라인 : dl에 rsi + rcs(예: 0x400000 + 0) 값 넣기

- 2번째 라인 : dl을 0x30과 xor 연산

- 3번째 라인 : rsi + rcs에 dl 값 넣기

- 4번째 라인 : rcx 값 1 증가

- 5번째 라인 : rcx와 0x19 비교 연산

- 6번째 라인 : rcx가 0x19보다 크면 종료

- 7번째 라인 : rcx가 0x19보다 작거나 같으면 1번째 라인으로 돌아가기

 

-> 결국 18번 동안 반복문을 돌며 기존 메모리에 있는 값과 0x30을 가지고 xor 연산을 수행하는 코드로 볼 수 있음

 

어셈블리어를 C 코드로 변환

#include <stdio.h>

int main() {
    char memory[32] = {
        0x67, 0x55, 0x5C, 0x53, 0x5F, 0x5D, 0x55, 0x10,
        0x44, 0x5F, 0x10, 0x51, 0x43, 0x43, 0x55, 0x5D,
        0x52, 0x5C, 0x49, 0x10, 0x47, 0x5F, 0x42, 0x5C,
        0x54, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    };

    int rcx = 0; 
    char dl;     

    while (rcx < 0x19) {
        dl = memory[rcx];
        dl ^= 0x30;
        memory[rcx] = dl;
        rcx++;
    }

    for (int i = 0; i < 0x19; i++) {
        printf("%c", memory[i]);
    }
    printf("\n");

    return 0;
}

 

실행 결과

 

정답 문자열 : Welcome to assembly world

'Security > Reverse Engineering' 카테고리의 다른 글

rev-basic-3 풀이(IDA)  (0) 2025.02.20
rev-basic-3 풀이  (0) 2025.02.05
abex-crackme#2 풀이  (0) 2025.02.04
rev-basic-2 풀이  (0) 2025.01.22
rev-basic-1 풀이  (0) 2025.01.22
'Security/Reverse Engineering' 카테고리의 다른 글
  • rev-basic-3 풀이(IDA)
  • rev-basic-3 풀이
  • abex-crackme#2 풀이
  • rev-basic-2 풀이
switch_user
switch_user
나의 공부 기록
  • switch_user
    while(true)
    switch_user
  • 전체
    오늘
    어제
    • 분류 전체보기
      • C
      • C++
      • Java
      • Python
      • Web
      • App
      • Security
        • Web Hacking
        • Reverse Engineering
      • DB
      • Machine Learning
      • Computer Science
      • Linux
      • Algorithm
      • 진로
      • 기타
  • 블로그 메뉴

    • 홈
    • 태그
    • velog
    • Github
  • 링크

    • velog
    • Github
  • 공지사항

  • 인기 글

  • 태그

    클래스 외부에 함수 구현
    SQL
    비트연산
    디컴파일
    모델 기반 학습
    Web 기초
    x64dbg
    코드 패치
    CSS
    어셈블리
    반복문
    HTTP
    사례 기반 학습
    머신러닝
    ml
    race condition
    IDA
    생성자와 소멸자
    쿠키
    cin.getline
    Hacking Process
    배치 학습
    SQLi
    리버싱
    인터프리팅
    웹해킹
    웹
    HTML
    xss
    어셈블리어
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
switch_user
리버싱 기초 문제 풀이
상단으로

티스토리툴바