본문 바로가기
Study/리버싱

리버싱

by 꼬부기가우는소리 2016. 6. 5.
728x90


참고 도서 : [리버싱 핵심원리 : 악성 코드 분석가의 리버싱 이야기]

저자 : 이승원

출판사 : 인사이트


참고 사이트 :

- [위키백과] 리버스 엔지니어링

- [위키백과] 정적 프로그램 분석

- [위키백과] 동적 프로그램 분석



Reverse Engineering

리버스 엔지니어링 또는 역공학은 장치 또는 시스템의 기술적인 원리를 그 구조분석을 통해 발견해내는 과정이다. 그리고 유지 보수를 위해, 또는 같은 기능을 하는 새 장치를 원본의 일부를 이용하지 않고 만들기 위해 대상의 세부적인 작동을 분석하는 것도 포함한다.


Reverse Code Engineering; RCE

소프트웨어 분야의 리버스 엔지니어링이라고 생각하면 된다.


사용 이유

- 소프트웨어 간의 상호 운용성

- 사라진 문서

- 상품 분석

- 호환성 부품 개발 및 성능 향상

- 경쟁사의 기술 정보 분석

- 악성보드 분석

- 소프트웨어 보안성 테스트



리버싱(분석) 방법

(1) 정적 분석

실제 실행 없이 파일의 겉모습을 관찰하여 분석하는 방법이다. 파일의 종류(EXE, DLL, DOC, ZIP 등), 크기, 헤더(PE) 정보, Import/Export API, 내부 문자열, 실행 압축 여부, 등록 정보, 디버깅 정보, 디지털 인증서 등의 다양한 내용을 확인한다. 또한 디스어셈블러(Disassembler)를 이용해서 내부 코드와 그 구조를 확인하는 것도 포함된다.


(2) 동적 분석

실제 또는 가상 프로세서에서 파일을 직접 실행시켜 그 행위를 분석하고, 디버깅을 통하여 코드 흐름과 메모리 상태 등을 자세히 살펴보는 방법이다. 파일, 레지스트리(Registry), 네트워크 등을 관찰하면서 프로그램의 행위를 분석한다. 또한 디버거(Debugger)를 이용하여 프로그램 내부 구조와 동작 원리를 분석할 수 있다. 동적 분석은 정적 분석과 대조된다. 유닛 테스트, 통합 시험, 시스템 검시 그리고 인수 검사는 동적 분석을 사용한다.




728x90

'Study > 리버싱' 카테고리의 다른 글

Endianness  (0) 2016.06.08
Stub Code  (0) 2016.06.08
OllyDbg (1)  (0) 2016.06.05
Assembler  (0) 2016.06.05
Debugger  (0) 2016.06.05

댓글