
의존성 없는 Python CLI로, iOS .ipa 아카이브를 풀고, 검사하고, 편집하고, 다시 빌드하며, Mach-O 바이너리와 서명 번들을 보존하면서 plist와 문자열을 XML로 변환합니다.
#IPAForge
IPAForge는 iOS .ipa 아카이브를 언패킹, 검사, 편집 및 재빌드하기 위한 의존성 없는 Python 명령줄 도구입니다.
전체 아카이브를 추출하고, 편집 가능한 Apple plist 및 현지화 형식을 읽을 수 있는 XML로 변환하며, 불투명 및 바이너리 콘텐츠를 바이트 단위로 보존하고, 모든 변환을 ipaforge.yml에 기록하여 프레임워크를 충실히 재빌드할 수 있도록 합니다.
책임감 있게 사용하세요: IPAForge는 상호운용성, 보안 연구 및 정당한 애플리케이션 분석을 위해 만들어졌습니다. 관련 법률, 라이선스 및 서비스 약관을 준수하세요.
.ipa 아카이브를 디코딩하고 재빌드합니다..strings 파일을 편집 가능한 XML로 변환합니다..car, .nib, .mom과 같은 Apple 독점 형식을 보존합니다.ipaforge.yml에 파일별 분류 및 변환 메타데이터를 생성합니다.Payload/<AppName>.app 번들을 포함하는 유효한 .ipa 아카이브.IPAForge는 단일 Python 파일로 직접 사용할 수 있습니다:
python3 ipaforge.py --help
ipaforge 명령을 PATH에 설치하려면:
python3 ipaforge.py --install
번들로 제공되는 배포 파일을 설치하지 않고 추출하려면:
python3 ipaforge.py --extract
ipaforge -d MyApp.ipa
이렇게 하면 현재 작업 디렉터리에 프레임워크 디렉터리가 생성되며, 일반적으로 ./MyApp/입니다.
생성된 프레임워크 내부의 읽을 수 있는 XML 파일을 수정합니다. 원본 아카이브 데이터와 참조는 original/에 보관되며, 변환된 파일은 ipaforge.yml에 추적됩니다.
ipaforge -b MyApp
기본 출력은 현재 작업 디렉터리의 ./MyApp-signed.ipa입니다.
ipaforge -d MyApp.ipa decoded-framework
ipaforge -b decoded-framework rebuilt.ipa
ipaforge -d, --decode INPUT [OUTPUT]
ipaforge -b, --build INPUT [OUTPUT]
| 옵션 | 설명 |
|---|---|
-d, --decode | IPA를 편집 가능한 프레임워크 디렉터리로 디코딩합니다. |
-b, --build | 디코딩된 프레임워크 디렉터리에서 IPA를 빌드합니다. |
-f, --force | 기존 출력 디렉터리 또는 파일을 덮어씁니다. |
--no-meta | 디코딩 중에 ipaforge.yml을 작성하지 않습니다. |
--keep-binary | 디코딩 중에 모든 파일을 바이너리로 유지하고 XML 변환을 비활성화합니다. |
-c 0-9, --compression-level 0-9 | ZIP 압축 수준을 설정합니다. 기본값: 9. |
--no-sign | 의도적으로 서명되지 않은 아카이브를 빌드합니다. |
--entitlements FILE | 빌드된 서명에 entitlements를 포함합니다. |
--p12 FILE | 실제 PKCS#12 개발자 인증서로 서명합니다. |
--p12-password PASS | PKCS#12 인증서의 비밀번호입니다. |
--provision FILE | --p12와 함께 프로비저닝 프로파일을 포함하고 사용합니다. |
-v, --verbose | 디버그 로깅을 활성화합니다. |
-q, --quiet | 오류만 출력합니다. |
--version | IPAForge 버전을 표시합니다. |
-h, --help | 도움말을 표시합니다. |
Windows에서는 모드를 자동으로 추론할 수 있습니다. .ipa 입력은 디코딩되고 프레임워크 디렉터리는 빌드됩니다.
빌드 모드는 기본적으로 내장된 ad-hoc 서명기로 번들을 서명합니다. Mach-O 바이너리에 대한 CodeDirectory 데이터와 애플리케이션 번들에 대한 새로운 _CodeSignature/CodeResources 파일을 생성합니다.
일반 iOS 기기에 설치하려면 실제 개발자 인증서와 호환되는 프로비저닝 프로파일을 사용하십시오:
ipaforge -b MyApp \
--p12 developer.p12 \
--p12-password 'your-password' \
--provision embedded.mobileprovision
사용자 지정 권한을 포함하려면:
ipaforge -b MyApp --entitlements entitlements.plist
의도적으로 서명되지 않은 아카이브를 생성하려면:
ipaforge -b MyApp --no-sign
iOS는 일반적으로 서명되지 않은 아카이브를 설치할 수 없습니다.
디코딩된 프레임워크는 일반적으로 다음을 포함합니다:
MyApp/
├── Payload/
│ └── MyApp.app/
├── original/ # reference copies of signatures, profiles, and entitlements
├── readable/ # human-readable summaries for opaque formats and binaries
└── ipaforge.yml # file classifications and conversion metadata
original/ 디렉터리와 ipaforge.yml은 재빌드된 IPA에 절대 패키징되지 않습니다.
IPAForge는 추출된 파일을 다음과 같은 범주로 분류합니다:
native-bplist — XML로 변환되고 바이너리 plist로 재빌드되는 바이너리 프로퍼티 리스트.legacy-strings — XML로 변환되고 UTF-16 텍스트로 재빌드되는 클래식 .strings 파일.xml-plist — 텍스트로 보존되는 기존 XML plist 파일.opaque-compiled — 바이트 단위로 보존되는 독점 컴파일된 Apple 형식.native-binary — 바이트 단위로 보존되는 Mach-O 실행 파일 및 라이브러리.other-binary — 바이트 단위로 보존되는 이미지, 오디오, DER 데이터 및 기타 리소스.| 코드 | 의미 |
|---|---|
0 | 성공적인 작업. |
1 | 잘못된 아카이브 또는 서명 실패와 같은 런타임 오류. |
2 | 명령줄 사용 오류. |
141 | 파이프 소비자에 의해 표준 출력이 조기에 닫힘. |
IPAForge는 신뢰할 수 없는 아카이브 콘텐츠를 처리합니다. 이 도구는 개별 아카이브 멤버와 총 비압축 아카이브 크기에 방어적 제한을 적용하지만, 알 수 없는 파일은 격리된 환경에서 검사해야 합니다.
분석 및 서명에 대한 법적 권리가 없는 한 애플리케이션을 배포하거나 설치하지 마십시오.
이 README는 IPAForge 1.24.0을 설명합니다.
이 프로젝트는 MIT 라이선스에 따라 라이선스가 부여됩니다 - 자세한 내용은 LICENSE 파일을 참조하십시오.