본 포스팅은 DreamHack 사이트의 리버스 엔지니어링이란 강의 내용을 요약한 것입니다.

자세한 내용은 사이트에 들어가셔서 보시기 바랍니다.

https://dreamhack.io/

 

해커들의 놀이터, DreamHack

해킹과 보안에 대한 공부를 하고 싶은 학생, 안전한 코드를 작성하고 싶은 개발자, 보안 지식과 실력을 업그레이드 시키고 싶은 보안 전문가까지 함께 공부하고 연습하며 지식을 나누고 실력 향상을 할 수 있는 공간입니다.

dreamhack.io


Reverse Engineering

이미 만들어진 시스템이나 장치에 대한 해체나 분석을 거쳐 그 대상 물체의 기능, 디자인 등을 알아내는 일련의 과정을 말합니다. 따라서 비단 소프트웨어 뿐만 아니라 기계공학, 전자공학은 물론 생물학 등에서도 폭넓게 쓰입니다.

 

포너플에서는 소스코드가 없는 상태에서 소프트웨어의 구조를 분석하고, 동작 원리와 내부 구조를 파악한 뒤, 원래의 소스가 어떻게 작성된 것인지 알아내는 과정을 의미합니다.

 

이는 제작사가 이미 개발을 중단한 프로그램에 대한 지원이 필요할 때 효과적으로 사용됩니다.

예를 들어 1996년에 발매된 디아블로가 리버싱을 거쳐 모딩된 버전이 공개된 적 있습니다.

하지만 리버싱을 악용하는 사례도 있습니다. 대표적으로 게임핵을 만드는데 사용하기도 합니다.

 

리버싱은 위의 두 사례처럼 양날의 검으로 사용됩니다. 나쁜 사례로는 사용하지 맙시다.

 

Static Analysis vs Dynamic Analysis

정적 분석 방법: 프로그램을 실행시키지 않고 분석하는 방법

-실행 파일을 구성하는 모든 요소, 대상 실행 파일이 실제로 동작할 CPU에 해당하는 어셈블리 코드 필요

동적 분석 방법: 프로그램을 실행시켜서 입출력과 내부 동작 단계를 살피며 분석하는 방법

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

 

Assemble

Source Code -> Intermediate Language -> Assembly Code -> Binary Code

Disassemble

Binary Code -> Assembly Code -> Source Code

 

 


자세한 내용은 DreamHack 강의에서 보시기 바랍니다. 그곳에는 예제까지 준비되어 있답니다^^

'Hacking-기초 > Reversing' 카테고리의 다른 글

Easy Crack [100pts]  (0) 2020.09.03
x64 기초  (0) 2020.05.18

+ Recent posts