참고 도서 : [리버싱 핵심원리 : 악성 코드 분석가의 리버싱 이야기]
저자 : 이승원
출판사 : 인사이트
참고 사이트 :
Reverse Engineering
리버스 엔지니어링 또는 역공학은 장치 또는 시스템의 기술적인 원리를 그 구조분석을 통해 발견해내는 과정이다. 그리고 유지 보수를 위해, 또는 같은 기능을 하는 새 장치를 원본의 일부를 이용하지 않고 만들기 위해 대상의 세부적인 작동을 분석하는 것도 포함한다.
Reverse Code Engineering; RCE
소프트웨어 분야의 리버스 엔지니어링이라고 생각하면 된다.
사용 이유
- 소프트웨어 간의 상호 운용성
- 사라진 문서
- 상품 분석
- 호환성 부품 개발 및 성능 향상
- 경쟁사의 기술 정보 분석
- 악성보드 분석
- 소프트웨어 보안성 테스트
리버싱(분석) 방법
(1) 정적 분석
실제 실행 없이 파일의 겉모습을 관찰하여 분석하는 방법이다. 파일의 종류(EXE, DLL, DOC, ZIP 등), 크기, 헤더(PE) 정보, Import/Export API, 내부 문자열, 실행 압축 여부, 등록 정보, 디버깅 정보, 디지털 인증서 등의 다양한 내용을 확인한다. 또한 디스어셈블러(Disassembler)를 이용해서 내부 코드와 그 구조를 확인하는 것도 포함된다.
(2) 동적 분석
실제 또는 가상 프로세서에서 파일을 직접 실행시켜 그 행위를 분석하고, 디버깅을 통하여 코드 흐름과 메모리 상태 등을 자세히 살펴보는 방법이다. 파일, 레지스트리(Registry), 네트워크 등을 관찰하면서 프로그램의 행위를 분석한다. 또한 디버거(Debugger)를 이용하여 프로그램 내부 구조와 동작 원리를 분석할 수 있다. 동적 분석은 정적 분석과 대조된다. 유닛 테스트, 통합 시험, 시스템 검시 그리고 인수 검사는 동적 분석을 사용한다.
'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 |
댓글