write-up/reversing

[기초 리버싱] 01. 리버싱

여니두 2019. 9. 17.

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)

특별히 그 의도가 비합법적, 비도덕적인 경우

- 목적: 저작권을 침해하는 행위 등

댓글