보안 전공생의 공부

[Dreamhack] Reverse Engineering 본문

공부/Reversing

[Dreamhack] Reverse Engineering

수잉 2021. 1. 30. 09:54

출처 : 드림핵 (dreamhack.io)

 

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

 : 이미 만들어진 시스템, 장치에 대한 해체, 분석을 거쳐

   그 대상 물체의 구조와 기능, 디자인 등을 알아내는 일련의 과정

   산업 전 분야에 걸쳐 적용 가능

 

 

▶ Software Reversing Engineering

: 소스코드 컴파일된 대상 소프트웨어의 구조를 여러 방법으로 분석, 메모리 덤프를 비롯한 바이너리 분석 결과를 토대로 동작 원리, 내부구조를 파악

 → 원래의 소스가 어떻게 작성된 것인지 알아내는 과정

 

 - 각종 상용 프로그램의 지적 재산권 침해할 수도 있음

 

· 방법

- 정적 분석 방법 (Static Analysis) : 프로그램 실행 X 분석

  ☞ 실행 파일 구성 요소, 대상 실행 파일이 실제로 동작할 CPU 아키텍처에 해당하는 어셈블리 코드 이해

- 동적 분석 방법 (Dynamic Anaylsis) : 프로그램 실행 → 입출력과 내부 동작 단계를 살펴 분석

  ☞ 환경에 맞는 디버거 이용해 단계별로 분석하는 기술

 

· source code → binary code

 (사람이 이해)    (컴퓨터가 이해)

 - 사용되는 프로그램 : 컴파일러

 - 중간언어 준비 → 컴파일러가 분석하고 최적화해 어셈블리 코드로 만듬

   어셈블리코드와 기계코드는 1:1 대응 가능  어셈블을 거쳐 실행가능한 바이너리 완성

<source code → Intermediate language → assembly code → binary code>

 

· source code binary code ☞ 리버싱(정적 분석방법)에 해당하는 방법

- 주어진 바이너리를 어셈블리로 변환 (디스어셈블)  어셈블리 코드 분석

<binary code assembly code source code>

 

 

Comments