본문 바로가기
리버스 엔지니어링[리버싱]

리버스엔지니어링(리버싱) 어떻게 공부해야 할까?

by PGman 2024. 2. 19.

안녕하세요.
 
리버싱에 관한 내용들이나 여러 가지를 내용들을 블로그에 남기고 여러 정보를 공유하고자 시작하게 되었습니다.
 
작게나마 도움 되는 내용들을 올릴 예정입니다.
 
차근차근 하나하나 공부하다 보면 실력이 늘 수 있다고 생각합니다.
 
부족하지만 같이 한번 시작해 보시죠!!
 
 
 
 

 
 
 
 
 

리버스 엔지니어링

 
리버스 엔지니어링(Reverse Engineering, RE: 역공학)에 대해 설명해 볼까 합니다.
 
앞으로 많은 내용을 다루기에 앞서 기초부터 알아가기 위하여 알아보겠습니다
 
보통 리버스 엔지니어링이라 하면 물건이나 기계장치 혹은 시스템 등의 구조나 기능 동작 등 많은 것을 분석하여 그 원리를 이해하고 이해한 원리를 이용해 단점을 보완하거나 새로운 아이디어를 추가하는 일련의 작업과 같다고 볼 수 있습니다.
 
 
 

 
 
 
여기서 리버스 코드 엔지니어링(Reverse Code Engineering, RCE)은 소프트웨어 분야의 리버스 엔지니어링이라고 생각할 수 있습니다.
 
저희가 차근차근 알아볼 내용이겠네요
 
수많은 분들은 RCE, RE, 역공학, 리버싱 등 부르는 게 다르기에 소프트웨어를 리버싱 관점으로 상세하게 분석한다는 뜻으로 생각하시면 될 것 같습니다.
 
 
 
 
 

 
 
 
 
 

분석 방법

 
보통 분석 방법으로는 크게 보았을 때 정적 분석과 동적 분석으로 나눠서 볼 수 있습니다.
 
한번 같이 알아보시죠
 
 
 

 
 
 
정적 분석
 
보통 파일의 겉모습(파일실행 X)을 관찰하며 분석하는 방법입니다.
정적 분석 단계에서는 파일을 실행하지 않으며, 파일의 종류(EXE, DLL, DOC, 등), 크기 헤더 정보 import/Export API 등 여러 가지를 분석하여 내용을 확인하는 것입니다.
 
또한 디스어셈블러를 이용하여 내부 코드와 그 구조도 확인하는 것이 정적 분석의 범주에 들어가기도 합니다.
 
 
 

exe 형식의 파일

 

dll 형식의 파일

 
동적 분석
 
동적 분석으로는 정적 분석과 다르게 파일을 직접 실행시켜 분석하고, 디버깅을 통해 코드 흐름이나 메모리 상태 등을 자세하게 확인할 수 있습니다. 레지스트리(Registry), 네트워크 등을 관찰하고 그 프로그램의 움직임 등을 분석합니다.
또한 디버거(Debugger)를 이용해서 프로그램 내부 구조나 동작원리등을 분석할 수 있습니다.
 
 

 
 
다음시간엔 디버깅을 해보는 시간을 가져보도록 하겠습니다.