[리버스 엔지니어링] 리버스 엔지니어링 툴 정리

류명운

·

2017. 5. 2. 10:03

반응형

[리버스 엔지니어링] 리버스 엔지니어링 툴 정리

단순 반복적인 업무의 자동화 시스템 개발을 위해 배치(Batch)를 지나 이제는 리버스 엔지니어링(Reverse Engineering)의 단계까지 접하게 되었다.

 

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

"역공학(域工學)으로 장치 또는 시스템의 기술적인 원리를 그 구조분석을 통해 발견하는 과정"

 

내 상황에서 이해를 돕자면, 여러 리버스 엔지니어링 분야 중 소프트웨어에 제한하며 완성된 소프트웨어 프로그램(exe 등)을 조각내서 그 내부를 분석하는 것을 뜻 한다. 이러한 분석을 통해 엔지니어는 해당 프로그램에 대한 허가되지 않은 불법 복제를 할수도 있고, 불법 정품 인증, 시리얼 코드 생성, 키젠 및 크랙 생성 등 악의적인 행위를 할 수 있는 반면, 불법 악성코드에 대한 분석, 지원하지 않는 언어에 대한 자가 패치, 학술/학문적 연구 등 선의적인 목적에서도 사용될 수 있다.

 

대표적인 소프트웨어 리버스 엔지니어링의 도구로는 IDA Pro나 OllyDbg 등이 존재하며, 이러한 도구들은 어셈블리 언어들을 쉽게 분석 하는 기능과 해당 코드를 변형하는 기능을 기본적으로 제공한다.

 

이번 포스팅에서는 자세한 리버스 엔지니어링의 개념이나 기법은 다루지 않고(아직 공부가...안되서..) 소프트웨어 리버스 엔지니어링에 사용되는 다양한 도구들을 정리해보도록 하겠다.

 

 

리버스 엔지니어링의 행위는 목적 프로그램에 대한 공격으로 보며 이에 대한 여러 공격 종류가 존재하기 때문에 Attack Type 에 대해 먼저 알아보도록 하자.

 

No Attack Types Description
1 Binary Analysis 프로그램의 바이너리 값을 분석하는 것을 뜻한다.
2 Debugger 디버거(Debugger)는 디버그를 돕는 도구이며, 주로 원하는 코드의 중단점(break point)을 지정하여 프로그램의 실행을 정지한 해당 단계에서의 메모리에 저장된 값을 살펴보며 분석을 하는 것을 뜻한다.
3 Disassembler 어셈블리어를 기계어로 번역하는 것이 '어셈블러(assembler)'라면, '디스어셈블러(disassembler)'란 거꾸로 기계어를 어셈블리어로 바꾸는 것을 뜻한다.
4 Decompiler 컴파일(compiler) 된 실행코드에서 소스코드를 역으로 추출하는 것을 뜻한다.
5 Hex Editor 이진(Binary) 파일을 읽을 수 있는 편집기를 뜻한다.
6 Monitoring 프로그램 상태를 감시하는 것을 뜻한다.
7 Patching 프로그램 메모리 영역에 데이터를 덫붙(Patching)이는 행위를 뜻한다.
8 Rootkit Detection 해커들이 시스템을 해킹할 때 시스템 이용자가 해킹당하고 있음을 인지하지 못하도록 하는 도구를 뜻한다.
9 Unpacker 리버스 엔지니어링을 막기 위해 소스코드를 분석 불가능하도록 암호화하거나 압축하는 것을 패킹(packing)이라 하는데 이를 푸는 과정을 뜻한다.

 

이어서 리버스 엔지니어링 툴(도구)의 종류에 대해 알아보면 다음 표와 같다.

 

No

Attack Tools

Attack Type Description Downloads
1

ShowString

Binary Analysis 프로그램 내부 스트링을 보여줌
2

Resource Hacker Plus

Binary Analysis 소프트웨어 리소스 편집
3

Windbg

Debugger 디버깅 툴 https://developer.microsoft.com/en-us/windows/hardware/download-windbg
4



Ollydbg



Debugger,
Disassembler
가장 범용으로 사용되는 디버그, 디스어셈블러 툴 http://www.ollydbg.de/version2.html
5

VBDE

Decompiler 비주얼베이직으로 만들어진 프로그램 분석 http://www.intel-assembler.it/portale/5/vbde-0.85-visual-basic-decompiler/vb-decompiler-tool.asp
6

sothink SWF Decompiler



Decompiler 플래시 디컴파일러 http://www.sothink.com/product/flashdecompiler/
7

Reflector



Decompiler 닷넷 프로그램 디컴파일러
8

DeDe



Decompiler 델파이 디컴파일러 https://tuts4you.com/download.php?view.1131
9

JAD

Decompiler 자바 디컴파일러 http://www.javadecompilers.com/jad
10



W32dsm9b

Disassembler 기계어를 어셈블리어로 번역
11

WinHex

Hex Editor 이진 파일을 읽는 툴 http://www.winhex.com/winhex/hex-editor.html
12

Procexp

Monitoring 시스템 모니터링 툴
13

T-Search

Patching 메모리 데이터를 덫붙이는 툴
14

GMER

Rootkit Detection 시스템 접근 감지 못하게 하는 툴  http://www.gmer.net/
15

Exeinfo PE

Unpacker 언패킹 툴 http://exeinfo.atwebpages.com/
11

VMUnpacker

Unpacker 언패킹 툴

 

반응형