리버스 엔지니어링(Reverse Engineering)
- 소프트웨어의 한 분야로, 이미 만들어진 시스템을 역으로 추적하여 처음의 문서나 설계기법 등의 자료를 얻어내는 일을 말합니다. 이것은 시스템을 이해하여 적절히 변경하는 소프트웨어 유지보수 과정의 일부 입니다.
다른 단어로는 역공학이라고도 말하는데요 개발을 예로 들어서 설명드릴게요
개발은 위해서 분석, 설계, 코딩, 테스트, 유지보수 등의 절차를 밟아가며 개발하는 순공학에 반대로 뒤집다라는 뜻에 리버스가 붙은 역공학이라고 부릅니다.
소프트웨어 제품은 판매시 소스는 제공하지 않으나 각종도구를 활용하여 컴파일된 실행 파일과 동작상태를 정밀 분석하면 그 프로개름의 내부동작과 설계 개념을 어느 정도 추척할수 있고, 이러한 정보를 이용하여 크랙, 파일을 수정하거나 프로그램 동작을 변경하여, 유사한 동작의 프로그램보다 기능이 향상된 프로그램도 개발할 수 있습니다.
리버스 엔지니어링은 주 목적은 악성코드 분석하기위해서 사용하고 있습니다.
악성코드의 경우 소스코드를 구하는 것이 어렵기 때문에 해커들의 경우에는 내부구조를 분석하여 악성코드를 새로 만들어내는데 쓰기도하고 정보보안 전문가들은 해커를 막고 역추적 하기위해서 사용합니다.
도구만 있다면 악성코드를 분해하고 분석하는 것이 처음에는 쉽다고 느낄 수 있지만 시간과 노력이 필요하기에 해킹과보안기술중에서 최상급으로 분류되기도 합니다.
리버스 엔지니어링을 배우기 위해서는
프로그래밍 : C언어, C++, 자료구조, 자바
시스템 : 리눅스, 유닉스, 윈도우
네트워크 : 라우터, 스위치, 허브
등의 기초를 쌓아야 하고 웹 해킹/보안, 시스템해킹/보안, 네트워크 해킹/보안, 리버싱, 악성코드 분석, TCP/IP 소켓 프로그래밍 등등을 배우셔야 합니다.
읽어주셔서 감사합니다.
'악성코드 분석 > 리버스 엔지니어링' 카테고리의 다른 글
패킹과 언패킹 (0) | 2020.04.10 |
---|---|
레나 리버싱 17 강 일련번호 생성 로직 분석 (0) | 2020.04.08 |
실전 악성코드와 멀웨어 분석 실습 - 11-01 (0) | 2020.02.19 |