개인노트

[리버싱] 1.시작 본문

Reversing

[리버싱] 1.시작

BillnairK 2017. 7. 1. 23:00

[ 리버싱 엔지니어링(Reversing Engineering, RE: 역공학) 이란? ]

기계장치 또는 시스템 구조, 기능, 동작 등을 분석하여 원리를 이해하여 단점을 보완하고 새로운 기능을 추가하는 일련의 작업이다.

 

[ 리버싱 방법 ]

실행 파일의 분석 방법에는 가지 방법으로 나뉜다. 정적 분석으로 정보를 수집하면서 프로그램의 구조와 동작 원리에 대해 예측 있다.

1. 정적 : 파일의 외관을 관찰하고 분석하는 방법이다. 파일의 종료, 크기, 헤더(PE)정보, 내부 문자열 .. 다양한 내용을 확인하는 것이다. 디스어셈블러(Disassembler) 이용하여 내부 코드와 구조를 확인 하는 것도 정적 분석 방법이다.

2. 동적 분석 : 파일을 실행시켜서 행위를 분석하고 디버깅을 통하여 코드의 흐름과 메모리 상태 .. 여러 가지를 자세히 살펴보는 방법이다. 디버거(Debugger) 이용하여 프로그램 내부 구조와 동작 원리를 분석할 있습니다.

 

[ Code ]

리버싱의 대상은 대부분 실행 파일인 경우가 많고 소스코드 없이 실행 파일의 바이너리 자체를 분석한다. 그리하여 소스코드와 바이너리 코드 사이의 관계를 살펴보는 것이 리버싱을 이해하면 도움이 된다.

1. Source Code : 개발도구를 이용한 소스코드

2. Hex Code : 실행 파일은 컴퓨터의 언어인 2진수(Binary) 구성되어 있다. 2진수는 인간이 보고 해석하기에는 불가능하다고 있다. 그래서 2진수를 16진수(Hex) 변환시켜 그나마 보기 수월하게 만들어 주는 것이다.

3. Assembler Code : 아무리 2진수를 16진수로 바꾸어도 사람이 읽기에는 부적합하다. 그래서 좀더 쉬운 형태인 Assembler code 형태로 변환시켜준다.


'Reversing' 카테고리의 다른 글

[리버싱] 3.OllDbg 기본 명령어  (0) 2017.07.02
[리버싱] 2.디버거  (0) 2017.07.01
Comments