본문 바로가기

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

← 경력기술서

코어 운영 완료 단독

iOS API Hiding 연구 (2023-07~09, 리팩토링·성능 최적화)

AppSuit Premium iOS의 API Hiding 기능을 새 Xcode 빌드 환경·바뀐 Mach-O 구조에 맞춰 재작성하고 속도를 끌어올린 연구

기간
2023.07 – 2023.09 · 3개월
소속
스틸리언
수행 인원
본인 1인 단독
본인 역할
AppSuit Premium iOS의 API Hiding 기능을 새 Xcode·Mach-O 구조에 맞춰 재작성하고 속도를 최적화. ARM64 어셈블리에서 API 호출 분기를 바꿔, 원래 호출 대상과 코드 흐름(제어 흐름 그래프, CFG)을 분석 도구가 읽지 못하게 막도록 설계.
정량 임팩트
약 3개월 1인 수행 / ARM64 어셈블리의 API 호출 분기를 바꿔 원래 호출 대상·코드 흐름(CFG) 식별 차단 / 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 호출 분기를 바꿔, 분석 도구가 코드 흐름을 따라가지 못하게 막았습니다.

배경·과제

  • 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’이라는 정식 제품 기능으로 자리 잡았습니다.

  • 같은 로직이 Air에서는 외부 보호 모듈을 통째로 끼워 넣는 framework drop-in 방식으로, Premium에서는 빌드 후처리 단계에서 각각 쓰이며 회사 공통 자산이 됐습니다.

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