超级签的市场的存在是对一家独大的上架市场的XX.
!!!要点1:获取UDID
!!!要点2:注册UDID到苹果后台
!!!要点3:服务端签名
!!!要点4:app拿到浏览器参数
!!!要点5:app内签名
!!!要点6:app内安装ipa
我们今天以某APP为例,来介绍一下超级签的流程.
首先用户在浏览器Safari搜到了这个APP.然后点击下载.
我们来抓个包:

1.首先人家获取你的UDID,这个UDID需要苹果的.mobileconfig文件来进行获取,
那么自动跳转到设置里面又是怎么实现的呢,
搞web的可能都知道,首先在浏览器里面下载这个
. mobileconfig文件然后再下载一个文件是企业描述文件.embedded.mobileprovision,
那么为什么用企业的这个描述文件来实现跳转呢?
因为个人的没有权限实现跳转到安装页面.
那么企业账号掉的那么厉害我要怎么才能不断的获取新的企业描述文件来实现自动跳转呢?
答案是不是某英吗,获取UDID的.不行就去百度搜一下,这个跳转是不需要对应的证书的.只要不过期就行.
2.超级签的第二部,就是拿到UDID去后台注册.这个注册的话需要一个回调地址,
如果你是在APP端开了一个服务器像某Box那样,
就可以直接存储到Keychain里面,这个注册到苹果开发者账号里面的过程需要后台完成,
有一个签名的老司机说java的签名效率还是比较高的.PHP又被比下去了.
那么怎么注册到苹果后台呢?如果你个ios想玩一下,可以用fastlane.有的
超级签系统也是使用的fastlane进行签名的.
fastlane把双重认证的session获取到,然后存起来每次可以直接拿到
然后进行添加UDID的操作.那么添加以后,可以设置返回.mobieprovision文件和.cer文件.这个可以操作签名就不多说了.
3.第三步,因为是在服务器端签名那么一般默认都是zsign或者codesign进行签名.zsign传说中的是比较高效的,
有的java超级签签系统是双开的zsign(也就是所谓的秒签系统),
那么它服务器签名完就会回调这个浏览器里面的方法,
当我们拿到了安装的plist文件,
可以在浏览器直接安装这个plist里面的ipa文件了.(这个就是Itms协议)


4.第四步 打开app,当然这个app并没有,
在app里面实现UDID获取,那么app里面如何对ipa继续签名呢?
5.通过对浏览器抓包和对app抓包发现人家都对某install接口情有独钟.集成了这个收费的东西,
那么我们能不能实现未安装app然后也实现浏览器传参到app呢
(因为浏览器获取了UDID,在app内部还是需要继续签名的).
以前在ios9-ios10是有的叫SFSafariViewController,当然
如果他好用的话呢,也不会有收费的出来混了.
大家有兴趣的可以多百度百度.
6.那么app是如何实现的签名呢?
答案是zsign谁叫人家跨平台呢.
某那个app他的实现更为高效,让我想继续对他进行研究.
那么成果晚点再说.
先说说app是怎么签名的.先上SDK吧.
AppSignSDK
App端签名
环境配置:
openssl 1.1.1 主要用来证书校验
SSZipArchive SDK 里面已经打进去了.主要用来解压app和压缩app
添加系统库:
libiconv.tbd
libxml2.tbd
liblzma.tbd
libiconv.2.4.0.tbd
libstdc++.tbd
Security.framework
MobileCoreServices.framework
CoreServices.framework
libz.1.2.8.tbd
接口:
+ (int)signIPA:(NSString *)ipa_path
size:(NSString*)size
cer:(NSString *)cer_path
pwd:(NSString *_Nullable)pwd
prov:(NSString *)prov_path
bundleID:(NSString *_Nullable)bundleID
bundleName:(NSString *_Nullable)bundleName
bundleVersion:(NSString *_Nullable)bundleVersion
zipLevel:(NSInteger)zipLevel
output:(NSString *)output_path;
ipa_path: ----- ipa的沙盒路径
size: ------ ipa的大小
cer_path: ----- 证书的沙盒路径
pwd: ------ 证书的密码
prov_path: ---- 描述文件地址
bundleID: ---- 应用的bundleID 可以修改
bundleName: ---- app的名字
bundleVersion: ---- 版本
zipLevel: ---- 压缩层级
output_path: ---- 输出路径
网友评论