可切换环境包新工程报错:“验签RPC接口 加签数据为空“

 

 

 

这个字段的问题

HKELocalEncryptPublicKey

 

 

那它是怎么工作的呢?

 

通过搜索发现只有两个地方用到了此值

000000010267e468         dq         ___CFConstantStringClassReference, 0x7c8, _s_szTable+10234, 0x18 ; "HKELocalEncryptPublicKey", DATA XREF=

-[HKESIPInputField encryptPublicKey]+48, ___19

+[HKEApi sharedApi]_block_invoke+507

 

这2个方法是都是通过objectForInfoDictionaryKey取值的

void * -[HKESIPInputField encryptPublicKey](void * self, void * _cmd) {
    r14 = [[NSBundle mainBundle] retain];
    rbx = [[r14 objectForInfoDictionaryKey:@"HKELocalEncryptPublicKey"] retain];
    [r14 release];
    rax = [rbx autorelease];
    return rax;
}

 

 

void ___19+[HKEApi sharedApi]_block_invoke(void * _block) {
    rax = [HKEApi alloc];
    rax = [rax init];
    rdi = *+[HKEApi sharedApi]::sharedApi;
    *+[HKEApi sharedApi]::sharedApi = rax;
    [rdi release];
    rbx = [NSSearchPathForDirectoriesInDomains(0x5, 0x1, 0x1) retain];
    r15 = [[rbx firstObject] retain];
    [rbx release];
    var_-224 = r15;
    rbx = [NSSearchPathForDirectoriesInDomains(0x9, 0x1, 0x1) retain];
    r14 = [[rbx firstObject] retain];
    [rbx release];
    var_-240 = r14;
    var_-112 = [[NSString stringWithFormat:@"%@/%@", r15, @"CFCA_HKELocal_Data"] retain];
    r9 = @"HKE_Log.log";
    r15 = [[NSString stringWithFormat:@"%@/%@/%@", r14, @"CFCA_HKELocal_Log", r9] retain];
    var_-96 = intrinsic_movaps(var_-96, 0x0);
    *(&var_-96 + 0x10) = 0x0;
    var_-96 = 0x12;
    *(&var_-96 + 0x1) = 0x41434f4c5f454b48;
    *(int8_t *)(&var_-96 + 0x9) = 0x4c;
    *(int8_t *)(&var_-96 + 0xa) = 0x0;
    var_-248 = r15;
    CFCA_SMARTLOG::Init(&var_-96, 0x1000, 0x2);
    if ((var_-96 & 0x1) != 0x0) {
            operator delete(var_-80);
    }
    rbx = objc_retainAutorelease(r15);
    _cfca_mlog_init([rbx UTF8String], 0x14000);
    var_-264 = rbx;
    rbx = [[NSBundle mainBundle] retain];
    r13 = [[rbx objectForInfoDictionaryKey:@"HKELocalEncryptPublicKey"] retain];
    [rbx release];
    var_-232 = r13;
    rbx = [r13 length];
    rcx = [r13 length];
    _MTRACE((rbx == 0x0 ? 0x1 : 0x0) + (rbx == 0x0 ? 0x1 : 0x0), "HKELocalSignPublicKey length is %i", rcx, rcx);
    intrinsic_movaps(var_-96, 0x0);
    var_-96 = 0x12;
    [r13 length];
    CFCA_SMARTLOG::TraceFormat(&var_-96, 0x3, "[sharedApi]HKELocalSignPublicKey length is %i");
    if ((var_-96 & 0x1) != 0x0) {
            operator delete(0x0);
    }
    var_-97 = 0x0;
    r12 = [[NSFileManager defaultManager] retain];
    rbx = [r12 fileExistsAtPath:var_-112 isDirectory:&var_-97];
    [r12 release];
    if (var_-97 != 0x0) {
            rbx = rbx ^ 0x1;
            if (rbx != 0x0) {
                    r13 = [[NSFileManager defaultManager] retain];
                    var_-272 = 0x0;
                    rbx = [r13 createDirectoryAtPath:var_-112 withIntermediateDirectories:0x1 attributes:0x0 error:r9];
                    r12 = [var_-272 retain];
                    [r13 release];
                    r13 = var_-232;
                    if (rbx == 0x0) {
                            rbx = objc_retainAutorelease([[r12 description] retain]);
                            rcx = [rbx UTF8String];
                            _MTRACE(0x2, "Create directory failed, error %s", rcx, rcx);
                            [rbx release];
                            intrinsic_movaps(var_-96, 0x0);
                            var_-96 = 0x12;
                            rbx = objc_retainAutorelease([[r12 description] retain]);
                            [rbx UTF8String];
                            CFCA_SMARTLOG::TraceFormat(&var_-96, 0x3, "[sharedApi]Create directory failed, error %s");
                            [rbx release];
                            if ((var_-96 & 0x1) != 0x0) {
                                    operator delete(0x0);
                            }
                    }
                    [r12 release];
            }
    }
    else {
            r13 = [[NSFileManager defaultManager] retain];
            var_-272 = 0x0;
            rbx = [r13 createDirectoryAtPath:var_-112 withIntermediateDirectories:0x1 attributes:0x0 error:r9];
            r12 = [var_-272 retain];
            [r13 release];
            r13 = var_-232;
            if (rbx == 0x0) {
                    rbx = objc_retainAutorelease([[r12 description] retain]);
                    rcx = [rbx UTF8String];
                    _MTRACE(0x2, "Create directory failed, error %s", rcx, rcx);
                    [rbx release];
                    intrinsic_movaps(var_-96, 0x0);
                    var_-96 = 0x12;
                    rbx = objc_retainAutorelease([[r12 description] retain]);
                    [rbx UTF8String];
                    CFCA_SMARTLOG::TraceFormat(&var_-96, 0x3, "[sharedApi]Create directory failed, error %s");
                    [rbx release];
                    if ((var_-96 & 0x1) != 0x0) {
                            operator delete(0x0);
                    }
            }
            [r12 release];
    }
    if ([r13 length] == 0x0) goto loc_100a61360;

loc_100a61301:
    r14 = [objc_retainAutorelease(r13) UTF8String];
    var_-144 = intrinsic_movaps(var_-144, 0x0);
    var_-128 = 0x0;
    r12 = strlen(r14);
    if (r12 >= 0xfffffffffffffff0) goto loc_100a61676;

loc_100a61343:
    if (r12 < 0x17) {
            r15 = &var_-143;
            *(int8_t *)(r15 + 0xffffffffffffffff) = r12 + r12;
            if (r12 != 0x0) {
                    memcpy(r15, r14, r12);
            }
    }
    else {
            r15 = operator new(r12 + 0x10 & 0xfffffffffffffff0);
            var_-128 = r15;
            var_-144 = r12 + 0x10 & 0xfffffffffffffff0 | 0x1;
            memcpy(r15, r14, r12);
    }
    *(int8_t *)(r15 + r12) = 0x0;
    goto loc_100a613b3;

loc_100a613b3:
    var_-216 = operator new(0x20);
    var_-96 = 0x102c73b28;
    var_-64 = &var_-96;
    r15 = [HKEApi hkeDevicePolicy];
    intrinsic_movaps(var_-208, 0x0);
    rax = objc_retainAutorelease(var_-112);
    var_-256 = rax;
    r12 = [rax UTF8String];
    var_-176 = intrinsic_movaps(var_-176, 0x0);
    var_-160 = 0x0;
    r13 = strlen(r12);
    if (r13 < 0xfffffffffffffff0) {
            if (r13 < 0x17) {
                    rbx = &var_-175;
                    *(int8_t *)(rbx + 0xffffffffffffffff) = r13 + r13;
                    r14 = var_-216;
                    if (r13 != 0x0) {
                            memcpy(rbx, r12, r13);
                    }
            }
            else {
                    rbx = operator new(r13 + 0x10 & 0xfffffffffffffff0);
                    var_-160 = rbx;
                    var_-176 = r13 + 0x10 & 0xfffffffffffffff0 | 0x1;
                    r14 = var_-216;
                    memcpy(rbx, r12, r13);
            }
            var_-208 = 0xe;
            *(int8_t *)(rbx + r13) = 0x0;
            stack[2048] = &var_-144;
            rbx = &var_-96;
            CFCA::HKE::HKEKit::HKEKit(r14, rbx, r15, 0x2, &var_-208, &var_-176);
            *+[HKEApi sharedApi]::sharedApi->_hkeKitHandle = r14;
            r14 = var_-224;
            r15 = var_-232;
            if ((var_-176 & 0x1) != 0x0) {
                    operator delete(var_-160);
            }
            if ((0xe & 0x1) != 0x0) {
                    operator delete(0x0);
            }
            rdi = var_-64;
            if (rdi != rbx) {
                    if (rdi != 0x0) {
                            (*(*rdi + 0x28))();
                    }
            }
            else {
                    (*(*rdi + 0x20))();
            }
            if (*+[HKEApi sharedApi]::sharedApi->_hkeKitHandle == 0x0) {
                    _MTRACE(0x2, "New HKEKit handle failed");
                    var_-96 = intrinsic_movaps(var_-96, 0x0);
                    *(&var_-96 + 0x10) = 0x0;
                    var_-96 = 0x12;
                    *(&var_-96 + 0x1) = 0x41434f4c5f454b48;
                    *(int8_t *)(&var_-96 + 0x9) = 0x4c;
                    *(int8_t *)(&var_-96 + 0xa) = 0x0;
                    CFCA_SMARTLOG::TraceFormat(&var_-96, 0x3, "[sharedApi]New HKEKit handle failed");
                    r14 = var_-224;
                    if ((var_-96 & 0x1) != 0x0) {
                            operator delete(0x0);
                    }
            }
            if ((var_-144 & 0x1) != 0x0) {
                    operator delete(var_-128);
            }
            [r15 release];
            [var_-264 release];
            [var_-256 release];
            [var_-240 release];
            [r14 release];
            if (*___stack_chk_guard != *___stack_chk_guard) {
                    __stack_chk_fail();
            }
    }
    else {
            std::__1::__basic_string_common<true>::__throw_length_error(&var_-176);
            __stack_chk_fail();
    }
    return;

loc_100a61676:
    r15 = std::__1::__basic_string_common<true>::__throw_length_error(&var_-144);
    if ((var_-96 & 0x1) != 0x0) {
            operator delete(0x0);
    }
    [r12 release];
    [var_-232 release];
    [var_-248 release];
    [var_-112 release];
    [var_-240 release];
    [var_-224 release];
    _Unwind_Resume(r15);
    return;

loc_100a61360:
    var_-144 = intrinsic_movaps(var_-144, 0x0);
    var_-128 = 0x0;
    goto loc_100a613b3;
}

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值