※ 리버스엔지니어링(Reverse Enginerring, RE: 역공학) : 물건이나 기계장치 혹은 시스템 등의 구조, 기능, 동작 등을 분석하여 그 원리를 이해하며 단점을 보완하고 새로운 아이디어를 추가하는 일련의 작업
※ 리버스 코드 엔지니어링(Reverse Code Engineering, RCE) : 소프트웨어 분야의 리버스 엔지니어링
● 리버싱 분석 방법
1) 정적분석 : 파일을 실행하지 않고 겉모습을 관찰하여 분석하는 방법
- 파일의 종류, 크기, 헤더정보, Import/Export API, 내부 문자열, 실행 압축 여부, 등록 정보, 디버깅 정보,
디버깅 인증서 등의 다양한 내용 확인
- 디스어셈블러(Disassembler)를 이용해서 내부 코드와 그 구조를 확인
2) 동적분석 : 파일을 직접 실행시켜 그 행위를 분석하고 디버깅을 통해코드 흐름과메모리 상태 등을 분석하는 방법
- 파일, 레지스트리, 네트워크 등을 관찰하면서 프로그램의 행위를 분석
- 디버거를 이용하여 프로그램내부 구조와 동작원리를 분석
≫ 정적 분석으로 정보 수집하면서 해당 프로그램의 구조와 동작 원리 예측 후
이러한 예측들을 이용하여 동적 분석 방법에 사용함
● Source Code, Hex Code, Assembly Code
- 리버싱에서 취급하는 대상은 보통 실행 파일인 경우가 많음
1) Source Code : 컴퓨터 프로그램을 사람이 읽을 수 있는 프로그램 언어로 기술한 텍스트 파일
2) Hex Code : 실행 파일은 2진수(Binary) 형식으로 되어 있다. 하지만 이를 사람이 일일이 해석하기 어려우므로
2진수를 16진수 형태로 변환시킨다.
- Hex Editor : binary 형식의 파일을 hex 형식으로 보여주는 유틸리티
3) Assembly Code : Hex Code 보다 좀 더 사람이 이해하기 쉬운 코드 형태
● 패치와 크랙
1) 패치(patch) : 프로그램의 파일 혹은 실행 중인 프로세스 메모리의 내용을 변경하는 작업
- 프로그램 취약점 수정 및 개능 개선 등에 사용됨
2) 크랙(crack) : 패치와 같은 개념이지만 그 의도가 비합법적이고 비도덕적인 경우
- 저작관을 침해하는 행위(불법 복제 및 사용 등)에 주로 사용됨
'리버싱' 카테고리의 다른 글
바이트 오더링 (0) | 2023.03.21 |
---|---|
OllyDbg를 이용한 리버싱 기초 (0) | 2023.03.21 |
※ 리버스엔지니어링(Reverse Enginerring, RE: 역공학) : 물건이나 기계장치 혹은 시스템 등의 구조, 기능, 동작 등을 분석하여 그 원리를 이해하며 단점을 보완하고 새로운 아이디어를 추가하는 일련의 작업
※ 리버스 코드 엔지니어링(Reverse Code Engineering, RCE) : 소프트웨어 분야의 리버스 엔지니어링
● 리버싱 분석 방법
1) 정적분석 : 파일을 실행하지 않고 겉모습을 관찰하여 분석하는 방법
- 파일의 종류, 크기, 헤더정보, Import/Export API, 내부 문자열, 실행 압축 여부, 등록 정보, 디버깅 정보,
디버깅 인증서 등의 다양한 내용 확인
- 디스어셈블러(Disassembler)를 이용해서 내부 코드와 그 구조를 확인
2) 동적분석 : 파일을 직접 실행시켜 그 행위를 분석하고 디버깅을 통해코드 흐름과메모리 상태 등을 분석하는 방법
- 파일, 레지스트리, 네트워크 등을 관찰하면서 프로그램의 행위를 분석
- 디버거를 이용하여 프로그램내부 구조와 동작원리를 분석
≫ 정적 분석으로 정보 수집하면서 해당 프로그램의 구조와 동작 원리 예측 후
이러한 예측들을 이용하여 동적 분석 방법에 사용함
● Source Code, Hex Code, Assembly Code
- 리버싱에서 취급하는 대상은 보통 실행 파일인 경우가 많음
1) Source Code : 컴퓨터 프로그램을 사람이 읽을 수 있는 프로그램 언어로 기술한 텍스트 파일
2) Hex Code : 실행 파일은 2진수(Binary) 형식으로 되어 있다. 하지만 이를 사람이 일일이 해석하기 어려우므로
2진수를 16진수 형태로 변환시킨다.
- Hex Editor : binary 형식의 파일을 hex 형식으로 보여주는 유틸리티
3) Assembly Code : Hex Code 보다 좀 더 사람이 이해하기 쉬운 코드 형태
● 패치와 크랙
1) 패치(patch) : 프로그램의 파일 혹은 실행 중인 프로세스 메모리의 내용을 변경하는 작업
- 프로그램 취약점 수정 및 개능 개선 등에 사용됨
2) 크랙(crack) : 패치와 같은 개념이지만 그 의도가 비합법적이고 비도덕적인 경우
- 저작관을 침해하는 행위(불법 복제 및 사용 등)에 주로 사용됨
'리버싱' 카테고리의 다른 글
바이트 오더링 (0) | 2023.03.21 |
---|---|
OllyDbg를 이용한 리버싱 기초 (0) | 2023.03.21 |