Voltron은 Python으로 작성된 확장 가능한 디버거 UI 툴킷입니다. 디버거 호스트에서 데이터를 검색하고 표시할 수 있는 유틸리티 보기의 첨부를 활성화하여 다양한 디버거(LLDB, GDB, VDB 및 WinDbg)의 사용자 경험을 향상시키는 것을 목표로 합니다. 다른 TTY에서 이러한 보기를 실행하면 필요에 맞게 사용자 정의된 디버거 사용자 인터페이스를 구축할 수 있습니다.
볼트론은 모든 사람에게 모든 것이 되는 것을 목표로 하지 않습니다. 디버거의 CLI를 완전히 대체하는 것은 아닙니다. 오히려 기존 설정을 보완하고 원하는 만큼 CLI 디버거를 확장할 수 있도록 하는 것이 목표입니다. 디버거와 함께 창에서 레지스터 내용을 보고 싶다면 그렇게 할 수 있습니다. 최선을 다해 OllyDbg와 더 유사한 것을 갖고 싶다면 그렇게 할 수도 있습니다.
기본 제공 보기는 다음을 위해 제공됩니다.
작성자의 설정은 다음과 같습니다.
모든 디버거 명령은 뷰로 분할될 수 있으며 지정된 Pygments 어휘 분석기로 강조 표시될 수 있습니다.
더 많은 스크린샷은 여기에 있습니다.
Voltron은 LLDB, GDB, VDB 및 WinDbg/CDB(PyKD를 통해)를 지원하며 macOS, Linux 및 Windows에서 실행됩니다.
WinDbg 지원은 아직 상당히 새롭습니다. 문제가 있으면 문제를 열어주세요.
다음 아키텍처가 지원됩니다.
lldb | gdb | vdb | 바람둥이 | |
---|---|---|---|---|
x86 | ✓ | ✓ | ✓ | ✓ |
x86_64 | ✓ | ✓ | ✓ | ✓ |
팔 | ✓ | ✓ | ✓ | ✗ |
arm64 | ✓ | ✗ | ✗ | ✗ |
파워PC | ✗ | ✓ | ✗ | ✗ |
참고: macOS 및 Debian 파생 제품만 설치 스크립트에서 완전히 지원됩니다. 다른 Linux 배포판에서는 실패하지 않기를 바라지만 패키지 종속성을 설치하려고 시도하지는 않습니다. 다른 배포판을 사용하는 경우 install.sh
를 살펴보고 실행하기 전에 설치해야 할 종속성을 알아보세요.
소스를 다운로드하고 설치 스크립트를 실행하십시오.
$ git clone https://github.com/snare/voltron
$ cd voltron
$ ./install.sh
기본적으로 설치 스크립트는 사용자의 site-packages
디렉터리에 설치됩니다. site-packages
시스템에 설치하려면 -s
플래그를 사용하십시오.
$ ./install.sh -s
다음과 같이 가상 환경(LLDB에만 해당)에 설치할 수도 있습니다.
$ ./install.sh -v /path/to/venv -b lldb
셸이 없는 Windows를 사용 중이거나 설치에 문제가 있거나 수동으로 설치하려는 경우 수동 설치 설명서를 참조하세요.
디버거에 init 스크립트(LLDB의 경우 .lldbinit
또는 GDB의 경우 .gdbinit
)가 있는 경우 entry.py
진입점 스크립트를 소싱하여 시작할 때 Voltron을 로드하도록 구성하세요. 전체 경로는 voltron
패키지 내에 있습니다. 예를 들어 macOS에서는 /Library/Python/2.7/site-packages/voltron/entry.py 일 수 있습니다. install.sh
스크립트는 경로에서 GDB 또는 LLDB를 감지하면 이를 .gdbinit
또는 .lldbinit
파일에 자동으로 추가합니다.
LLDB:
command script import /path/to/voltron/entry.py
GDB:
source /path/to/voltron/entry.py
필요한 경우 디버거를 시작하고 Voltron을 수동으로 초기화하세요.
최신 버전의 LLDB에서는 Voltron을 수동으로 초기화할 필요가 없습니다.
$ lldb target_binary
이전 버전의 LLDB에서는 하위 항목을 로드한 후 voltron init
호출해야 합니다.
$ lldb target_binary
(lldb) voltron init
GDB:
$ gdb target_binary
VDB:
$ ./vdbbin target_binary
> script /path/to/voltron/entry.py
WinDbg/CDB는 Linux 사용자 영역에서 Bash를 통해서만 실행할 수 있습니다. 저자는 Git Bash와 ConEmu를 사용하여 테스트합니다. 디버거를 시작할 때 PyKD와 Voltron을 하나의 명령으로 로드할 수 있습니다.
$ cdb -c '.load C:pathtopykd.pyd ; !py --global C:pathtovoltronentry.py' target_binary
다른 터미널(저는 iTerm 창을 사용합니다)에서 UI 보기 중 하나를 시작합니다. LLDB, WinDbg 및 GDB에서는 뷰가 즉시 업데이트됩니다. VDB에서는 하위 항목이 중지될 때까지(중단점, 단계 후 등) 업데이트되지 않습니다.
$ voltron view register
$ voltron view stack
$ voltron view disasm
$ voltron view backtrace
중단점을 설정하고 하위 항목을 실행합니다.
(*db) b main
(*db) run
디버거가 중단점에 도달하면 레지스터, 스택, 메모리 등의 현재 상태를 반영하도록 뷰가 업데이트됩니다. 디버거의 "후크 중지" 메커니즘을 사용하여 디버거 CLI에서 각 명령이 실행된 후 뷰가 업데이트됩니다. 따라서 단계를 밟거나 계속해서 중단점에 도달할 때마다 뷰가 업데이트됩니다.
github의 Wiki를 참조하세요.
Q. Voltron을 로딩할 때 ImportError
발생하는 이유는 무엇입니까?
A. 여러 버전의 Python이 설치되어 있고 잘못된 버전을 사용하여 Voltron을 설치했을 수 있습니다. 자세한 설치 지침을 참조하세요.
Q. GEF? PEDA? PwnDbg? fG의 gdbinit?
A. GDB를 위한 모든 매우 훌륭한 확장입니다. 이러한 도구는 주로 활용 작업을 위한 추가 명령 세트를 제공하지만 각각은 Voltron과 같이 레지스터, 스택, 코드 등을 볼 수 있는 "컨텍스트" 디스플레이도 제공합니다. 이러한 도구는 디버거가 중지될 때마다 디버거 콘솔에 컨텍스트 표시를 인쇄합니다. Voltron은 디버거에 RPC 서버 임플란트를 내장하고 다른 터미널(또는 웹 브라우저 또는 이제 Binary Ninja와 동기화)에서 보기를 첨부할 수 있도록 하여 사용자가 더 깔끔한 다중 창 인터페이스를 구축할 수 있도록 하는 다른 접근 방식을 취합니다. 그들의 디버거. Voltron은 이러한 모든 도구와 함께 훌륭하게 작동합니다. 선택한 GDB 확장에서 컨텍스트 표시를 비활성화하고 일부 Voltron 보기를 연결하는 동시에 이러한 도구에서 추가된 유용한 명령의 모든 이점을 계속 얻을 수 있습니다.
자세한 내용을 보거나 문제를 제출하려면 github의 문제 추적기를 참조하세요.
Voltron을 로드하는 중에 ImportError
발생하는 경우 해당 플랫폼에 대한 설치 지침을 따랐는지 확인하세요.
이전 버전의 LLDB에서는 Voltron의 후크를 설치하기 전에 대상을 로드해야 하므로 디버그 대상을 로드한 후 voltron init
명령을 수동으로 실행해야 합니다. Voltron은 이벤트 핸들러를 자동으로 등록하려고 시도하며 voltron init
필요한지 사용자에게 알립니다.
WinDbg/CDB 지원에 대한 자세한 내용은 여기를 참조하세요.
저자는 주로 macOS에서 최신 버전의 LLDB와 함께 Voltron을 사용합니다. 출시 전에 가능한 한 많은 플랫폼과 아키텍처에서 모든 것을 테스트하려고 노력할 예정이지만 LLDB/macOS/x64가 가장 자주 사용되는 조합이 될 것입니다. Voltron이 애완동물을 불태우지 않고 YMMV가 되기를 바랍니다.
라이센스 파일을 참조하십시오.
이거 써보고 싫지 않다면 가끔 회의 때 맥주 한 잔 사주세요. 이 라이센스는 다른 기여자에게도 적용됩니다. Richo는 확실히 그의 기여에 대해 맥주 몇 잔을 마실 자격이 있습니다.
이 작업을 수행할 수 있는 시간을 주신 전 고용주인 Assurance와 Azimuth Security에게 감사드립니다.
Voltron에 대한 모든 기여에 대해 Richo에게 감사를 표합니다.
fG!의 gdbinit는 이 프로젝트의 원래 영감이었습니다.
VDB 지원을 구현해 준 Willi에게 감사드립니다.
Voltron은 이제 디버거 호스트의 내부 분해 메커니즘뿐만 아니라 분해에도 Capstone을 사용합니다. Capstone은 차세대 리버스 엔지니어링 및 디버깅 도구가 구축되는 강력한 오픈 소스 다중 아키텍처 디스어셈블러입니다. 확인해 보세요.
지속적인 기여를 해주신 grazfather에게 감사드립니다.