
binsync v5.15.4
git 기반으로 구축된, 디컴파일러 간 협업을 위한 리버싱 플러그인입니다.
BinSync
BinSync은 Git 버전 관리 시스템을 기반으로 구축된 디컴파일러 협업 도구로, 디컴파일러에 관계없이 세밀한 리버스 엔지니어링 협업을 가능하게 합니다. BinSync는 mahaloz, angr 팀, 그리고 SEFCOM 연구소에 의해 개발되었습니다. 또한 Shellphish 해킹 팀의 사용 덕분이기도 합니다.
모든 우수한 디컴파일러는 REA(Reverse Engineering Artifacts)라고 불리는 공통 객체를 공유합니다. 이러한 REA는 BinSync 동기화 기능의 핵심입니다. 지원되는 REA는 다음과 같습니다:
- 함수 헤더 (심볼, 인자, 타입)
- 스택 변수 (심볼, 타입)
- 구조체
- 열거형
- 주석
참고: 모든 타입은 구조체와 같은 사용자 정의 타입을 지원합니다.
더 많은 온라인 도움을 받으려면 아래 디스코드에 참여하세요:
빠른 시작
모든 설치의 경우, Python을 사용한 두 부분으로 구성된 설치 프로그램을 사용하는 것이 가장 좋습니다:
pip3 install binsync && binsync --install
BinSync는 Binary Ninja 플러그인 관리자에서도 사용할 수 있습니다.
Ghidra와 함께 BS를 사용할 계획이라면, PyGhidra 모드로 실행해야 합니다.
ChatGPT User와 같은 추가 BS 기능을 사용할 계획이라면, pip3 install binsync[extras]와 같이 패키지를 설치하세요. 이는 지원을 위한 추가 패키지를 설치합니다.
전체 설치 정보는 빠른 시작 문서를 읽어보세요.
개발자의 경우, 패키지를 편집 가능(-e)하게 설치하고 pip>=23.0.0인지 확인하세요.
지원 플랫폼
- IDA Pro: >= 8.4 (구버전을 사용하는 경우 BinSync v4.10.1을 사용하세요)
- Binary Ninja: >= 2.4
- angr-management: >= 9.0
- Ghidra: >= 12.0 (PyGhidra 모드)
모든 버전은 Python >= 3.10과 시스템에 설치된 Git이 필요합니다. Ghidra 지원은 아직 초기 단계이므로, 아티팩트 이름 동기화와 주석과 같은 최소한의 기능만 기대하세요.
디컴파일러 지원 진행 상황
앞선 섹션에서 디컴파일러를 지원하지만, 모든 디컴파일러가 동일한 수준의 동기화를 지원하는 것은 아닙니다. 아티팩트 지원, 풀(pull), 푸시(push), 자동 푸시(auto push)의 차이를 이해하려면 디컴파일러 사용 소개를 읽어보세요.
IDA Pro
| Operations | Function Headers | Stack Vars | Global Vars | Structs | Enums | Comments |
|---|---|---|---|---|---|---|
| Symbols | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Types | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Pull | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Push | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Auto Push | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Binary Ninja
| Operations | Function Headers | Stack Vars | Global Vars | Structs | Enums | Comments |
|---|---|---|---|---|---|---|
| Symbols | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Types | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Pull | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Push | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Auto Push | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |