리버싱이란

2023. 1. 14. 20:11카테고리 없음

테크 트렌드

<리버싱 이란>
리버스 엔지니어링은 역공학이라고도 합니다.
리버스 엔지니어링은 물건이나 기계장치 혹은 시스템 구조, 기능 등을 분석하여 원리를 이해하고 단점을 보완하거나 새로운 아이디어를 추가하는 작업입니다. 이 과정을 리버싱이라고 합니다.


리버싱은 인간이 알아들을 수 있게 만든 자바나 c언어 같은 언어들을 0,1로 나타낸 기계어(컴퓨터 언어)로 변환하여 필요한 작업을 수행하는 것입니다.

<리버싱 방법>
리버싱 방법에는 크게 두 가지가 있는데요.
파일의 겉 모습을 관찰하고 분석하는 정적분석, 파일을 직접 실행시켜 분석하는 동적분석이 있습니다.

<정적분석>

정적 분석이란 소스 코드의 실행 없이 정적으로 프로그램의 문제를 찾는 과정을 의미합니다.
정적 분석에서는 파일의 종류, 크기, 헤더 등을 확인할 수 있습니다.

동적분석에서는 파일, 레지스트리, 네트워크 패킷 등을 관찰하며 프로그램 행위를 분석합니다.

!! 이때 디버거나 패킷캡처 프로그램을 활용합니다!!

리버싱은 패치와, 크랙에 사용됩니다.

패치란 프로그램의 파일이나 실행 중인 프로세스의 메모리 내용을 변경하는 작업을 합니다.
ex) 운영체제 업데이트, 소프트웨어 업데이트가 해당

크랙이란 패치와 같은 개념이지만 그 의도가 비합법적이고 비도덕적인 경우를 말합니다.
ex) 다른 회사 소프트웨어를 분석하여 부제 하거나 우회하는 경우가 해당

<리버싱 적용 분야>

첫 번째로 악성코드 개발과 분석에 사용됩니다.
프로그램의 취약점을 찾기 위해서는 리버싱을 사용해야 합니다.
일반적으로 악성코드는 기존 프로그램의 취약점을 찾아 시스템에 침투하는데 이용합니다.

반면에 안티 바이러스 소프트웨어 개발자들은 악성코드 프로그램을 분석하려고 하는데에 리버싱을 사용할 것입니다..
리버싱 기술을 이용해서 악성코드가 실행되는 각 단계를 추적하고 분석하여 악성코드에 의해 발생할 수 있는 피해 상황과 전파율을 파악하고 제거 방법과 전파를 방지하는 방법을 찾아낼 수 있기 때문입니다.

두 번째로 저작권이 보호된 소프트웨어를 무력화시키거나 경쟁사 소프트웨어를 분석할 때 사용됩니다.
경쟁사의 소프트웨어를 분석하여 그 원리를 파악하고 더 나은 제품을 개발할 목적으로 이용되는 경우가 많기 때문입니다.

세 번째로 소프트웨어의 자체보호 가능의 안정성을 측정하거나, 소프트웨어의 오류의 발생 가능성을 측정하는 데 사용합니다.
최근 소프트웨어 개발 비용이 증가하는 만큼 불법 복제나 임의 사용으로부터 보호하기 위해 개발사 스스로 소프트웨어 안정성을 측정하기 때문입니다.


리버싱은 사용 목적에 따라 순기능과 악기능이 존재합니다.
그러므로 우리나라에선 상호운용의 경우 리버싱을 허용하고 있으며 다른 목적은 프로그램 저작권 침해로 규정하고 있습니다.