用于给指定设备进行帐号授权的运行时库
此工程是iOS-Auth的基础运行时支持库
iOSAuthSingle用于通过套接字授权单个设备(主要用于调试)
iOSAuthService用于通过套接字监听授权数据并创建管道及iOSAuthHandle进行授权(主要用于防止运行时错误及内存泄漏)
iOSAuthHandle用于通过管道连接iOSAuthService进行单个设备授权
Library: 扫描当前设备的iTunes库并加载
Handle: 根据iTunes版本设置指定的偏移地址并调用
Network: 通过套接字或管道与客户端或服务器通信
Convert: 十六进制转换
Process: 进程执行函数封装
Exec: 执行入口
客户端: 第一次数据,格式:前4字节udid长度,再4字节FairPlayCertificate长度,再加GrappaSupportInfo长度为0x14,再加FairPlayArg长度0x10,再加udid,再加FairPlayCertificate数据
服务端: 第一次数据,长度是固定的0x54 (84)字节(Grappa)
客户端: 第二次数据,前0x53个字节为Grappa数据,再跟0x15字节为afsync.rq.sig,再跟afsync.rq
服务端: 第二次数据,格式:前面15个字节为/AirFair/sync/afsync.rs.sig,后面的字节为/AirFair/sync/afsync.rs
加载iTunes.dll/iTunesCore.dll以及AirTrafficHost.dll
根据iTunes.dll/iTunesCore.dll版本找到指定的偏移地址(欢迎补充其它版本的偏移地址)
调用 KBSyncMachineKey 获取本机的同步ID
调用 KBSyncLibraryKey 获取库的同步ID
调用 KBSyncTokenCreate 获取同步Token,这里的 SCInfoDir 下必须要求有用iTunes.exe授权过此电脑产生的 SC Info.sidb 和 SC Info.sidd 文件
接收第一个客户端的包,并拆分 UDID、FairPlayCertificate、FairPlayDeviceType 以及 KeyTypeSupportVersion。具体请看 auth_exec_recv_package_1
通过得到的数据调用 AirFairSyncSessionCreate 获得同步Session
使用 UDID 调用 AirFairSyncGrappaCreate 获得 Grappa 数据及ID
将 Grappa 发送至客户端。具体请看 auth_exec_send_package
接收第二个客户端的包,并拆分 Grappa、/AirFair/sync/afsync.rq 以及 /AirFair/sync/afsync.rq.sig。具体请看 auth_exec_recv_package_2
调用 AirFairSyncSetRequest 设置 RQ
调用 AirFairSyncAccountAuthorize 给此请求授权,DSID由使用者自己抓包获取,AppleId会绑定到一个DSID,DSID需要和 SC Info 相匹配
使用设备传回的 Grappa 调用 AirFairSyncGrappaUpdate 去更新随机密钥
调用 AirFairSyncGetResponse 获取答复
通过前面获取的 GrappaID 调用 AirFairSyncCalcSig 去计算 SIG签名
将生成的数据发回客户端设备