[리버싱] 리버싱 ? 제대로 알자
리버싱❓
리버스 엔지니어링 ( 역공학) 의 사전적 정의는 다음과 같다.
리버스 엔지니어링이란 소프트웨어 공학의 한 분야로 , 이미 만들어진 시스템을 역으로 추적하여 처음의 문서나 설계기법 등의 자료를 얻어내는 일을 말한다. |
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 라고 했을 때 실행파일이 만들어졌다는 것은 위에 작성한 코드가 아래 사진처럼 기계어로 변환되었음을 의미한다.
위의 사진의 기계어 코드를 해석해서 화면에 출력하게 되는 것인데 이 실행 파일을 사람이 리버싱 하기엔 힘들다.
그래서 리버싱 작업은 보통 WinDBG 나 IDA, OllyDBG 와 같은 디버깅 툴을 사용해서 이루진다.
