iOS超级签名流程及代码(php版本)

1,首先要获取用户唯一识别码udid,代码如下:
//获取UDID
public function get_udid()
{
$data = file_get_contents(‘php://input’);

    //file_put_contents('./udid.txt', $data);
    $plistBegin = '';
    $pos1 = strpos($data, $plistBegin);
    $pos2 = strpos($data, $plistEnd);
    $data2 = substr($data, $pos1, $pos2 - $pos1);
    $xml = xml_parser_create();
    xml_parse_into_struct($xml, $data2, $vs);
    xml_parser_free($xml);
    $UDID = "";
    $CHALLENGE = "";
    $DEVICE_NAME = "";
    $DEVICE_PRODUCT = "";
    $DEVICE_VERSION = "";
    $iterator = 0;
    $arrayCleaned = array();
    foreach ($vs as $v) {
        if ($v['level'] == 3 && $v['type'] == 'complete') {
            $arrayCleaned[] = $v;
        }
        $iterator++;
    }
    $data = "";
    $iterator = 0;
    foreach ($arrayCleaned as $elem) {
        $data .= "\n==" . $elem['tag'] . " -> " . $elem['value'] . "
"; switch ($elem['value']) { case "CHALLENGE": $CHALLENGE = $arrayCleaned[$iterator + 1]['value']; break; case "DEVICE_NAME": $DEVICE_NAME = $arrayCleaned[$iterator + 1]['value']; break; case "PRODUCT": $DEVICE_PRODUCT = $arrayCleaned[$iterator + 1]['value']; break; case "UDID": $UDID = $arrayCleaned[$iterator + 1]['value']; break; case "VERSION": $DEVICE_VERSION = $arrayCleaned[$iterator + 1]['value']; break; } $iterator++; } $app_id = intval(input('param.app_id')); $this->redirect(get_site_url() . "/user/install/udid_redirect?udid=" . $UDID . '&app_id=' . $app_id, 301); } 注意:一定要做301中转

2,拿到udid后就可以把这个udid进行签名:
echo ‘export PATH= P A T H : / u s r / l o c a l / s b i n : / u s r / l o c a l / b i n : / u s r / s b i n : / u s r / b i n : / r o o t / b i n ; i s i g n − c ′ . PATH:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin;isign -c '. PATH:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin;isignc.absolute_path.‘public/spcer/’. c e r t i f i c a t e r e c o r d [ ′ i d ′ ] . ′ c e r t i f i c a t e . p e m − k ′ . certificate_record['id'].'certificate.pem -k '. certificaterecord[id].certificate.pemk.absolute_path.‘public/spcer/’. c e r t i f i c a t e r e c o r d [ ′ i d ′ ] . ′ k e y . p e m − p " ′ . certificate_record['id'].'key.pem -p "'. certificaterecord[id].key.pemp".files.’" -o ‘. a b s o l u t e p a t h . ′ p u b l i c / u p l o a d / s u p e r s i g n a t u r e i p a / ′ . absolute_path.'public/upload/super_signature_ipa/'. absolutepath.public/upload/supersignatureipa/.udid.md5( a p p [ ′ b u n d l e ′ ] ) . app['bundle']). app[bundle]).app[‘er_logo’].’.ipa "’. i p a ; 签 名 的 工 具 是 使 用 的 开 源 的 s i g n , 但 是 s i g n 对 部 分 a p p 会 有 一 些 问 题 , 此 外 还 有 一 个 开 源 的 苹 果 签 名 工 具 是 z s i g n , 关 于 z s i g n 和 s i g n 的 使 用 这 里 不 做 过 多 说 明 , 网 上 有 很 多 的 介 绍 方 法 。 z s i g n 的 使 用 代 码 : e x e c ( ′ / w w w / w w w r o o t / z s i g n / z s i g n / z s i g n − k ′ . ipa; 签名的工具是使用的开源的sign,但是sign对部分app会有一些问题,此外还有一个开源的苹果签名工具是zsign,关于zsign和sign的使用这里不做过多说明,网上有很多的介绍方法。 zsign的使用代码: exec('/www/wwwroot/zsign/zsign/zsign -k '. ipa;使signsignappzsign,zsignsign使zsign使exec(/www/wwwroot/zsign/zsign/zsignk.certPath.’ -p ‘. c e r t P a s s w o r d . ′ − m ′ . certPassword.' -m '. certPassword.m.files.’ -o ‘.KaTeX parse error: Double superscript at position 11: ipaPath.' '̲.ipa.’ 2>&1’, o u t , out, out,status);
签名后的文件就可以进行下载安装了。
源码和沟通可以联系我,Q 124 142 1958

你可能感兴趣的:(iOS超级签名流程及代码(php版本))