Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
sylvia — IDA 9.X용 iOS 시스템 콜 탐색기 | Kitploit
도구/GitHubGitHub/stolevchristian/sylvia
Static AnalysisiOS SecurityVulnerability AnalysisReverse EngineeringDebuggersInformation GatheringMobile SecurityBinary Analysis
GitHubstolevchristian/sylvia

sylvia

IDA 9.X용 iOS 시스템 콜 탐색기

저장소 보기
1512개월 전아직 검토되지 않음

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

iOS AArch64 시스템 콜 분석기

AArch64 바이너리에서 SVC 명령어를 스캔하고, X16 레지스터에서 BSD 시스템 콜 번호를 해석하며, 시스템 콜별 발생 위치 탐색과 실시간 man-page 문서 가져오기 기능을 갖춘 풍부한 도킹 가능 UI로 모든 결과를 표시하는 IDA Pro 스크립트입니다.

IDA Pro 9.x에서 iOS / macOS 리버스 엔지니어링을 위해 제작되었습니다. 이 스크립트를 만든 유일한 이유는 iOS 플랫폼을 리버스 엔지니어링할 때 시스템 콜 수준까지 내려가는 안티-탬퍼(Anti-Tamper) 대책을 분석하기 위해서였습니다. 시스템 콜을 콘솔에 출력하는 방식에 질려서, 보기에 합리적이면서 동시에 실시간 문서를 가져올 수 있는 무언가를 원했습니다.

이 ReadMe 전체는 AI로 생성되었으며, 스크립트의 대부분도 마찬가지입니다. 제가 기본 틀을 작성한 다음 Claude Opus 4.7이 멋진 사용자 인터페이스로 모든 것을 통합하는 마법을 부렸습니다.


기능

  • 전체 바이너리 스캔 — 모든 SVC #0x80 명령어를 찾고 최대 8개 명령어 이전의 MOV X16, #num 설정을 해석합니다
  • 556개 항목 시스템 콜 맵 — 완전한 iOS/macOS AArch64 BSD 시스템 콜 테이블 (Darwin XNU)
  • 9가지 색상 코드 카테고리 — 파일 I/O, 네트워크, 메모리, 프로세스, 스레딩, IPC, 보안, 시간, 기타; 색상은 IDA 자체 디스어셈블리 팔레트를 재사용합니다
  • 도킹 가능 패널 — 네이티브 도구처럼 IDA 내부에 자리합니다. 스크립트를 다시 실행하면 동일한 창이 다시 포커스됩니다
  • 실시간 필터 — 이름, 번호(0x5, 5) 또는 함수 이름으로 검색하고, 드롭다운에서 카테고리별로도 필터링할 수 있습니다
  • 발생 위치 테이블 — 특정 시스템 콜이 나타나는 모든 주소와 RVA를 정렬하여 나열합니다. 더블클릭하거나 Enter를 누르면 IDA에서 해당 주소로 이동합니다
  • 실시간 문서 — 백그라운드 스레드에서 man.freebsd.org의 전체 man 2 페이지를 가져옵니다 (Darwin은 BSD 계열). 결과는 세션별로 캐시됩니다
  • 내장 설명 — 약 250개의 시스템 콜에는 네트워크 요청 없이 즉시 확인 가능한 한 줄 설명이 포함되어 있습니다
  • JSON 내보내기 — 발견된 모든 시스템 콜(이름, 번호, 주소, RVA, 함수, 카테고리)을 JSON 파일로 덤프합니다
  • 마우스 오른쪽 클릭 컨텍스트 메뉴 — 이름 복사, 번호 복사, 첫 번째 발생 위치로 이동, man 페이지 가져오기(시스템 콜 테이블); 주소 복사, 함수 이름 복사(발생 위치 테이블)
  • 키보드 단축키 — Ctrl+F로 검색 상자에 포커스, 선택한 발생 위치에서 Enter를 누르면 해당 위치로 이동합니다

요구 사항

요구 사항버전
IDA Pro9.x (9.3에서 테스트됨)
PythonIDA와 함께 번들
PySide6IDA 9에 포함
requests선택 사항 — man-page 가져오기에만 필요

PyQt5 폴백 — 이 스크립트는 구버전용 IDA의 PyQt5 shim에서도 작동합니다.

requests를 IDA의 Python 환경에 설치하려면 IDA의 Python 콘솔에서 다음을 실행하세요:

root@kitploit:~
import subprocess, sys
subprocess.run([sys.executable, "-m", "pip", "install", "requests"])

설치

  1. syscall_ios.py를 컴퓨터의 아무 곳에나 복사합니다.
  2. IDA Pro에서 대상 바이너리를 엽니다.
  3. **File → Script file…**을 통해 스크립트를 실행하거나 IDA 창으로 드래그합니다.

분석기 패널이 자동으로 열리고 스캔을 시작합니다.


사용법

스크립트 실행

root@kitploit:~
File → Script file… → syscall_ios.py

또는 IDA의 Script command(Shift+F2)를 사용하여 붙여넣고 직접 실행합니다.

패널 개요

그림 1 그림 2


카테고리 색상 참조

색상은 IDA Pro 자체 디스어셈블리 하이라이트 팔레트를 그대로 반영하여 출력 결과가 네이티브처럼 느껴집니다.


내보내기 형식

JSON 내보내기는 다음과 같은 파일을 생성합니다:

root@kitploit:~
[
  {
    "name": "read",
    "number": 3,
    "number_hex": "0x3",
    "address": "0x1001a4bc",
    "rva": "0x4bc",
    "function": "sub_1001A0000",
    "category": "File I/O"
  },
  ...
]

시스템 콜 커버리지

내장 테이블은 Darwin/XNU BSD 계층(0x2000000 클래스)의 556개 시스템 콜을 다루며, 다음을 포함합니다:

  • 표준 POSIX (read, write, open, mmap, socket, …)
  • Darwin 확장 (csops, guarded_open_np, memorystatus_control, kevent_qos, …)
  • iOS 전용 (pid_hibernate, abort_with_payload, necp_*, os_fault_with_payload, …)
  • Pthread 커널 보조 (psynch_mutexwait, psynch_cvwait, , …)

다른 트랩 클래스를 사용하는 Mach 트랩과 libsystem 래퍼는 포함되지 않습니다. 이는 BSD 클래스(X16 = 0x2000000 | num인 SVC #0x80)만 다룹니다.


참고 사항

  • 시스템 콜 번호는 SVC 명령어에서 최대 8개 명령어 이내의 MOV X16, #imm을 역방향으로 스캔하여 해석합니다. 간접 로드(예: LDR X16, [...])는 UNKNOWN으로 표시됩니다.
  • 파일 상단의 SLIDE 상수는 표시되는 주소에 영향을 주지 않습니다. 이는 실행 중인 lldb 세션과의 연관을 위한 참조 주석으로 유지됩니다.
  • 재스캔은 현재 로드된 바이너리에 대해 전체 분석을 다시 실행합니다. 이전에 가져온 man 페이지는 캐시에 유지됩니다.
도구 다운로드
카테고리색상IDA 대응 항목
파일 I/O#4EC9B0타입 / 구조체
네트워크#569CD6키워드
메모리#DCDCAA함수 이름
프로세스#CE9178문자열 리터럴
스레딩#9CDCFE변수
IPC#C586C0열거형 / 매크로
보안#F44747오류 / 경고
시간#6A9955주석
기타#858585—
bsdthread_*
  • GCD / workqueue (workq_open, workq_kernreturn, kqueue_workloop_ctl, …)
  • 감사(Audit) 및 MAC 프레임워크 (audit_*, __mac_*)