
의존성 없는 Python CLI로, iOS .ipa 아카이브를 풀고, 검사하고, 편집하고, 다시 빌드하며, Mach-O 바이너리와 서명 번들을 보존하면서 plist와 문자열을 XML로 변환합니다.
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
사용자 정의 entitlements를 포함하려면:
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는 신뢰할 수 없는 아카이브 콘텐츠를 처리합니다. 이 도구는 개별 아카이브 멤버와 총 비압축 아카이브 크기에 방어적 제한을 적용하지만, 알 수 없는 파일은 격리된 환경에서 검사해야 합니다.
분석하고 서명할 법적 권리가 없는 애플리케이션은 배포하거나 설치하지 마세요.
GitHub에 게시하기 전에 프로젝트의 라이선스 텍스트를 여기에 추가하세요. 라이선스가 포함되지 않은 경우, GitHub 사용자는 코드를 사용, 수정 또는 재배포할 권한을 자동으로 부여받지 않습니다.
이슈와 풀 리퀘스트를 환영합니다. 다음을 포함해 주세요:
이 README는 IPAForge 1.24.0을 설명합니다.