Mac 없이 ‘iOS 복호화 (dSym)’ 기능 출시
앱을 출시하기 전 보통 Android 같은 경우 프로가드를 이용하여 사용하지 않는 리소스를 제거하고 클래스나 메소드 이름을 짧게 축소하고 난독화 및 최적화하여 APK를 최대한 작게 만듭니다. 여기서 난독화란 소스코드를 알아보기 힘든 형태로 바꾸는 기술을 말하는데요. 난독화된 코드는 리버스 엔지니어링을 어렵게 만들고, 보안에 민감한 앱의 경우 유용하게 사용할 수 있습니다.
만약 개발 중인 프로젝트에서 프로가드를 사용한다면, 소스코드가 난독화된 상황에서 크래시가 발생했을 때 해석이 어려워지는데 이때 생성되는 매핑 파일을 이용하여 난독화된 코드를 해석, 즉 복호화 할 수 있습니다.
하지만 iOS의 복호화(DeSymbolication) 기능은 Mac에서만 구동되도록 Apple이 정책을 유지하고 있습니다. 트래픽이 많은 서비스 같은 경우 여러 대의 맥을 넣어야 되다 보니 제약사항이 많았습니다. 즉 고객사에 on premise(설치형)으로 제공하게 된다면 여러 대의 맥 미니가, SaaS에는 맥과 연동을 해야 하는 번거로움이 존재했죠.
그래서 IMQA 팀은 stack decoder
라는 기능을 개발하였습니다. 이 기능을 통해 Mac 장비 없이 iOS에서 난독화한 부분을 복호화 할 수 있게 되었습니다. 그럼 어떻게 바뀌었는지 살펴볼까요?
메모리 주소값으로 표현된 데이터를 정확한 파일의 함수 위치로 복호화하였습니다. 실제 소스의 파일 및 위치까지 정확히 표시된 것을 확인할 수 있습니다.
이전 iOS 같은 경우, 모든 데이터를 복호화(dSymbolication) 하는 게 너무 큰 비용이 들기 때문에 사용자가 코드 관련 페이지에 방문할 때마다 해당 코드를 복호화하였는데요. 당연히 복호화를 하는 연산만큼 대기해야 했죠. 하지만 이제는 iOS에서도 복호화 된 코드를 지연 없이 보실 수 있게 되었답니다!
🙋🏻♀️ 더 궁금하신가요?
Q. 앱 버전 별로 관리할 수 있나요?
앱 버전 별로 지원합니다.
Q. 매핑 파일은 자동으로 업로드 되나요?
현재는 자동 업로드되지 않습니다. 매핑 파일 업로드 방법은 사용자 가이드 > 3. 프로젝트 관리 > 프로가드 설정 / dSYM 설정에서 확인하실 수 있습니다.
Q. 상용화된 다른 난독화 솔루션도 지원하나요?
SaaS에서 AOS는 프로가드, iOS에서는 DeSymbolication을 지원합니다. On-premise에서는, 특정 난독화 라이브러리를 쓰시는 경우 상용화 솔루션도 커스터마이징 협의를 통해 지원합니다. SaaS 프로젝트 규모를 보고 협의를 통해 진행할 수 있습니다.
관련 기사보기