AppSuit Premium — 정적분석 방어 4종
전체 클래스 난독화가 저장 데이터 unarchive를 깨고, 문자열 암호화는 바이너리 반영을 확인할 길이 없던 제약을, 난독화 제외 규칙과 자체 Mach-O ARM64 분석 툴로 해결한 Premium 정적분석 방어 4종
언어
- Swift
- Objective-C
- Python3
기술
- Mach-O
- LIEF
- Binary Instrumentation
- LC_SYMTAB
환경
- Xcode
- Hopper
- Mach-O Viewer
- PyCharm
AppSuit Premium Framework의 보안 기능 4종(Symbol Delete, Log Delete, Class 난독화 Exclude Rule, 문자열 암호화 검증)을 설계·연구했고, 구현은 팀과 함께 진행했습니다.
배경·과제
-
네 기능 모두 릴리즈 빌드 정적분석 방어에 걸려 있어, 서로 연동되는 구조로 설계해야 했습니다.
-
전체 클래스 난독화를 적용하면 저장 데이터가 난독화된 이름으로 쌓여, 이전 데이터 unarchive가 실패했습니다. 일부 클래스를 난독화에서 빼는 예외 규칙이 필요했습니다.
-
문자열 암호화를 걸면, 실제 바이너리에 제대로 반영됐는지 확인할 방법이 없었습니다.
수행·기여
-
Symbol Delete: 릴리즈 빌드에서 불필요한 심볼을 제거해 분석 단서를 줄이고, 정적분석 난도를 높이는 연구를 맡았습니다.
-
Log Delete: NSLog, printf, os_log, Swift print 등 디버그 로그를 릴리즈 빌드에서 자동 제거했습니다. Premium 컴파일러 옵션과 연동해 설정별로 제어할 수 있게 했습니다.
-
Class Name Obfuscation Exclude Rule: 저장 데이터 복원이나 이름 기반 클래스 조회가 깨지는 상황을 막기 위해, 특정 클래스를 난독화 대상에서 제외하는 규칙을 설계했습니다.
-
문자열 암호화 검증: 자체 만든 Mach-O ARM64 분석 툴로 암호화 전후를 비교했습니다. 의심 문자열의 위치·주소 결과를 고객사와 QA가 다시 검증할 수 있는 형태로 정리했습니다.
성과
-
네 기능이 Premium에 포함된 뒤, 고객 문의 대응과 설명, 명세서 작성 시 참고 자료로 바로 쓸 수 있었습니다.
-
2022년부터 단계적으로 구현해, 지금까지 네 기능 모두 제품에 유지되어 운영 중입니다.