Premium iOS Swift 클래스명 난독화 — Mach-O 처리에 LIEF 도입
Objective-C 클래스명만 처리하던 AppSuit Premium iOS 난독화를 Swift 클래스 심볼까지 확장하고, Mach-O 엔진을 LIEF로 바꿔 Swift 지원을 넓혔습니다.
언어
- 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 사용 시 발생하는 바이너리 구조 손상 문제를 찾아내고 우회했습니다.
성과
-
Premium의 난독화 범위를 Objective-C에서 Swift 클래스명까지 확장했습니다.
-
Mach-O 처리에 LIEF를 도입했습니다 (2023 상반기 완료).