AltStore - 非越狱iOS设备的替代应用商店

AltStore - 非越狱iOS设备的替代应用商店

项目标题与描述

AltStore 是一个为非越狱 iOS 设备设计的替代应用商店。它允许用户使用个人 Apple ID 签名并安装第三方应用(.ipa 文件)。AltStore 通过 WiFi 与桌面应用 AltServer 通信,自动刷新应用以防止证书过期。

功能特性

WiFi 安装:通过 AltServer 在局域网内无线安装应用

自动签名:使用用户 Apple ID 自动为应用签名

后台刷新:定期自动刷新应用签名防止过期

应用更新:直接在 AltStore 内更新已安装应用

多设备支持:支持 iOS 和 macOS 平台

开发者友好:支持分发开发者自己的应用

安装指南

系统要求

Xcode 15

Swift 5.9

iOS 14.0 (AltStore)

macOS 11.0 (AltServer)

安装步骤

下载并安装 AltServer

确保 iOS 设备与电脑在同一 WiFi 网络

通过 AltServer 安装 AltStore 到 iOS 设备

在设备上信任开发者证书

使用说明

基础使用

let keychain = Keychain(service: "com.example.github-token")

keychain["kishikawakatsumi"] = "01234567-89ab-cdef-0123-456789abcdef"

安装应用

准备 .ipa 文件

通过 AltStore 选择文件并安装

输入 Apple ID 进行签名

自动刷新

AltStore 会在以下情况下自动刷新应用:

设备与 AltServer 在同一网络

应用即将过期(7天有效期)

核心代码

应用签名核心逻辑

void *injectApp(void *originalApp, size_t originalAppSize, void *appToInject, size_t appToInjectSize, size_t *outputSize) {

*outputSize = 0;

// 验证待注入应用架构

MachOHeader *injectedHeader = (MachOHeader*) appToInject;

if (injectedHeader->cpuType != CPU_TYPE_ARM64) {

return NULL;

}

// 构建 FAT 头

size_t totalSize = 0x4000 + ROUND_TO_PAGE(originalAppSize) + ROUND_TO_PAGE(appToInjectSize);

void *fatBuf = malloc(totalSize);

// 写入原始应用和注入应用

memcpy(fatBuf + 0x4000, originalApp, originalAppSize);

memcpy(fatBuf + 0x4000 + originalAppSizeRounded, appToInject, appToInjectSize);

*outputSize = totalSize;

return fatBuf;

}

设备管理核心类

@interface ALTDeviceManager : NSObject

@property (class, nonatomic, readonly) ALTDeviceManager *sharedManager;

// 应用安装

- (NSProgress *)installAppAtURL:(NSURL *)fileURL

toDeviceWithUDID:(NSString *)udid

activeProvisioningProfiles:(nullable NSSet *)activeProvisioningProfiles

completionHandler:(void (^)(BOOL success, NSError *_Nullable error))completionHandler;

// 应用移除

- (void)removeAppForBundleIdentifier:(NSString *)bundleIdentifier

fromDeviceWithUDID:(NSString *)udid

completionHandler:(void (^)(BOOL success, NSError *_Nullable error))completionHandler;

@end

错误处理

typedef NS_ERROR_ENUM(AltServerErrorDomain, ALTServerError) {

ALTServerErrorUnderlyingError = -1,

ALTServerErrorUnknown = 0,

ALTServerErrorConnectionFailed = 1,

ALTServerErrorLostConnection = 2,

ALTServerErrorDeviceNotFound = 3,

ALTServerErrorDeviceWriteFailed = 4,

ALTServerErrorInvalidRequest = 5,

ALTServerErrorInvalidResponse = 6,

ALTServerErrorInvalidApp = 7,

ALTServerErrorInstallationFailed = 8,

ALTServerErrorMaximumFreeAppLimitReached = 9,

ALTServerErrorUnsupportediOSVersion = 10

};

更多精彩内容 请关注我的个人公众号 公众号(办公AI智能小助手)

公众号二维码

相关推荐

贳赦的意思
365娱乐平台网址

贳赦的意思

📅 08-19 👁️ 9525
超能继承者最全英雄战力提高方法推荐攻略
体育比分365最新版app下载

超能继承者最全英雄战力提高方法推荐攻略

📅 07-01 👁️ 9025
将公顷[ha]转换为平方分米[dm²]
365bet娱乐平台官网

将公顷[ha]转换为平方分米[dm²]

📅 08-04 👁️ 6673