[기초 리버싱] 01. 리버싱
1.1 리버스 엔지니어링(RE: 역공학)
: 시스템 등의 구조, 기능, 동작 등을 분석하여 그 원리를 이해, 단점을 보완, 새 아이디어를 추가하는 일련의 작업
1.2 리버스 코드 엔지니어링(RCE)
: SW 분야의 리버스 엔지니어링
: RCE, RE, 역공학, 리버싱
1.2.1 리버싱(분석) 방법
1) 정적 분석
파일의 겉모습을 관찰하여 분석
- 파일을 실행하지 않음
- 파일의 종류(EXE, DLL, DOC, ZIP 등), 크기, 헤더(PE) 정보, Import/Export API, 내부 문자열, 실행 압축 여부, 등록 정보, 디버깅 정보, 디지털 인증서 등의 내용 확인
- 디스어셈블러 이용하여 내부 코드와 구조 확인
2) 동적 분석
파일을 직접 실행시켜 그 행위를 분석
- 파일, 레지스트리, 네트워크 등을 관찰하며 프로그램의 행위를 분석
- 디버거 이용하여 내부 구조와 동작 원리를 분석 가능
** 보통,
1. 정적 분석으로 정보 수집 > 프로그램 구조, 동작 원리 예측
2. (정적 분석이) 동적 분석에 많은 아이디어 제공해 줌
1.2.2 Source Code, Hex Code, Assembly Code
리버싱에서 취급하는 대상은 보통 실행 파일
* Source Code
* Hex Code
2진수를 보기 쉽게 16진수(Hex) 형식으로 변환
* Assembly Code
사람이 더 이해하기 쉬운 어셈블리 코드 형태로 변환.
일반적 리버싱 과정에서는 어셈블리 코드를 분석하곤 한다.
1.2.3 패치와 크랙
1) 패치(patch)
프로그램의 파일 호근 실행 중인 프로세스 메모리의 내용을 변경하는 작업
- 목적: 프로그램의 취약점 수정, 기능 개선 등
2) 크랙(crack)
특별히 그 의도가 비합법적, 비도덕적인 경우
- 목적: 저작권을 침해하는 행위 등
'write-up > reversing' 카테고리의 다른 글
[기초 리버싱] 03. 리틀 엔디언 표기법 (0) | 2019.09.17 |
---|---|
[기초 리버싱] 02. Hello World! 리버싱 (0) | 2019.09.17 |
댓글