책을 읽다보니 내가 몰랐던 도구들이 많이 소개되어 있어 정리해 둡니다.

 

>> 출처 <<

<실전 바이너리 분석> 데니스 앤드리스, 에이콘출판사

부록C  바이너리 분석 도구 추천

 

책에 나온 내용을 요약하고 일부는 추가확인해 정리함

-----

 

◆ 디스어셈블 도구 ◆

 

▶ IDA Pro (윈도우, 리눅스, 맥OS)

 

www.hex-rays.com  

 

Hex Rays – State-of-the-art binary code analysis solutions

Malware analysis Enabler of malware analysis and offer actionable database to overcome obstacles.

hex-rays.com

 

명실상부한 최고의 도구이자 실무에서 표준처럼 사용되는 재귀적 디스어셈블 도구다.

파이썬이나 IDC같은 스크립트 API를 제공하며 디컴파일 도구도 제공한다.

현재 구버전은 커뮤니티 버전으로 무료 배포되고 있다.

무료버전은 x86-64 아키텍처만 지원되며 디컴파일 기능은 포함되어 있지 않다.

 

▶ Hopper (리눅스, 맥OS)

 

www.hopperapp.com  

 

Hopper

Objective-C Even if Hopper can disassemble any kind of Intel executable, it does not forget its main platform. Hopper is specialized in retrieving Objective-C information in the files you analyze, like selectors, strings and messages sent.

www.hopperapp.com

IDA Pro를 모델로 단순화하여 개발 중인 도구로 상대적으로 저렴하지만 아직 개발이 진행형이다.

 

▶ ODA (모든 플랫폼)

 

http://onlinedisassembler.com 

 

disassembler.io

Machine Architecture ODA supports over 60 machine architectures, including x86, ARM, PowerPC, MIPS, and many more. Visualization Graph View visually shows the control flow of the currently selected function. Object File Formats All major file formats suppo

onlinedisassembler.com

온라인 디스어셈블 도구이며 무료로 제공되고 있다.

다양한 플랫폼에 대해 디스어셈블이 가능하고 제귀적 디스어셈블을 진행한다.

바이너리를 업로드하거나 바이트 코드를 콘솔에 입력하는 방식으로 사용가능하다.

 

▶ Binary Ninja (윈도우, 리눅스, 맥OS)

 

http://binary.ninja 

 

Binary Ninja > home

Binary Ninja : A Reverse Engineering Platform

binary.ninja

책에서는 기대되는 신흥강자로 표현되어 있다.

인터랙티브 방식의 재귀적 디스어셈블을 지원하고 있으며 다수의 아키텍처 환경을 제공한다.

C/C++ 또는 파이썬 언어로 스크립팅이 가능하다.

향후 디컴파일러 기능을 추가할 예정이다.

무료는 아니지만 체험판을 제공하고 있으며 개인이 사용할때는 비교적 저렴한 편이다.

 

▶ Relyze (윈도우)

 

www.relyze.com  

 

Relyze Software Limited - Advanced Software Analysis

About Us Based in Ireland, Relyze Software Limited offers professional software analysis solutions and services, giving you greater insight towards how your software works in order to identify defects, compliance, security, interoperability and performance

www.relyze.com

인터랙티브한 재귀적 디스어셉블 도구다.

바이너리 차분 분석 기능을 제공하는 것이 강점이며 Ruby 언어로 스크립팅을 지원한다.

상용이지만 IDA pro에 비해 저렴하다.

 

▶ Medusa (윈도우, 리눅스)

 

https://github.com/wisk/medusa

 

wisk/medusa

An open source interactive disassembler. Contribute to wisk/medusa development by creating an account on GitHub.

github.com

인터렉티브 환경을 제공하는 재귀적 디스어셈블 도구이다.

파이썬 스크립트 기능도 제공하고 있으며 오픈소스에 무료라는 것이 가장 큰 강점이다.

단, 2014년이 마지막 Release 이다.

 

 

▶ radare (윈동, 리눅스, 맥OS)

 

www.radare.org  

 

https://www.radare.org/

 

www.radare.org

커맨드라인 기반의 역공학 프레임워크로 여러 개의 도구들의 모음집이다.

모든 도구들은 무료이며 오픈소스이다.

다양한 도구들이 개발되어 있으며 기본적으로는 커맨드라인 기반이 맞지만

아래 사이트에서 iaito를 분기하여 인터랙티브한 개발 환경을 따로 제공하고 있다.

 

https://cutter.re/

 

Cutter

Free and Open Source RE Platform powered by Rizin

cutter.re

 

▶ objdump (리눅스)

 

https://www.gnu.org/software/binutils/

 

Binutils - GNU Project - Free Software Foundation

GNU Binutils The GNU Binutils are a collection of binary tools. The main ones are: ld - the GNU linker. as - the GNU assembler. But they also include: addr2line - Converts addresses into filenames and line numbers. ar - A utility for creating, modifying an

www.gnu.org

 

이 도구는 가장 널리 알려진 선형 디스어셈블 도구이며 무료에 오픈소스이다.

GNU의 binutils 내부에 GNU 버전이 포함되어 있으며 모든 종류의 리눅스 배포판에 기본으로 탑재되어 있다.

 

 

====================================

 

◆ 디버거 ◆

 

▶ gdb (리눅스)

 

GNU 디버거로 리눅스 표준 디버거라서 추가 설명은 생략

 

▶OllyDbg (윈도우)

 

https://www.ollydbg.de/

 

OllyDbg v1.10

 

www.ollydbg.de

 

윈도우 환경에서 가장 인기있는 디버거로 플러그인을 통해 다양한 확장이 가능하다는 장점이 있다.

무료이지만 오픈소스는 아니다.

현재시점에서 2014년 2월이 마지막 업데이트다.

 

▶WinDbg (윈도우)

 

마이크로소프트가 제공하는 윈도우용 디버거로 유저모드와 커널모드 코드에 대해 디버깅을 할 수 있으며 크래시덤프에 대한 분석이 가능하다.

 

▶Bochs (윈도우, 리눅스, 맥OS)

 

http://bochs.sourceforge.net 

 

bochs: The Open Source IA-32 Emulation Project (Home Page)

Welcome to the Bochs IA-32 Emulator Project     Bochs is a highly portable open source IA-32 (x86) PC emulator written in C++, that runs on most popular platforms. It includes emulation of the Intel x86 CPU, common I/O devices, and a custom BIOS. Bochs

bochs.sourceforge.io

 

대부분의 플랫폼에서 실행되는 휴대용 PC 에뮬레이터이며 에뮬레이트된 코드 디버깅에도 사용할 수 있다.

오픈소스이며 GNU LGPL에 따라 배포된다.

 

 

====================================

 

◆ 디스어셈블 프레임워크 ◆

 

▶ Capstone (윈도우, 리눅스, 맥OS)

 

https://www.capstone-engine.org/

 

The Ultimate Disassembly Framework

The Ultimate Disassembler

www.capstone-engine.org

 

캡스톤은 자체로 사용할 수 있는 도구는 아니며 디스어셈블 도구를 구현하고자 할 때 엔진 기능으로써 적용할 수 있다.

무료이고 오픈소스이다.

성능이 좋고 다양한 아키텍처 환경에 대한 API를 제공한다.

(현 시점 사이트에 표시된 지원 아키텍처 : Arm, Arm64 (Armv8), BPF, Ethereum Virtual Machine, M68K, M680X, Mips, MOS65XX, PowerPC, RISCV, Sparc, SystemZ, TMS320C64X, Web Assembly, XCore & X86 (include X86_64))

C/C++, Ruby, Python, Lua 등 여러 프로그래밍 언어로 연동할 수 있다.

최근까지 지속적인 기능 개선이 있었으며 이 엔진을 확장해 사업을 하는 기업들의 후원을 받고 있어 지속적인 성장 가능성이 높다.

 

 

▶ distorm3 (윈도우, 리눅스, 맥OS)

 

https://github.com/gdabah/distorm

 

gdabah/distorm

Powerful Disassembler Library For x86/AMD64. Contribute to gdabah/distorm development by creating an account on GitHub.

github.com

 

x86 아키텍처 코드에 대한 오픈 소스 디스어셈블 API를 제공하는 프레임워크다.

빠른 처리 속도를 자랑하며 C, Ruby, Python 등의 언어를 지원한다.

최근까지 지속적인 업데이트와 릴리즈가 제공되고 있다.

 

▶ udis86 (리눅스, 맥OS)

 

https://github.com/vmt/udis86

 

vmt/udis86

Disassembler Library for x86 and x86-64. Contribute to vmt/udis86 development by creating an account on GitHub.

github.com

 

x86코드에 대한 디스어셈블 라이브러리로 쉽고 간결하며 최소한의 기능만 제공한다.

오픈 소스이며 잘 정리된 문서를 제공한다.

C언어를 사용해 디스어셈블 도구를 제작하고 싶을 때 사용할 수 있다.

현 시점에서 2013년이 마지막 릴리즈배포일이다.

 

====================================

 

◆ 바이너리 분석 프레임워크 ◆

 

▶ angr (윈도우, 리눅스, 맥OS)

 

https://angr.io/

 

angr

angr 8 is out! This release migrates angr to Python 3 and drops Python 2 support, in addition to bringing a bunch of performance improvements and bugfixes. For more details, see here. What is angr? angr is a python framework for analyzing binaries. It comb

angr.io

 

angr은 파이썬 기반의 역공학 플랫폼이다.

직접 바이너리 분석 도구를 개발하고자 할 때 API를 통해 적용할 수 있다.

백워드 슬라이싱이나 기호 실행과 같은 심화적인 기능을 제공한다.

아직 연구가 진행 중인 플랫폼이지만 개발이 활발하게 진척 중이며, 문서화 역시 잘되어 있는 편이다.

(2021년 6월 릴리즈 버전이 존재한다.)

무료이며 오픈소스이다.

 

https://github.com/angr/angr

 

angr/angr

A powerful and user-friendly binary analysis platform! - angr/angr

github.com

 

▶ Pin (윈도우, 리눅스, 맥OS)

 

www.intel.com/software/pintool/  

 

Pin - A Dynamic Binary Instrumentation Tool

Home | News | Downloads | FAQ | Newsgroup | Papers | XED | SDE | PinPoints | PinPlay | DrDebug Overview Pin is a dynamic bina

software.intel.com

같은 링크지만 리다이렉트 되길래 최신 링크도 같이 걸어둔다.

 

https://software.intel.com/content/www/us/en/develop/articles/pin-a-dynamic-binary-instrumentation-tool.html

 

Pin - A Dynamic Binary Instrumentation Tool

Home | News | Downloads | FAQ | Newsgroup | Papers | XED | SDE | PinPoints | PinPlay | DrDebug Overview Pin is a dynamic bina

software.intel.com

 

Pin은 동적 바이너리 계측 엔진으로 실행 중인 바이너리에 대해 코드를 추가하거나 수정하기 위한 도구를 만들 때 활용할 수 있다.

무료이지만 오픈소스는 아니다.

인텔(Intel)에서 개발했으며, x86을 포함한 인텔 계열의 CPU에 대해서만 동작한다.

 

▶ Dyninst (윈도우, 리눅스)

 

https://www.dyninst.org/

 

Paradyn/Dyninst - Welcome | Putting the Performance in High Performance Computing

Paradyn/Dyninst - Welcome Dyninst The Paradyn project develops technology that aids tool and application developers in their pursuit of high-performance, scalable, parallel and distributed software. The primary project, Paradyn, leverages a technique calle

www.dyninst.org

 

Dyninst는 동적 바이너리 계측을 위한 API를 제공한다.

Pin보다는 디스어셈블 기능에만 초점을 맞추고 있다.

무료이고 오픈소스이다.

Pin에 비해 연구 목적 성격이 강하다.

 

▶ Unicorn (윈도우, 리눅스, 맥OS)

 

https://www.unicorn-engine.org/

 

Unicorn – The Ultimate CPU emulator

The Ultimate CPU emulator

www.unicorn-engine.org

 

다양한 플랫폼 및 아키텍처를 지원하기 위한 경량화된 CPU 에뮬레이터다.

Capstone을 개발한 사람들이 함께 관리하고 있으며, C, Python 등의 프로그래밍 언어로 연동할 수 있다.

유니콘은 그 자체로 사용하는 디스어셈블 도구라기보다는 에뮬레이팅 기반의 분석 도구를 구현할 때 사용하기 위한 프레임워크다.

 

 

▶ libdft (리눅스)

 

https://www.cs.columbia.edu/~vpk/research/libdft/

 

libdft: Practical Dynamic Data Flow Tracking for Commodity Systems

Abstract Dynamic data flow tracking (DFT) deals with tagging and tracking data of interest as they propagate during program execution. DFT has been repeatedly implemented by a variety of tools for numerous purposes, including protection from zero-day and c

www.cs.columbia.edu

무료 오염 분석 라이브러리이며 오픈소스다.

빠른 동작과 쉬운 사용성을 위해 쉐도우 메모리의 바이트 단위를 1개 혹은 8개의 두 가지 모드를 제공한다.

 

▶ Triton (윈도우, 리눅스, 맥OS)

 

https://triton.quarkslab.com/

 

Triton - Dynamic Binary Analysis Framework

Triton is a dynamic binary analysis (DBA) framework. It provides internal components like a Dynamic Symbolic Execution (DSE) engine, a dynamic taint engine, AST representations of the x86, x86-64 and AArch64 Instructions Set Architecture (ISA), SMT simplif

triton.quarkslab.com

 

Triton은 동적 바이너리 분석 프레임워크로 기호 실행 및 오염 분석 등을 추가적인 기능으로 제공한다.

무료이며 오픈소스이다.

2020년 4월 0.8.1 버전까지 릴리즈되어 있다.

 

https://github.com/JonathanSalwan/Triton/

 

JonathanSalwan/Triton

Triton is a Dynamic Binary Analysis (DBA) framework. It provides internal components like a Dynamic Symbolic Execution (DSE) engine, a dynamic taint engine, AST representations of the x86, x86-64, ...

github.com

 

▶ B2R2 (윈도우, 리눅스, 맥OS)

 

https://github.com/B2R2-org/B2R2

 

B2R2-org/B2R2

B2R2 is a collection of useful algorithms, functions, and tools for binary analysis. - B2R2-org/B2R2

github.com

 

B2R2는 바이너리 분석에 사용되는 다양한 알고리즘, 함수, 도구들의 결합체이며, F#언어로 개발되어있다.

.Net Core기반으로 특정 운영체제에 구애받지 않고 실행할 수 있다.

속도가 빠르고 CLI가 지원되는 모든 언어에 대해 API연동이 가능하다.

ROP 체인 컴파일, 제어 흐름 그래프 작성 등의 기능을 제공한다.

2020년 0.40 버전까지 릴리즈되어있다.

 

'Reversing' 카테고리의 다른 글

소스코드 라인수 측정 프로그램  (0) 2023.01.05
IDA pro Python 관련  (0) 2021.03.23
Posted by 휘프노스
,