728x90

1. 리버스 엔지니어링 개요

개요

리버스 엔지니어링 (Reverse Engineering)

  • 프로그램의 목적코드 조사 또는 분석을 통해 프로그램의 구조를 파악하는 과정
  • 하드웨어를 물리적으로 분해해서 분석하는 것도 리버싱의 일종
  • 우리나라의 경우 이진코드로 이루어진 실행 파일의 리버스 엔지니어링을 부분적으로 제한
  • 리버스 엔지니어링을 이용하여 포르개림의 원본 소스코드 추출
    • RCE (Reverse Code Engineering) 이라고도 부름
  • 다양한 개발 언어적 지식 필요

리버스 엔지니어링의 순기능

  • 스프트웨어 호환성 및 성능 향상
  • 소프트웨어 보안성 테스트
  • 학술 / 학문적 추구
  • 악성코드 분석

리버스 엔지니어링의 역기능

  • 소프트웨어 불법 복제
  • 불법 정품 인증
  • 소프트웨어 키젠 및 크랙 생성

리버스 엔지니어링 방법

  • 컴파일 언어

    컴파일러가 원본 소스코드를 기계어로 전체 변환 후 실행

    원본 소스코드 복원 불가 → 어셈블리어로 분석

  • 인터프리터 언어

    인터프리터는 소스코드를 한 줄씩 읽어 실행

    실행 파일 자체가 원본 소스 코드 → 소스 코드 분석

  • JIT 언어

    JIT 컴파일러가 각 언어마다 자체 특정 코드(바이트코드)로 변환

    원본 소스코드로 복원 가능 → 소스 코드 분석

리버스 엔지니어링 분석 방법

  • 정적 분석

    소프트웨어를 실행하지 않고, 분석하는 방법

    Ex) 파일 헤더 정보, 파일 크기, 내부 문자열, 실행 압축 여부 등등

  • 동적 분석

    소프트웨어를 실행하고 분석하는 방법

    Ex) 메모리 상태, 레지스트리, 네트워크 상태, 기타 행위 분석 등등

  • 하이브리드 분석

    동적분석과 정적분석을 혼합해서 분석하는 방법

    프로그램이 동작하기 전의 운영체제 상태를 모니터링하다가 프로그램이 동작하면 변화되는 형태 추적

2. 리버스 엔지니어링과 법

저작권법

  • 이 법은 저작자의 권리와 이에 인접하는 권리를 보호하고 저작물의 공정한 이용을 도모함으로써 문화 및 관련 산업의 향상 발전에 이바지함을 목적으로 한다

'Reversing' 카테고리의 다른 글

Switch.exe / Switch2.exe  (0) 2021.08.26
Basic_BOF 1  (0) 2021.08.25
if.exe ; if_hard.exe  (0) 2021.07.21
Reversing 01.  (0) 2021.07.21

+ Recent posts