본문 바로가기

리버싱

[리버싱] 리버싱에 대해 알아보자





리버싱이란 



해당 프로그램의 구조, 기능, 동작 등의 원리를 역으로 따라가며 이해하고 분석하여 부족한 부분을 보완하거나 추가되었으면 하는 새로운 기능 등을 추가하는 작업이다. 


좋은 쪽으로는 유지, 개발, 보안에 사용되며, 나쁜 쪽으로는 컴퓨터 시스탬 내에 침입하는 크랙 및 기술을 빼오는 데 사용된다.


해킹 보안에서는 침해 사고를 일으키는 바이러스 및 웜을 비롯한 각종 악성코드와 좀비 프로세스에 관련된 실행 코드를 분석하여 소스 코드로 변환해 분석하는 작업을 의미한다. 


악성 코드 분석에서 가장 핵심적인 기술로 사용되고 있다.





리버싱을 배우는 이유



- 프로그램의 작동 원리나 취약점 등을 알 수 있다


- 개발 / 테스트 단계에서 발견하지 못했던 버그나 취약점을 파악할 수 있다


- 파일이나 메모리를 직접 수정(패치)하여 문제를 해결할 수 있다


- 새로운 기능을 추가시켜 프로그램의 기능을 향상시킨다





리버싱 방법 (정적 분석 vs 동적 분석)



실행 파일을 분석하는 방법은 크게 두 가지로 나눌 수 있다.



정적 분석


- 파일을 실행하지 않고 파일의 정보만으로 분석하는 방법


- 파일의 종류, 크기, 헤더 정보, 실행 압축 여부, 등록 정보, 디지털 인증서 등의 내용을 확인


- 악성코드와 같이 실행하면 위험한 프로그램을 분석할 때 사용


- 디스어셈블러를 이용하여 내부 코드와 그 구조 확인



동적 분석


- 프로그램을 직접 실행하면서 코드의 흐름과 메모리의 상태 등을 분석하는 방법


- 파일, 레지스트리(Registry), 네트워크 등을 살펴본다


- 디버거를 이용하여 프로그램 내부 구조와 동작 원리 분석

'리버싱' 카테고리의 다른 글

과제  (0) 2017.08.23
[리버싱] 리틀엔디안 빅엔디안  (0) 2017.08.22
[리버싱] 어셈블리어 명령어  (0) 2017.08.21
[리버싱] 어셈블리어란  (0) 2017.08.21
[리버싱] 디버거(OllyDbg)  (0) 2017.08.21