超级签名:绕过苹果商店安装APP的方式--linux版本 ,技术全揭秘

一、何为超级签名:

即使用苹果个人开发者账号用Ad_Hoc方式建立分发。

1、优缺点

优点:可以利用web直接进行分发,用户点击即可。无需用户进行企业信任;相对企业签而言稳定,但也并不是百分百稳定。仍然面临封号风险。

缺点:价格昂贵,由于个人开发者账号设备数量有限只有100台。导致分发成本非常高。国内688元/一年/100台设备。

二、整体流程

1、通过web向用户发送描述文件,让用户安装描述文件从而获取用户的UDID,将获取到的UDID 发送给服务器。

2、服务器自动化登陆开发者账号,注册UDID,同时新建带此UDID的mobileprovision。下载mobileprovision和证书对IPA进行签名。

3、使用itms-services方式让用户下载。

三、技术核心

1、获取UDID
在web服务器上创建一个XML 的描述文件。配置好服务器接收用户的URL地址。当用户安装好描述文件后。会回调你设置的url。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
    <dict>
        <key>PayloadContent</key>
        <dict>
            <key>URL</key>
            <string>#requestURL#/signature/udid/#appid#/post</string>
            <key>DeviceAttributes</key>
            <array>
                <string>UDID</string>
                <string>IMEI</string>
                <string>ICCID</string>
                <string>VERSION</string>
                <string>PRODUCT</string>
            </array>
        </dict>
        <key>PayloadOrganization</key>
        <string>#requestURL#</string>
        <key>PayloadDisplayName</key>
        <string>查询设备UDID</string>
        <key>PayloadVersion</key>
        <integer>1</integer>
        <key>PayloadUUID</key>
        <string>超级签名</string>
        <key>PayloadIdentifier</key>
        <string>dev.skyfox.profile-service</string>
        <key>PayloadDescription</key>
        <string>本文件仅用来获取设备ID</string>
        <key>PayloadType</key>
        <string>Profile Service</string>
    </dict>
</plist>

2、自动注册UDID 及生成 mobileprovision

此处即是超级签名重点,写到这了不得不感谢一下 Spaceship 了。
Spaceship公开了Apple Developer Center的API,且能在极短时间内进行请求和返回。而且还预留接口。我们可以通过写ruby脚本在实现自动化注册UDID新建描述文件。

  #登陆飞船
spaceship = Spaceship::Launcher.new(accountpassword)

 #添加新设备号
device = spaceship.device.create!(name:udidnameudid:udid)

#添加描述文件
profile = spaceship.provisioning_profile.development.create!(bundle_id: bundleID,certificate: certs,name: "profilename")

#下载描述文件
aFile = File.write("profile.mobileprovision"profile.download)

以上为 Spaceship 部分ruby调用代码。更具体的方法可以查看Spaceship 的开发文档。

Spaceship DeveloperPortal

3、签名

如果在mac服务器下,将会有很多可以签名的开源工具。然而在linux下,少之又少。
可以自行开发,也可以使用开源工具,isign。
isign工具是为数不多的可以在linux下可以签名的工具。但是此工具对ipa的支持并不完善。有些包会无法签名报错。这个就需要各位自行探索了。

isign

4、分发

重签名后获得的包可以使用itms-services进行分发。

写在最后:

目前很多签名商都会在上传的包内注入动态库,以实现获取安装,安装、点击的数据以及控制app闪退,时间锁等。更有甚者直接窃取用户数据。如果仅仅想要自行分发的话,建议还是自行部署一套吧。

IOS技术开发交流群:685955170

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容