리눅스 명령어

file: 파일의 종류를 조사하는 명령어

readelf: ELF파일의 정보를 표시하는 명령어

strings: 파일 안에 들어있는 문자열을 추출하는 명령어

grep: 파일 안의 내용에서 찾고 싶은 문자열을 찾는 명령어

 

트레이서

strace: 리눅스 프로그램이 호출하는 시스템 콜을 추적한다.

ltrace: 리눅스 프로그램이 호출하는 공유 라이브러리 함수를 추적한다.

 

디버거

GDB: 리눅스의 CLI기반의 디버거

OllyDbg: 윈도우 실행파일인 PE형식의 바이너리를 분석할 수 있는 디버거

Immunity Debugger: OllyDbg와 유사한 부분이 매우 많지만 파이썬 API를 제공하며, 힙 분석에 강한 면모를 보인다.

x64dbg: 64비트 PE파일 분석도 지원하는 디버거

WinDbg: 윈도우용 디버거이다. GUI형태지만 많은 조작을 명령어로 처리한다. 커널단 디버거로 사용가능하다.

 

프로세스 메모리 에디터

CheatEngine: 윈도우에서 사용할 수 있는 프로세스 메모리 에디터 중 하나

 

역어셈블러

IDA: 고성능 역 어셈블러

objdump: 리눅스용 역 어셈블러

 

디컴파일러

Hex-Rays: IDA와 함께 사용하는 디컴파일러로 C언어형태의 의사코드로 변형해준다.

Retargetable: Retargetable 디컴파일러(http://retdec.com/)은 웹기반으로 사용할 수 있는 디컴파일러다. 실행파일을 업로드 해야한다는 단점이 있다.

ILSpy: .NET프레임워크의 CIL을 대상으로 한 오픈소스 디컴파일러다. CILC#코드로 변환할 수 있다.

dex2jar / JD: 안드로이드가 실행되는 가상머신인 달빅 VM의 바이너리 코드를 자바 바이너리 코드인 .class 파일로 변환하는 프로그램이다. 그리고 JD는 자바 바이트코드를 자바 소스코드로 변환하는 디컴파일러다.

 

Radare2

radare2는 바이너리 분석을 할 때 도움이 되는 프로그램 집합으로 다양한 도구가 포함되어 있다.

radiff2: 바이너리 차분 추출도구

rabin2: readelf-like 바이너리의 정보추출 도구

rafind2: 바이트 패턴 검색 도구

rahas2: 해시 계산도구

rarun2: 프로그램의 실행 환경을 지정해서 실행할 수 있는 도구

rasm2: 어셈블러 / 디스어셈블러

rax2: 변수 형태 변환 도구

radare2: 위의 도구를 종합한 것

라이브러리로 구현되어 있어서 도구 개발이 간단하다. GUI는 아직 지원하지 않으나 ASCII기반의 인터페이스와 웹 인터페이스가 잘 구현되어 있다. 그러나 사용법이 쉽지 않다.

 

바이너리 에디터

iBored: GUI형태의 바이너리 편집 프로그램이다. 바이너리 파일 뿐 아니라 디스크 블록 편집까지도 가능하다.

Bz: 윈도우용 바이너리 에디터로 시스템 자원을 많이 차지하지 않는다.

ghex: 리눅스에서 작동하는 GUI기반 바이너리 에디터다.

010 editor: 고성능 텍스트, 바이너리, 디스크이미지, 프로세스 에디터다. 바이너리 파일의 형식을 인식하고 분석해 헤더 필드의 값을 표시하거나 스크립트를 사용해 작업을 자동화하는 등 CTF를 진행하는데 큰 도움을 줄 수 있다.

Vim + xxd: 리눅스환경에서 바이너리를 간단하게 편집할 일이 있을때 추가 프로그램을 설치하지 않고 Vimxxd를 조합해 간단한 바이너리 편집을 할 수 있다. Vim–b옵션을 사용해 바이너리 파일을 불러오고 명령어 모드에서 :%!xxd를 입력해 xxd 명령어를 호출한다. 파일을 편집하고 :%!xxd –r을 입력해 편집한 내용을 반영하면 된다.

+ Recent posts