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

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

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

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

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


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

다음시간엔 디버깅을 해보는 시간을 가져보도록 하겠습니다.
'리버스 엔지니어링[리버싱]' 카테고리의 다른 글
리버싱의 기초 CPU 레지스터를 알아보자 (2) | 2024.02.19 |
---|