SMALL
리버스 엔지니어링이란?
- 리버스 엔지니어링(역공학)이라고 불림
- 물건이나 기계장치, 시스템 등의 구조, 기능, 동작 등을 분석해 그 원리를 이해하며 단점을 보완하고 새로운 아이디어를 추가하는 일련의 작업
리버스 코드 엔지니어링
- SW 분야의 리버스 엔지니어링
- SW를 리버싱 관점에서 상세하게 분석한다는 뜻!
정적, 동적 분석 방법
- 정적 분석
- 파일의 겉모습을 관찰하여 분석하는 방법(파일 실행X)
- 파일의 종류(EXE, DLL, DOC, ZIP 등), 크기, 헤더(PE)정보, Import/Export API, 내부 문자열, 실행 압축 여부, 등록 정보, 디버깅 정보, 디지털 인증서 등의 다양한 내용을 확인하는 것
- 디스어셈블러(Disassembler)를 이용해서 내부 코드와 그 구조를 확인하는 것
- 동적 분석 방법에 좋은 참고 자료로 활용됨
- 동적 분석
- 파일을 직접 실행시켜 그 행위를 분석, 디버깅을 통해 코드 흐름과 메모리 상태 등을 자세히 살펴보는 방법
- 파일, 레지스트리(Registry), 네트워크 등을 관찰하면서 프로그램의 행위를 분석
- 디버거(Debugger)를 이용하여 프로그램 내부 구조와 동작 원리를 분석
※ 글쓴이는 보통 정적 분석으로 정보를 수집하면서 해당 프로그램의 구조와 동작 원리에 대해 예측을 한다고 한다. 이러한 예측은 이후 수행될 동적 분석 방법에 많은 아이디어를 제공하므로 두 가지 방법을 잘 활용하면 프로그램을 리버싱할 때 시간을 많이 단축시키고, 더 효과적인 분석이 가능!
※ 디버깅은 리버싱 방법 중 비중이 크고 재미있는 분야이긴 하지만 리버싱의 하위 개념
패치(patch)
- 프로그램의 파일 혹은 실행 중인 프로세스 메모리의 내용을 변경하는 작업
- 의도가 비합법적이고 비도덕적인 경우를 크랙(crack)
- ex) MS의 Winodws 업데이트
'Reversing > 리버싱_핵심원리' 카테고리의 다른 글
6장 abex' crackme #1 분석 (0) | 2019.07.25 |
---|---|
5장 스택 (0) | 2019.07.25 |
4장 IA-32 Register 기본 설명 (0) | 2019.07.25 |
3장 리틀 엔디언 표기법 (0) | 2019.07.25 |
2장 Hello World! 리버싱 (0) | 2019.07.25 |