반응형
트레이서
어떤 프로그램을 실행하면서 그 프로세스를 감시해 특정 동작을 추적하는 프로그램.
리눅스 프로그램이 호출하는 시스템 콜을 추적하는건 strace고,
리눅스 프로그램이 호출하는 공유 라이브러리 함수를 추적하는건 ltrace이다.
디버거
디버거란 디버그를 지원하기 위해 만들어진 프로그램이다.
CTF에서는 바이너리를 분석하는데 디버그 기능을 사용한다.
GDB
GNU 프로젝트를 따르는 CLI 기반 디버거
다수의 리눅스 배포판과 BSD 기반 운영체제에서 사용되고 있다.
ELF 형식의 실행파일을 많이 처리하는 CTF에서 가장 많이 사용된다.
OllyDbg
윈도우 실행 파일인 PE 형식의 바이너리를 분석할 수 있는 디버거
윈도우 디버거 중에서는 역사가 길다.
다양한 플러그인 보유.
인터페이스가 비슷한 디버거가 다수 있기에 얘만 알면 다른것도 다루기 쉽다.(IDA제외)
Immunity Debugger
OllyDbg에서 파생된 프로젝트.
Immunity라는 회사에서 기능 개발 및 유지보수를 한다.
Olly와는 다르게 파이썬 API를 제공.
힙(Heap) 분석에 강함.
x64dbg
64비트 PE 파일 분석도 지원.
WinDbg
마이크로소프트에서 제공하는 윈도우용 디버거
GUI형태지만 gdb에 가까운 느낌
32/64비트 가능
커널단(Kernel Land) 디버거 사용가능
CTF에서 이정도 수준은 잘 안나옴
프로세스 메모리 에디터
실행 중인 프로세스의 메모리를 추출해 값을 찾거나 변경할 수 있는 소프트웨어
CheatEngine
윈도우에서 사용할 수 있는 프로세스 메모리 에디터 중 하나.
무료 소프트웨어
다양한 메모리 검색 기능 제공
듀토리얼 내장
CTF에서 충분히 사용 가능
역어셈블러
바이너리에 포함된 기계어를 사람도 읽을 수 있는 형식인 어셈블리로 변환하는 소프트웨어
어셈블리어 -> 기계어 <== 이 행위를 어셈블이라 한다. 그 반대는 역어셈블
IDA
Hex-Rays 회사에서 개발한 고성능 역어셈블러
GUI 기반
직관적인 인터페이스
사기of사기 디컴파일 가능
IDA Pro == 자본의 힘을 보여줌
objdump
CUI 기반 역어셈블러
단순 인터페이스
실행 파일 형식 및 아키텍처 풍부
리눅스 역어셈블러 == objdump
디컴파일러
바이너리인 기계어를 소스코드로 변환하는 소프트웨어
원본 소스코드와 다른 결과를 보여준다거나 일기 힘든 형태로 출력하기도 함
참고만 하자
Hex-Rays 디컴파일러
킹갓 IDA만든 회사가 개발
실행파일을 분석 ==> C 언어 유사 코드 생성
현재 x86, x64, ARM32 지원
뛰어난 성능 == 유료
IDA PRO 번들이기에 IDA PRO 필수 구입
Retargetable 디컴파일러
웹 기반으로 사용할 수 있는 디컴파일러
브라우저에 파일 업로드 ==> 디컴파일된 소스코드
Hex-Rays와는 다르게 MIPS, PIC, PowerPC도 지원
C말고도 Python 형태도 가능
REST API 제공 (직접 프로그래밍해서 기능 추가 가능)
뛰어난 성능 == 유료? 이건 무료!
업로드 형식이기에 외부에 유출되면 안되는 파일은 사용 ㄴㄴ
ILSpy
.NET 프레임워크의 CIL(공통 중간 언어)을 대상으로 한 오픈소스 디컴파일러
CLI ==> C# 변환 가능
무료!
CTF에 출제되는 .NET 프레임워크 문제에 사용하기 충분한 성능
CTF에 출제되는 .NET 프레임워크 문제에 사용하기 충분한 성능
GUI기반
dex2jar / 자바 디컴파일러(JD)
안드로이드가 실행되는 가상머신인 달빅 VM의 바이너리 코드를 자바 바이너리 코드로 변환
JD는 자바 바이트코드를 자바 소스코드로 변환 가능
dex2jar와 JD를 조합하면 APK 파일로부터 자바 소스코드를 추출해 디컴파일이 가능
반응형
'CTF 연습' 카테고리의 다른 글
RPISEC crackme0x02 (0) | 2021.02.09 |
---|---|
RPISEC crackme0x01 (0) | 2021.02.08 |
RPISEC crackme0x00b (0) | 2021.02.08 |
RPISEC crackme0x00a (0) | 2021.02.08 |
CTF에 자주 사용되는 리눅스 명령어 모음 (0) | 2019.03.14 |