리버싱

[리버싱] 리버싱 ? 제대로 알자

JJANG-JOON 2023. 9. 9. 21:05
반응형

 

 

 

 

 

 

 

리버싱❓ 

 

 

 

 

 

 

 

 

 

 

 

리버스 엔지니어링 ( 역공학) 의 사전적 정의는 다음과 같다.

 

 

 

 

 

리버스 엔지니어링이란 소프트웨어 공학의 한 분야로 , 이미 만들어진 시스템을 역으로 추적하여 처음의 문서나 설계기법 등의 자료를 얻어내는 일을 말한다.

 

 

 

 

 

1. 소프트웨어 역공학: 소프트웨어의 실행 파일을 분석하여 그 내부 동작을 이해하는 것이다. 예를 들어, 프로그램의 알고리즘, 데이터 구조, 보안 메커니즘 등을 분석하여 원하는 목적을 달성하기 위해 필요한 정보를 얻을 수 있다.

2. 악성 코드 분석: 악성 소프트웨어나 바이러스의 동작을 분석하여 그 행위와 기능을 이해하고 대응하기 위한 대책을 마련하는 것이다. 악성 코드의 동작 원리, 암호화 기법, 통신 프로토콜 등을 분석하여 보안 전문가나 안티바이러스 소프트웨어 개발자가 대응할 수 있다.

3. 하드웨어 역공학: 하드웨어 장치의 동작 원리와 통신 프로토콜을 분석하는 것이다. 예를 들어, 전자 제품의 회로 구성, 칩 내부의 동작 방식, 통신 프로토콜 등을 분석하여 하드웨어 개발자가 장치를 이해하고 개선할 수 있다.

4. 게임 리버싱: 게임 소프트웨어의 동작을 분석하여 게임의 규칙을 우회하거나 수정하는 것이다. 예를 들어, 게임의 내부 데이터 구조, 메모리 값을 조작하거나 패치를 적용하여 게임을 수정하거나 치트 코드를 개발할 수 있다.

리버싱은 이 외에도 소프트웨어 보안, 디지털 포렌식, 업그레이드 가능한 하드웨어 장치의 분석 등 다양한 분야에서 활용될 수 있다.

 

 

#include <stdio.h>

int main() {
    int number1 = 10;
    int number2 = 20;
    int sum = number1 + number2;
    
    printf("두 수의 합은 %d입니다.\n", sum);
    
    return 0;
}

 

 

 

 

이런 파일을 컴파일 하면 실행파일이 만들어지는데 예를 들어 실행파일의 이름이 Hack.exe 라고 했을 때  실행파일이 만들어졌다는 것은 위에 작성한 코드가 아래 사진처럼 기계어로 변환되었음을 의미한다.

 

 

 

 

 

 

위의 사진의 기계어 코드를 해석해서 화면에 출력하게 되는 것인데 이 실행 파일을 사람이 리버싱 하기엔 힘들다. 

 

그래서 리버싱 작업은 보통 WinDBGIDA, OllyDBG 와 같은 디버깅 툴을 사용해서 이루진다.

 

 

 

 

 

 

 

 

 


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

반응형