[Radare2 Framework] Introduction

Introduction

Radare2 프레임워크는 Hex-Rays사의 IDA와 비슷한 기능을 가지고 있는 디스어셈블러이자 디버거입니다. 정확히 말하자면 IDA보다 더 강력하고 다양한 기능을 가지고 있는 프레임워크 입니다. 또한 다양한 아키택쳐를 지원하고 있으며 리눅스, 윈도우, OSX와 같은 유명한 운영체제부터 BSD계열, 솔라시스, 하이쿠등 비교적 마이너한 운영체제도 지원을 하고 있습니다. 물론 기능이 다양하고 지원하는 아키텍쳐가 많은 까닭에 사용법이 다른 디스어셈블러나 디버거에 비해 복잡하고 옵션 또한 많은 편입니다. 공식 레퍼런스 북만해도 300여 페이지가 넘어가며 레퍼런스 북에서 넘어가거나 설명하지 않는 기능도 많습니다.

공식 레퍼런스 북에서 Radare2 프레임워크에는 9개의 유틸리티가 있다고 설명을 하고 있습니다. 간단하게 알려드리자면 다음과 같습니다. 자세한 사용법에 관해서는 후술하도록 하겠습니다.

radare2

radare2는 Radare2 프레임워크의 핵심이라고 할 수 있습니다. 기능으로는 크게 헥사 에디터, 디스어셈블러, 디버거로 구성이 되어있습니다. 당연히 각각의 기능은 필요에 따라 사용하지 않을 수도 있고 동시에 사용할 수 있습니다. 당연히 헥사 에디터로 파일, 디스크, 네트워크 연결, 커널 드라이버등 다양한 입출력 소스를 제공하며, 어셈블러기능과 헥사 에디터를 사용한 라이브 바이너리 패치도 가능합니다. 또한, Python, Javascript, Perl, Go등 다양한 프로그래밍 언어를 사용하여 스크립트를 작성하여 자동화도 가능합니다.

기능이 다양한 만큼 여러장에 나누어서 radare2에 대해서 다루어보도록 하겠습니다.

rabin2

rabin2는 ELF, PE, 자바 클래스, Mach-O등 다양한 바이너리 포맷을 지원하는 분석 유틸리티로 리눅스에서 사용하는 readelf와 같은 유틸리티입니다. 물론 readelf에 비해 더 다양한 정보를 얻을 수 있습니다.

rasm2

rasm2는 이름에서 알수있듯이 Radare2 Framework에서 사용하는 명령행기반의 어셈블러이자 디스어셈블러입니다. x86, x64, MIPS, ARM, PowerPC등 하드웨어에서 사용하는 어셈블리어부터 자바가상머신에서 사용되는 자바 바이트코드또한 지원하고 있습니다.

rahash2

rahash2는 단방향 암호화, 즉 해쉬 암호 알고리즘을 수행하는 유틸리티입니다. rahash2는 MD4, MD5, CRC16, CRC32, SHA1, SHA256등 다양한 알고리즘이 구현이 되어있으며 파일에 대한 무결성을 검증할때 유용하게 사용할 수 있습니다.

radiff2

radiff2는 diff와 비슷하지만 바이너리 파일을 비교하는데 특화되어있는 유틸리티입니다. 버전에 따른 바이너리 파일의 변경점을 확인하거나 원본과 크랙버전의 차이점을 비교하기에 좋습니다.

rafind2

rafind2는 파일에서 특정 바이너리 패턴을 찾아내는데 특화되어있는 유틸리티입니다.

ragg2

ragg2는 C언어와 유사한 간단한 고수준 언어를 x86, x64, ARM을 타겟으로 하는 작은 바이너리로 컴파일을 하는 컴파일러입니다. 쉘코드를 작성할때 유용하게 사용할 수 있습니다.

rarun2

rarun2는 스크립트를 통해 타겟바이너리의 인자값, 권한, 디렉토리, 파일 서술자등을 변경하면서 실행할 수 있는 유틸리티입니다. 리버싱문제를 풀거나 퍼징, 테스트를 할때 유용하게 사용할 수 있습니다.

rax2

rax2는 명령행 기반의 계산기입니다.

h4n9u1

h4n9u1
Back-End Developer and Newbie Linux System Administrator, Newbie Hacker(System, RE, Web)