개요
Xcode SDK를 다운로드 후, 프로젝트 설정을 일일이 변경할 필요 없이 스크립트 실행을 통해 프로젝트에 SDK 연동을 완료하고 앱을 빌드할 수 있습니다.
Xcode SDK를 다운로드하면 Tools 폴더에서 두 개의 스크립트를 확인하실 수 있습니다.
- install.sh
- 라이브러리 추가 및 해킹탐지 경고 표시를 위한 스크립트
- AppSealing.sh
- 프로젝트 빌드 및 IPA 생성 후 앱 무결성 정보 생성단계를 진행하는 스크립트
1. Xcode SDK 압축 해제
먼저 다운로드한 SDK를 프로젝트의 root 경로에 압축 해제 해 주시기 바랍니다.
AppSealingSDK 폴더가 root 경로에 위치해야 합니다.
주의: Flutter 프로젝트의 경우, /프로젝트 root/ios/ 경로에 AppSealingSDK 폴더가 위치해야 합니다.
2. install.sh 실행
먼저 실행권한 부여 후 install.sh를 실행해 주시기 바랍니다.
% cd /프로젝트root경로
% chmod +x ./AppSealingSDK/Tools/install.sh
% ./AppSealingSDK/Tools/install.sh
install.sh 스크립트에 권한부여 후 정상적으로 실행되면, 프로젝트의 구조를 인식하여 빌드 대상 프로젝트를 확인합니다.
**********************************
AVAILABLE TARGETS
**********************************
1. Project_A
2. Project_B
> Select the target number to apply 'App Sealing' to: 위와 같은 내용이 출력되면, 적합한 프로젝트의 번호를 입력하여 다음 단계로 진행할 수 있습니다.
> Select the target number to apply 'App Sealing' to: 1
Selected target: TestApp_Swift
✅ AppSealing framework added.
✅ LEASection.mm added.
✅ New 'AppSealing' run script added.
✅ Xcode build flags updated.
Swift로 빌드된 프로젝트의 경우, bridging header 추가에 대한 확인을 진행합니다.
**********************************
Do you want to add the bridging header for Swift?
**********************************
1. Yes
2. No
> Enter your choice (1/2):
마지막으로, 프로젝트에 사용할 예제 코드를 선택해야 합니다.
해당 코드는 앱 실행중 해킹 위협 탐지시 경고를 표시하는 기능을 추가합니다.
✅ Project saved. AppSealing setup complete for target: Project_A
**********************************
To Copy and paste Sample code
**********************************
Select a UI framework:
**********************************
1. SwiftUI
2. Swift UIKit
3. Objective-C UIKit
> Enter your choice (1/2/3):사용중인 언어에 맞게 숫자1~3을 선택해 입력하시면 선택된 예제 파일이 열립니다.
예제 코드를 프로젝트의 메인 뷰 ( 메인 view controller)에 직접 추가하면 install.sh로 필요한 작업이 마무리됩니다.
3. ApplySealing.sh 실행
앱 빌드 준비가 끝났다면, ApplySealing.sh 스크립트를 실행해 프로젝트를 빌드하고, IPA를 생성한 다음, 앱실링 SDK의 무결성 정보를 생성합니다.
해당 스크립트가 정상적으로 완료되면 생성된 IPA를 Testflight애 업로드해 사용할 수 있습니다.
먼저, 터미널에서 SDK의 두개 파일에 실행 권한을 부여합니다.
% cd /프로젝트root경로
% chmod +x ./AppSealingSDK/Tools/generate_hash ./AppSealingSDK/Tools/ApplySealing.sh
ApplySealing.sh를 실행하면 빌드할 프로젝트를 선택해야 합니다.
프로젝트 내에 여러개의 xcworkspace 또는 xcodeproj가 존재하면 해당 파일들이 선택지로 제시됩니다.
정확한 번호를 입력해 다음 단계로 진행할 수 있습니다.
% ./AppSealingSDK/Tools/ApplySealing.sh
...
Saving detailed logs to: ./Build/build.log
Scanning parant directory for .xcworkspace and .xcodeproj files...
[1] /Users/you/project_root/..../Project_A.xcodeproj
[2] /Users/you/project_root/..../Project_A_Sub.xcodeproj
Select a project or workspace
Your choice:
프로젝트를 선택한 뒤, 빌드 scheme을 선택합니다.
정확한 번호를 입력해 빌드를 시작하고, IPA를 생성할 수 있습니다.
Select a project or workspace
Your choice: 1
Selected: /Users/you/project_root/..../Project_A.xcodeproj
Finding available schmems...
------------------------------------
[1] Project_A
[2] Project_A_Debug
------------------------------------
Select a build scheme
Your choice:
IPA가 생성되면 무결성 정보를 생성할 IPA를 지정해야 합니다.
Select a build scheme
Your choice: 1
Selected scheme: Project_A
Cleaning...
Archiving...
Archiving in progres...
Done
Exporting IPA...
Done
IPA exported to: ./Build/
------------------------------------
[1] ./Build/Project_A.ipa
------------------------------------
Select an IPA to apply AppSealing
Your choice:
IPA를 선택하면, 무결성 정보를 생성할때 함께 적용할 보안 옵션을 선택하게 됩니다.
SDK의 기본 설정상 anti-swizzling은 비활성화 상태이기 때문에, 활성화 여부를 선택하게 됩니다. (Y 입력시 anti-swizzling 작동)
반대로 anti-hooking은 기본적으로 활성화된 상태이기 때문에 비활성화 여부를 선택해야 합니다. ( N 입력시 anti-hooking 작동)
Select an IPA to apply AppSealing
Your choice: 1
Selected IPA: ./Build/Project_A.ipa
Enable Anti-Swizzle? (Y/N)
Your choice: N
Disable Anti-Hook? (Y/N)
Your choice: N
Running sealing tool...
All steps completed.
Full logs: ./Build/build.log정상적으로 완료되면 위와 같이 스크립트가 종료되고, 전체 로그는 ./Build/build.log 경로에 생성됩니다.
해당 스크립트가 완료되면 Build 경로의 IPA를 Testflight에 앱을 배포할 수 있습니다.