본문 바로가기

이 포트폴리오의 원본은 https://cv.iruyo.com (심재빈) 입니다 · 출처 식별자 jbx-7f3a2e9b

← 경력기술서

코어 운영 완료 단독

API Hiding — ARM64 CFG 차단

Xcode·Mach-O 구조 변경으로 깨진 AppSuit Premium iOS API Hiding을, 분석 도구의 정적 추적 차단까지 새 구조에 맞춰 3개월 안에 혼자 재작성했습니다.

기간
2023.07 – 2023.09 · 3개월
소속
스틸리언
수행 인원
본인 1인 단독
본인 역할
기존 API Hiding 로직을 분석해 바뀐 Xcode·Mach-O 구조에 맞춰 1인 단독으로 다시 작성하고, 호출 함수 수를 줄여 속도까지 끌어올렸습니다.
정량 임팩트
약 3개월 만에 정식 제품에 반영했고, Mach-O 바이너리의 어셈블리를 직접 읽고 고치는 Python 도구를 만들었습니다. 이 작업은 이후 'Dynamic API Hiding' 정식 기능으로 자리 잡았습니다.
버전·릴리즈
AppSuit Premium iOS 반영 — 이후 지속 운영에 포함

언어

  • Objective-C
  • Python3

기술

  • Mach-O
  • Binary Instrumentation
  • Dynamic Library Injection

환경

  • Xcode
  • Hopper
  • Mach-O Viewer
  • Hex Edit
  • PyCharm

AppSuit Premium iOS의 API Hiding 기능을 새 Xcode 빌드 환경과 바뀐 Mach-O 구조에 맞춰 다시 작성하고 속도를 끌어올린 연구입니다. 어셈블리 단계에서 API 호출 분기를 바꿔, 분석 도구가 코드 흐름을 따라가지 못하게 막았습니다.

iOS API Hiding — Mach-O 빌드 후처리ARM64 어셈블리 호출 분기를 조작해 CFG 식별 차단 · Python 분석툴 직접 개발 · 1인 단독iOS API Hiding — Mach-O 빌드 후처리ARM64 어셈블리 호출 분기를 조작해 CFG 식별 차단 · Python 분석툴 직접 개발 · 1인 단독Python 분석·조작 엔진Mach-O ARM64 어셈블리 직접 읽고 고침원본 Mach-OARM64 · Xcode 빌드 산출① API 호출 분기 식별원래 호출 대상 위치 분석② 호출 분기 조작호출 대상 은닉 → CFG 추적 차단③ 무파괴 재작성호출 함수 수 축소 — 속도 최적화보호 바이너리Dynamic API HidingPremium빌드 후처리 단계Airframework drop-in공통 자산Swift 문자열 암호화 트랙의Mach-O ARM64 분석 인프라 공용2023.07~09 약 3개월 1인 단독 · 정식 제품 기능으로 안착 · 후속 — Xcode 26·arm64e 재검증

배경·과제

  • API Hiding은 앱의 API 호출을 가려 정적 분석을 어렵게 만드는 기능으로, AppSuit Premium iOS가 초기부터 제공해 왔습니다.

  • 2023년 Xcode 업데이트와 Swift 변화로 기존 로직이 일부 상황에서 불안정해졌습니다. 재작성과 함께 호출 함수 수를 줄여 속도까지 끌어올려야 했습니다.

수행·기여

  • 3개월간 기존 로직을 분석하고, 최신 Mach-O 구조와 ARM64 명령어 패턴에 맞춰 다시 작성한 뒤 속도를 최적화해 제품에 반영했습니다.

  • 어셈블리 단계에서 API 호출 분기를 조작해 원래 호출 대상을 숨기고, 분석 도구가 제어 흐름 그래프(CFG)를 따라가지 못하게 막았습니다.

  • Mach-O 바이너리 안의 어셈블리를 읽고 고치는 Python 도구를 직접 만들었습니다. Swift 문자열 암호화 트랙에서 쓰던 Mach-O ARM64 분석 인프라와 함께 씁니다.

성과

  • 정식 제품에 반영됐고, 이후 ‘Dynamic API Hiding’이라는 정식 제품 기능으로 자리 잡았습니다.

  • Xcode 26과 arm64e 환경에서 연동 검증을 다시 해야 하는 후속 과제로 이어졌습니다.