본문 바로가기

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

← 경력기술서

코어 운영 완료 단독

Premium iOS Swift 클래스명 난독화 — Mach-O 처리에 LIEF 도입

Objective-C 클래스명만 가리던 AppSuit Premium iOS 난독화를, 맹글링된 Swift 클래스 심볼까지 뽑아 치환하도록 확장하고 Mach-O 엔진을 LIEF 로 교체해 Swift 지원을 넓힌 1인 작업입니다.

기간
2023.01 – 2023.03 · 3개월
소속
스틸리언
수행 인원
본인 1인 단독
본인 역할
AppSuit Premium iOS의 Swift 클래스명 난독화를 맡아, Mach-O 바이너리 조작에 LIEF를 들여와 적용했습니다.
정량 임팩트
(__DATA_CONST, __objc_classlist)에 맹글링돼 있던 Swift 클래스 심볼을 추출해 난독화 대상으로 처리했습니다. 바이너리 write 는 LIEF 로 수행했습니다. LIEF 로 write 시 특정 로드 커맨드가 손상되는 문제를 찾아내고 우회했습니다.
버전·릴리즈
Premium 난독화 범위 Objective-C → Swift 클래스명 확장, Mach-O 처리 LIEF 도입

언어

  • Python3

기술

  • LIEF
  • Mach-O
  • Binary Instrumentation

AppSuit Premium iOS 의 Swift 클래스명 난독화를 연구·구현하면서 Mach-O 바이너리 처리에 LIEF 를 도입한 작업입니다 (2023 상반기 완료).

배경

  • Premium 은 Objective-C 클래스명만 난독화할 수 있었고, Swift 로 작성된 클래스명은 대상이 아니었습니다. Swift 클래스 심볼이 (__DATA_CONST, __objc_classlist) 등에 맹글링된 형태로 저장돼 있어 이를 식별하고 치환하는 처리가 필요했습니다.

수행·기여

  • Swift 클래스 심볼을 추출해 난독화 대상으로 포함하고 원본 클래스명을 치환해 저장하도록 구현했습니다.

  • Mach-O 바이너리 write 에 LIEF 를 적용했습니다. LIEF 로 write 할 때 발생하는 바이너리 구조 손상 이슈를 찾아내고 우회했습니다.

성과

  • Premium 의 난독화 범위가 Objective-C 에서 Swift 클래스명까지 확장되었습니다.

  • Mach-O 처리에 LIEF 를 도입했습니다 (2023 상반기 완료).