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

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

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

피드문의개인정보© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
ida_kcpp — ida_kernelcache 위에서 C++ 지원을 강화하기 위한 IDAPython 모듈 | Kitploit
도구/GitHubGitHub/cellebrite-labs/ida_kcpp
Static AnalysisiOS SecurityReverse EngineeringMobile SecurityBinary Analysis
GitHubcellebrite-labs/ida_kcpp

ida_kcpp

ida_kernelcache 위에서 C++ 지원을 강화하기 위한 IDAPython 모듈

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

ida_kcpp

iOS 커널캐시를 훨씬 더 편리하게 리버스 엔지니어링할 수 있는 IDAPython 모듈입니다.

iOS 커널캐시의 상당 부분은 C++로 작성되어 있으며, 이는 명시적인 직접 호출보다는 많은 가상 테이블 역참조를 사용하는 복잡한 바이너리 코드로 컴파일됩니다. ida_kcpp는 ida_kernelcache의 클래스 계층 구조 재구성 기능을 활용합니다. IDB를 매핑하고 바이너리 함수와 원본 가상 메서드를 동기화합니다. 이를 통해 C++ 가상 메서드 호출을 더블클릭하여 탐색하고, 해당 xref를 찾고, 라이브 리서치 중에 이 모든 것을 동기화된 상태로 유지함으로써 iOS 커널캐시를 탐색할 수 있습니다.

ida_kcpp는 ida_medigate에서 영감을 받았지만, iOS 커널캐시의 독특한 구조를 활용하여 더 강력하고 편리한 리서치 환경을 제공합니다.

general_view

설치

  • ida_kernelcache (Cellebrite의 포크)를 설치하세요
  • 선택 사항이지만 적극 권장: 디컴파일러 접근으로부터 구조체 필드 xref 추적을 위해 ida-referee (Cellebrite의 포크)를 설치하세요

둘 다 PyPI에 없으므로, 각 저장소의 설치 지침을 따르세요.

ida-setup 사용 시:

ida-setup plugin install -e /path/to/ida-kcpp

또는 수동으로:

  1. ida-netnode를 설치합니다
  2. ida_kernelcache와 ida_kcpp가 IDA python 경로에 있는지 확인합니다.

~/.idapro/idapythonrc.py에 추가하여 설치할 수도 있습니다:

import sys
sys.path.append(IDA_KCPP_PATH)
sys.path.append(IDA_KERNELCACHE_PATH)
  1. ~/.idapro/plugins/ida_kcpp_plugin.py를 ida_kcpp_plugin.py에 symlink합니다.

사용법

사전 분석

  1. 분석할 kernelcache를 엽니다. ida_kernelcache가 아직 실행되지 않았다면 edit >> Plugins >> Kernel Cache CPP >> ida_kernelcache process kernel을 실행하세요.
  2. Edit >> Plugins >> Kernel Cache CPP >> Perform Initial sync...를 실행합니다 (경고 메시지 상자가 나타날 수 있으며, 지금은 무시해도 됩니다). 이 단계는 가상 함수 이름의 접두사를 해당 함수가 속한 클래스로 설정하여 이름을 변경합니다. 또한 이 단계는 모든 가상 함수를 디컴파일하고, 해당 this 인자를 설정하며, 관련 ::vmethods 멤버를 디컴파일된 타입에 대한 함수 포인터로 변경합니다. 이 단계는 시간이 다소 걸릴 수 있습니다...
  3. 이제 "Synced IDB"가 생성되었지만, 주의하세요 - 플러그인은 아직 활성화되지 않았습니다.

동기화된 IDB에 대한 플러그인 활성화

ida_kcpp는 이름과 프로토타입을 자동으로 전파하며, IDA의 탐색 방식 일부도 변경하기 때문에 자동으로 활성화되지 않지만, 언제든지 활성화하거나 비활성화할 수 있습니다.

edit >> Plugins >> Kernel Cache CPP >> Activate Plugin을 클릭하여 ida_kcpp를 활성화합니다 (Hexrays 훅을 설치하고 ida_kernelcache.collect_class_info()도 실행합니다).

플러그인 비활성화

Edit >> Plugins >> Kernel Cache CPP >> Deactivate Plugin을 클릭합니다.

기능 개요

가상 함수 동기화기

가상 함수 이름 변경

가상 함수의 이름을 변경할 때 맹글링된 이름(예: __ZNK10AppleA7IOP9method_86Ev_99)을 편집하거나, 사람이 읽기 쉬운 이름(AppleA7IOP::method_86)으로 변경할 수 있으며, 이는 자동으로 맹글링됩니다. 관련 ANCESTOR::vmethods 멤버도 함께 이름이 변경되며, 동일한 가상 메서드를 구현하는 모든 가상 함수도 함께 이름이 변경됩니다.

가상 함수 프로토타입 업데이트

가상 함수 프로토타입 변경도 마찬가지입니다. 이 경우 관련 ANCESTOR::vmethods 멤버의 프로토타입이 방금 설정된 타입에 대한 함수 포인터로 변경되며, this는 ANCESTOR *로 설정됩니다. 또한 ANCESTOR의 DESCENDANTS에 있는 관련 가상 메서드 구현의 프로토타입도 모두 변경되며, 해당 this는 DESCENTANT *로 설정됩니다.

개선된 XREFS

  • 모든 가상 함수에서 해당 추상 ::vmethods 멤버로의 xref를 추가합니다.
  • ida_referee를 사용하여 모든 필드의 사용, 특히 디컴파일러에서 ::vmethods 멤버(가상 호출)의 사용을 추적할 수 있습니다.
    • 또한 가상 함수에서 CTRL+SHIFT+Y 단축키를 추가하여 관련 ::vmethod 멤버의 xrefs 창을 바로 열 수 있습니다. IDA의 버그로 인해 이 기능은 디컴파일러가 아닌 디스어셈블리 창에서만 작동합니다.

개선된 탐색

  • 디컴파일러: 가상 함수 호출을 더블 클릭하면 가상 메서드의 구현을 선택할 수 있는 창이 팝업됩니다.

    image-20220707161129479

  • Local Types 보기 (Shift+F1):

    • 가상 메서드를 더블 클릭하면 구현으로 이동합니다 (참고: IDA 9에서는 이름 변경 대화 상자도 표시되며, 이는 닫을 수 있습니다)
    • 가상 메서드에서 Cmd+Enter를 눌러도 구현으로 이동합니다 (더블 클릭보다 깔끔한 대안)
    • ::를 포함하는 구조체 이름을 더블 클릭하면 이동하지 않는 IDA 버그를 수정했습니다.

향후 개선 사항

  1. IDA7.2 c++ 클래스 호환성 지원 추가. 레거시 이유로 아직 수행하지 않은 ida_kernelcache 구조체 레이아웃 변경이 필요합니다
  2. 충돌에 대한 이름/프로토타입 해석 인터페이스 추가.

메타

Cellebrite Labs의 Uriel Malin, Ievgen Solodovnykov, Omer Porzecanski가 작성했습니다. macOS에서 Python 3.13과 함께 IDA 9.2용으로 개발 및 테스트되었습니다

도구 다운로드