Skip to content
KitploitKITPLOIT
도구익스플로잇블로그
Log in
제출
도구익스플로잇블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
ret-sync — ret-sync는 디버깅 세션(WinDbg/GDB/LLDB/OllyDbg2/x64dbg)을 IDA/Ghidra/Binary Ninja 디스어셈블러와 동기화하는 데 도움이 되는 플러그인 세트입니다. | Kitploit
도구/GitHubGitHub/bootleg/ret-sync
Dynamic Analysis (Sandboxing)Reverse EngineeringDebuggersUtilities & FrameworksBinary Analysis
GitHubbootleg/ret-sync

ret-sync

ret-sync는 디버깅 세션(WinDbg/GDB/LLDB/OllyDbg2/x64dbg)을 IDA/Ghidra/Binary Ninja 디스어셈블러와 동기화하는 데 도움이 되는 플러그인 세트입니다.

저장소 보기
2.4k307357개월 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

ret-sync

ret-sync는 Reverse-Engineering Tools SYNChronization을 의미합니다. 이는 디버깅 세션(WinDbg/GDB/LLDB/OllyDbg/OllyDbg2/x64dbg)을 디스어셈블러(IDA/Ghidra/Binary Ninja)와 동기화하는 데 도움이 되는 플러그인 모음입니다. 기본 아이디어는 간단합니다. 두 세계(정적 분석과 동적 분석)의 장점을 취하는 것입니다.

디버거와 동적 분석은 다음을 제공합니다:

  • 로컬 뷰, 실시간 동적 컨텍스트(레지스터, 메모리 등)
  • 내장 전용 기능/API (예: WinDbg의 !peb, !drvobj, !address 등)

디스어셈블러와 정적 분석은 다음을 제공합니다:

  • 모듈에 대한 매크로 뷰
  • 코드 분석, 시그니처, 타입 등
  • 화려한 그래프 뷰
  • 디컴파일
  • IDB/GPR 내 지식의 영구 저장

주요 기능:

  • 디버거 상태에 맞춰 그래프 및 디컴파일 뷰 동기화
  • ASLR을 처리할 필요 없음, 주소가 즉시 리베이스됨
  • 디버거에서 디스어셈블러로 데이터(주석, 명령 출력) 전달
  • 여러 IDB/GPR을 동시에 동기화하여 여러 모듈을 쉽게 추적 가능
  • 디스어셈블러와 디버거가 다른 호스트/VM에 위치 가능

ret-sync는 제가 Quarkslab에 근무할 때 개발하고 유지 관리한 qb-sync의 포크입니다.


목차

  • 저장소 내용
  • 일반 전제 조건
  • 바이너리 릴리스
  • ret-sync 구성
  • 설치
    • IDA 확장
    • Ghidra 확장
    • Binary Ninja 확장
    • WinDbg 확장
    • GNU gdb (GDB) 설치
    • LLDB 설치
    • OllyDbg 1.10 설치
    • OllyDbg2 설치
    • x64dbg 설치
  • 사용법
    • ret-sync 디버거 명령어
    • IDA 사용법
    • Ghidra 사용법
    • Binary Ninja 사용법
    • WinDbg 사용법
    • GNU gdb (GDB) 사용법
    • LLDB 사용법
    • OllyDbg 1.10 사용법
    • OllyDbg2 사용법
    • x64dbg 사용법
    • Python 라이브러리 사용법
  • 확장
  • TODO
  • 알려진 버그/제한 사항
  • 라이선스
  • 감사

저장소 내용

디버거 플러그인:

  • ext_windbg/sync: WinDbg 확장 소스 파일, 빌드 시: sync.dll
  • ext_gdb/sync.py: GDB 플러그인
  • ext_lldb/sync.py: LLDB 플러그인
  • ext_olly1: OllyDbg 1.10 플러그인
  • ext_olly2: OllyDbg v2 플러그인
  • ext_x64dbg: x64dbg 플러그인

디스어셈블러 플러그인:

  • ext_ida/SyncPlugin.py
  • ext_ghidra/dist/ghidra_*_retsync.zip: Ghidra 플러그인
  • ext_bn/retsync: Binary Ninja 플러그인

그리고 라이브러리 플러그인:

  • ext_lib/sync.py: 독립형 Python 라이브러리

일반 전제 조건

IDA 및 GDB 플러그인은 유효한 Python 설정이 필요합니다. Python 2 (>=2.7) 및 Python 3을 지원합니다.

바이너리 릴리스

WinDbg/OllyDbg/OllyDbg2/x64dbg 디버거용 사전 빌드된 바이너리는 Azure DevOps 파이프라인을 통해 제공됩니다: Build Status

마지막 빌드를 선택하고 Related 섹션 아래의 아티팩트를 확인하세요: 6 published.

Ghidra 플러그인의 사전 빌드 플러그인 아카이브는 ext_ghidra/dist에 제공됩니다.

ret-sync 구성

ret-sync는 일반적인 설정(디버거와 디스어셈블러가 동일한 호스트에 있고 모듈 이름이 일치하는 경우)에서 대부분의 사용자에게 기본적으로 작동해야 합니다.

그러나 일부 시나리오에서는 특정 구성이 필요할 수 있습니다. 이를 위해 확장 및 플러그인은 사용자의 홈 디렉터리에 있는 선택적 전역 구성 파일인 .sync를 확인합니다. 이 파일은 유효한 .INI 파일이어야 합니다.

또한 IDA 및 Ghidra 플러그인은 먼저 IDB 또는 프로젝트 디렉터리(<project>.rep)에서 구성 파일을 찾아 로컬(per-IDB/project) 설정을 허용합니다. 로컬 구성 파일이 있으면 전역 구성 파일은 무시됩니다.

이러한 구성 파일에 선언된 값은 기본값을 재정의합니다. 기본적으로 .sync 파일은 생성되지 않습니다.

아래에서는 구성 파일이 유용하거나 필요한 세 가지 일반적인 시나리오를 자세히 설명합니다:

  • 원격 디버깅
  • 모듈 이름 불일치
  • PID 누락

원격 디버깅: 디버거와 디스어셈블러가 다른 호스트에 있는 경우

[INTERFACE] 섹션은 네트워크 관련 설정을 사용자 정의하는 데 사용됩니다. 가상 머신(또는 단순히 다른 호스트) 내에서 실행 중인 디버거와 IDA를 동기화하려는 일반적인 원격 커널 디버깅 시나리오를 가정해 보겠습니다.

간단히 두 개의 .sync 파일을 만듭니다:

  • IDA가 설치된 머신의 IDB 디렉터리에 하나:
  • Ghidra의 경우 홈 디렉터리(예: "/home/user" 또는 "C:\Users\user")에 배치합니다.``` [INTERFACE] host=192.168.128.1 port=9234
이는 **ret-sync** ``IDA`` 플러그인이 인터페이스 ``192.168.128.1``에서 포트 ``9234``로 수신하도록 지시합니다. 말할 필요도 없이 이 인터페이스는 원격 호스트나 가상 머신에서 접근 가능해야 합니다.

* 디버거가 실행되는 머신의 사용자 홈 디렉토리에 있는 하나:```
[INTERFACE]
host=192.168.128.1
port=9234

이것은 ret-sync 디버거 플러그인이 이 인터페이스에서 수신 대기하도록 이전에 구성된 ret-sync IDA 플러그인에 연결하도록 지시합니다.

참고: 여기서는 실제 IP를 지정해야 하며 0.0.0.0을 사용하지 마십시오. 이 변수는 바인딩과 연결 모두에 여러 소스에서 사용되므로 0.0.0.0을 사용하면 이상한 오류가 발생할 수 있습니다.

IDB 및 디버거 모듈 이름이 다릅니다```

[ALIASES] ntoskrnl_vuln.exe=ntkrnlmp.exe

``[ALIASES]`` 섹션은 디스어셈블러(IDA/Ghidra)가 자체 디스패처/프로그램 매니저에 모듈을 등록할 때 사용하는 이름을 사용자 지정하는 데 사용됩니다.

기본적으로 디스어셈블러 플러그인은 입력 파일의 이름을 사용합니다. 하지만 사용자가 미리 파일 이름을 변경하여 실제 프로세스나 디버거에서 볼 수 있는 로드된 모듈의 이름과 더 이상 일치하지 않을 수 있습니다.

여기서는 단순히 디스패처에게 `ntkrnlmp.exe`(실제 이름)를 `ntoskrnl_vuln.exe`(IDB 이름) 대신 일치시키도록 알려줍니다.

## gdb with Qt Creator debugging frontend

Qt Creator 디버깅 프론트엔드는 gdb 명령어 출력이 기록되는 방식을 변경합니다. 이는 동기화를 방해하므로 임시 파일 대신 동기화에 원시 gdb 출력을 사용하는 옵션이 있습니다. `.sync` 설정 파일에서 사용```
[GENERAL]
use_tmp_logging_file=false

타겟에 Qt 디버깅 프론트엔드를 사용하려면.

임베디드 장치와 누락된 /proc/<pid>/maps

직렬 연결을 통한 임베디드 장치 디버깅 또는 QEMU에서의 raw 펌웨어 디버깅과 같은 일부 시나리오에서는 gdb가 PID를 인식하지 못하여 /proc/<pid>/maps에 접근할 수 없습니다.

이러한 경우 [INIT] 섹션을 사용하여 플러그인에 사용자 정의 컨텍스트를 전달합니다. 이를 통해 PID 및 메모리 매핑과 같은 일부 필드를 재정의할 수 있습니다.

.sync 콘텐츠 추출:``` [INIT] context = { "pid": 200, "mappings": [ [0x400000, 0x7A81158, 0x7681158, "asav941-200.qcow2|lina"] ] }

각 매핑 항목은 다음과 같습니다: ``mem_base``, ``mem_end``, ``mem_size``, ``mem_name``.

## 자동 주소 재배치 우회

임베디드 장치 디버깅이나 미니멀한 디버그 인터페이스에 연결하는 등의 시나리오에서는 디스어셈블러 플러그인에 구현된 자동 주소 재배치 기능을 우회하는 것이 더 편리할 수 있습니다.

`use_raw_addr` 옵션은 현재 Ghidra에서만 지원됩니다. .sync 설정 파일에서 다음과 같이 사용합니다:```
[GENERAL]
use_raw_addr=true

설치

IDA 확장 기능

IDA 사전 요구 사항

IDA 9.2+가 필요합니다. 이전 버전의 경우 사용 가능한 Tags에서 ida9.2 태그 이전의 프로젝트를 체크아웃하세요.

IDA 확장 기능 설치

IDA 설치의 경우, ext_ida에서 Syncplugin.py 및 retsync 폴더를 IDA 플러그인 디렉터리로 복사하세요. 예:

  • C:\Program Files\IDA Pro 7.4\plugins
  • %APPDATA%\Hex-Rays\IDA Pro\plugins
  • ~/.idapro/plugins

IDA 확장 기능 실행

  1. IDB 열기
  2. IDA에서 플러그인 실행 (Alt-Shift-S) 또는 Edit -> Plugins -> ``ret-sync````` [sync] default idb name: ld.exe [sync] sync enabled [sync] cmdline: "C:\Program Files\Python38\python.exe" -u "C:\Users\user\AppData\Roaming\Hex-Rays\IDA Pro\plugins\retsync\broker.py" --idb "target.exe" [sync] module base 0x100400000 [sync] hexrays #7.3.0.190614 found [sync] broker started [sync] plugin loaded [sync] << broker << dispatcher not found, trying to run it [sync] << broker << dispatcher now runs with pid: 6544 [sync] << broker << connected to dispatcher [sync] << broker << listening on port 63107
### IDA 플러그인 문제 해결

IDA 확장 프로그램의 문제를 해결하려면 `retsync/rsconfig.py` 파일에서 두 가지 옵션을 사용할 수 있습니다:```
LOG_LEVEL = logging.INFO
LOG_TO_FILE_ENABLE = False

LOG_LEVEL 값을 logging.DEBUG로 설정하면 플러그인이 더 자세한 로그를 출력합니다.

LOG_TO_FILE_ENABLE 값을 True로 설정하면 broker.py 및 dispatcher.py의 예외 정보를 전용 파일에 기록합니다. 로그 파일은 %TMP% 폴더에 retsync.%s.err 이름 패턴으로 생성됩니다.

Ghidra 확장

Ghidra 확장 빌드

ext_ghidra/dist 폴더에서 미리 빌드된 버전을 사용하거나, 빌드 지침을 따라 직접 빌드하세요. 각 확장 빌드는 플러그인 파일 이름에 지정된 Ghidra 버전만 지원합니다. 예를 들어 ghidra_9.1_PUBLIC_20191104_retsync.zip은 Ghidra 9.1 Public용입니다.

  1. Ghidra 설치
  2. Gradle 설치```bash apt install gradle
3. Ghidra 설치에 맞게 확장 프로그램 빌드 (`$GHIDRA_DIR`을 설치 디렉터리로 바꾸세요)```bash
cd ext_ghidra
gradle -PGHIDRA_INSTALL_DIR=$GHIDRA_DIR

Ghidra 확장 프로그램 설치

도구 다운로드