DocBit Notes 튜토리얼

Mac에서 '패키지 내용 보기'로 바이낸스 클라이언트 구조 확인하기

Mac의 .app 파일은 더블 클릭하면 앱이 실행되지만, macOS는 이를 실제로는 폴더로 처리합니다. Finder의 '패키지 내용 보기' 기능을 사용하면 앱 내부에 정확히 무엇이 있는지 볼 수 있습니다. 이 노트를 통해 바이낸스 Mac 클라이언트의 구조를 분해하여 살펴보고자 합니다. 클라이언트 다운로드는 먼저 바이낸스 공식 사이트 또는 바이낸스 공식 앱을 이용하고, iPhone 사용자는 iOS 설치 튜토리얼을 참고하세요.

.app 파일의 본질

macOS에서 .app 확장자를 가진 '파일'은 단일 실행 파일이 아니라 특수한 폴더(번들이라고 함)이며, 그 안에는 Apple의 규격에 따라 여러 하위 디렉터리와 파일이 들어 있습니다. Finder는 이를 하나의 아이콘으로 표시하고, 더블 클릭할 때 그 안의 실행 파일을 호출합니다.

이러한 설계의 장점:

  • 모든 앱 리소스가 함께 패키징되어 배포가 용이함
  • 사용자가 파일 하나만 드래그하면 설치가 완료됨
  • Windows처럼 여기저기 흩어진 DLL이 필요 없음

'패키지 내용 보기' 진입 방법

.app 내부 보기:

  1. Finder에서 Binance.app 찾기(일반적으로 /Applications에 위치)
  2. 우클릭(또는 Control + 클릭)
  3. 팝업 메뉴에서 '패키지 내용 보기' 선택
  4. Finder가 .app 내부 디렉터리로 진입

일반적으로 내부에 Contents 폴더가 있고, 그 아래에 여러 하위 디렉터리가 나뉩니다.

표준 .app 디렉터리 구조

Apple 규격의 번들 구조:

경로 내용
Contents/Info.plist 앱 메타 정보
Contents/MacOS/ 주 실행 바이너리
Contents/Resources/ 이미지, 글꼴, 현지화 문자열
Contents/Frameworks/ 서드파티 프레임워크
Contents/PlugIns/ 플러그인(많은 앱에는 없음)
Contents/_CodeSignature/ 서명 정보
Contents/embedded.provisionprofile 프로비저닝 프로파일

바이낸스 클라이언트에는 기본적으로 Info.plist, MacOS, Resources, Frameworks, _CodeSignature라는 5개의 핵심 디렉터리가 있습니다.

Info.plist에는 무엇이 있을까

Info.plist는 Apple 규격의 메타 정보 목록으로 다음을 기록합니다.

  • CFBundleIdentifier: 앱 고유 식별자, 바이낸스는 보통 com.binance.desktop
  • CFBundleVersion: 빌드 번호
  • CFBundleShortVersionString: 사용자에게 표시되는 버전
  • LSMinimumSystemVersion: 최소 시스템 요구 사항
  • NSCameraUsageDescription: 카메라 권한 설명(KYC용)
  • NSAppTransportSecurity: 네트워크 보안 정책

일반 사용자는 한 번 훑어보는 것으로 충분하며, 개발자는 주로 권한 관련 필드에 주목합니다.

Frameworks 디렉터리

Frameworks에는 일반적으로 바이낸스 클라이언트가 의존하는 서드파티 구성 요소가 포함되어 있습니다.

  • Electron 프레임워크(Electron 기반인 경우)
  • Qt 프레임워크(Qt 기반인 경우)
  • 각종 시스템 보조 라이브러리

바이낸스 Mac 클라이언트는 그동안 Electron과 네이티브 방식 사이에서 전환이 있었으며, 현재 버전은 비교적 가벼운 웹 기술 스택을 기반으로 합니다. 구체적인 프레임워크는 일일이 설명하지 않겠습니다.

Resources 디렉터리 살펴보기

Resources에는 다음이 있습니다.

  • 이미지 리소스(.icns 아이콘, PNG 이미지)
  • 현지화 문자열(.lproj 하위 디렉터리, 언어당 하나씩)
  • 글꼴(앱에 자체 글꼴이 포함된 경우)
  • 설정 파일(JSON, plist)

바이낸스 클라이언트가 얼마나 많은 언어를 지원하는지 알 수 있습니다. Resources에 들어가면 zh-Hans.lproj, en.lproj, ja.lproj, ko.lproj와 같은 하위 디렉터리가 있으며, 각각 하나의 언어에 해당합니다.

왜 분해해서 보는가

일반 사용자가 앱을 분해해서 보는 것은 실용적인 의미가 없지만, 다음 몇 가지 특수한 상황에서는 유용합니다.

  • 앱 진위 확인: Resources의 아이콘과 공식 사이트의 아이콘 비교
  • 수동으로 언어 변경: 극히 드문 경우 특정 현지화 강제 적용
  • 아이콘 추출: .icns 파일을 복사하여 자신의 앱에 사용
  • 종속성 검사: 개발자가 앱이 어떤 프레임워크를 사용했는지 확인

패키지 내부 파일 수정의 위험성

이론적으로는 '패키지 내용 보기' 후 내부 파일을 수정할 수 있지만:

  • 어떤 파일이든 수정하면 앱 서명이 무효화됨
  • macOS가 앱을 실행할 때 서명 불일치를 발견하고 실행을 거부함
  • 서명 검사를 우회하더라도 앱의 동작을 예측할 수 없음
  • 자동 업데이트가 실패할 수 있음

따라서 패키지 내용 보기는 조회용으로만 사용하고 수정하지 마세요.

Windows / Linux와의 비교

운영체제별 앱 저장 방식:

운영체제 형태 파일 분포
macOS .app 번들 하나의 폴더에 패키징
Windows .exe + DLL Program Files와 시스템 디렉터리에 흩어짐
Linux binary + 공유 라이브러리 /usr/bin, /usr/lib 등
iOS .app 번들(보이지 않음) 사용자가 직접 접근 불가

macOS의 번들 설계가 가장 깔끔합니다.

명령줄에서 보기

터미널에 익숙한 사용자는 cd 명령으로 .app/Contents 경로에 들어가서 ls 명령으로 직접 볼 수도 있습니다. 이는 Finder의 패키지 내용 보기와 결과가 같으며, 터미널의 관점일 뿐입니다.

보안 점검 팁

패키지 내용을 본 후 몇 가지 간단한 보안 검사를 할 수 있습니다.

  • Info.plist의 CFBundleIdentifier가 com.binance.desktop(또는 유사한 공식 식별자)이어야 함
  • _CodeSignature 디렉터리가 존재하고 비어 있지 않아야 함
  • 이름이 이상하고 의심스러운 실행 파일(예: update.exe, helper.so)이 없어야 함
  • Resources의 아이콘이 공식 사이트와 일치해야 함

이 네 가지가 모두 맞다면 진짜 공식 버전입니다.

FAQ

Q: 앱을 분해해서 보면 바이러스 경고가 뜨나요? A: 아닙니다. 이는 macOS 내장 기능이며 안전합니다.

Q: 앱을 다른 Mac에 그대로 복사해서 쓸 수 있나요? A: 네, 가능합니다. .app은 자체 포함되어 있습니다.

Q: 다운로드한 DMG보다 앱 용량이 큰 것이 정상인가요? A: 정상입니다. DMG는 압축 형식이므로 압축을 풀면 용량이 커집니다.

Q: 앱 아이콘은 어떻게 추출하나요? A: .icns 파일을 '미리보기(Preview)'로 드래그하여 열고 PNG로 내보냅니다.

확장 읽기