Premium iOS Swift 클래스명 난독화 — Mach-O 처리에 LIEF 도입
Objective-C 클래스명만 가리던 AppSuit Premium iOS 난독화를, 맹글링된 Swift 클래스 심볼까지 뽑아 치환하도록 확장하고 Mach-O 엔진을 LIEF 로 교체해 Swift 지원을 넓힌 1인 작업입니다.
언어
- 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 상반기 완료).