SECURITY/리버싱(역공학)
리버싱 1장
OnewayK
2015. 8. 19. 16:18
1. 리버스 엔지니어링(Reverse Engineering, RE: 역공학)
- 물건이나 기계장치 혹은 시스템 등의 구조, 기능, 동작 등을 분석하여 원리를 이해하며, 단점을 보완하고 새로운 아이디어를 추가하는 작업
2. 리버스 코드 엔지니어링(Reverse Code Engineering, RCE)
- 소프트웨어 분야의 리버스 엔지니어링
- 아직 정확한 용어의 통일이 되지 않아 RCE, RE, 역공학, 리버싱 등의 용어를 섞어 사용
3. 리버싱(분석) 방법
3-1. 정적분석
- 겉모습을 관찰하는 방법
- 파일을 실행하지 않음
- 파일의 종류, 크기, 헤더(PE)정보, Import/Export API, 내부 문자열, 실행 압축 여부, 등록 정보, 디버깅 정보, 디지털 인증서 등의 다양한 내용 확인
- 디스어셈블러(Disassembler)를 이용해서 내부 코드와 그 구조를 확인
- 동적 분석 방법에 좋은 참고 자료로 활용
3-2. 동적분석
- 파일을 직접 실행
- 디버깅을 통하여 코드 흐름과 메모리 상태 등을 자세히 살펴보는 방법
- 파일, 레지스트리(Registry), 네트워크 등을 관찰하면서 프로그램의 행위를 분석
- 디버거(Debugger)를 이용하여 프로그램 내부 구조와 동작 원리를 분석
4. 패치와 크랙
- 패치 : 프로그램의 파일 혹은 실행 중인 프로세스 메모리의 내용을 변경하는 작업
- 크랙 : 패치와 같은 개념이지만 특별히 그 의도가 비 합법적이고, 비도덕적인 경우