개인노트
[리버싱] 1.시작 본문
[ 리버싱 엔지니어링(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 |