修改姓名的時候顯示:
管理員已設置成員無法自行修改姓名。。。。
發現使用越獄手機下載後用短信登錄,驗證賬號密碼的時候報錯
登錄失敗,服務器連接失敗,請重試
可以先用賬號密碼登,手機短信驗證就可以登錄了。
調試一下
搜“個人信息” 頁面左上角文字
031491f8 dd ___CFConstantStringClassReference, 0x7d0, 0x309525c, 0x4 ; u"個人信息", DATA XREF=-[WWKMeInfoTableViewController viewDidLoad]+972, -[WWKTeamDebugViewController reloadDataSource]+322, -[WWKUserInfoTableViewController viewDidLoad]+1528, -[WWKContactProfileController viewDidLoad]+874
可以看到是這個類[WWKMeInfoTableViewController viewDidLoad]
void -[WWKMeInfoTableViewController viewDidLoad](void * self, void * _cmd) {
r0 = self;
r7 = (sp - 0x14) + 0xc;
r4 = sp - 0x60;
asm { bfc r4, #0x0, #0x4 };
sp = r4;
asm { vst1.64 {d8, d9, d10, d11}, [r4, #0x80]! };
asm { vst1.64 {d12, d13, d14, d15}, [r4, #0x80] };
sp = sp - 0x80;
r8 = r0;
r1 = @selector(viewDidLoad);
asm { strd r8, r0, [sp, #0x98 + var_84] };
loc_e08af4(sp + 0x14, r1);
loc_e08aec(@class(ProfileHelper), @selector(refreshCorpBriefInfo:), 0x0);
r4 = loc_e08aec(r8, @selector(type));
sub_e08a2c();
COND = r4 == 0x0;
asm { strd r6, r8, [sp, #0x98 + var_8C] };
if (!COND) {
if (loc_e08aec(r8, @selector(type)) == 0x1) {
loc_e08aec(r8, @selector(initCorpData));
}
}
else {
loc_e08aec(r8, @selector(initDataAndRefresh:), 0x1);
loc_e08aec(@class(NSNotificationCenter), @selector(defaultCenter));
r7 = r7;
r0 = loc_e08af0();
r3 = @selector(OnInfoChange);
r0 = r0;
r1 = @selector(addObserver:selector:name:object:);
asm { strd r2, r5, [sp, #0x98 + var_98] };
loc_e08aec(r0, r1, r8, r3, stack[2008]);
sub_e08ae8();
r8 = stack[2012];
}
(*(*loc_e08aec(@class(ProfileHelper), @selector(currentProfile)) + 0x1c))();
r8->RTX_SYNC = 0x0;
if ((*(int8_t *)((*(*loc_e08aec(@class(ProfileHelper), @selector(currentProfile)) + 0x1c))() + 0x9c) != 0x0) && (*((*(*loc_e08aec(@class(ProfileHelper), @selector(currentProfile)) + 0x1c))() + 0x94) == 0x2)) {
asm { movseq r6, #0x1 };
}
r8->QYH_BIND = 0x0;
if (*(int8_t *)((*(*loc_e08aec(@class(ProfileHelper), @selector(currentProfile)) + 0x1c))() + 0x9c) != 0x0) {
r0 = loc_e08aec(@class(ProfileHelper), @selector(currentProfile));
r0 = (*(*r0 + 0x1c))();
r0 = *(r0 + 0x94);
if (r0 != 0x1) {
asm { movsne r0, #0x0 };
}
}
else {
r0 = 0x0;
}
r8->BIZMAIL_BIND = r0;
r8->OPENAPI_SYNC = (*(*loc_e08aec(@class(ProfileHelper), @selector(currentProfile)) + 0x6c))() ^ 0x1;
loc_e08aec(@class(UIColor), @selector(backgroundGrayColor), *ivar_offset(OPENAPI_SYNC));
loc_e08af0();
loc_e08aec(r8, @selector(tableView));
loc_e08aec(loc_e08af0(), @selector(setBackgroundColor:), stack[2017], 0x3, stack[2008]);
sub_e08ae8();
sub_e08ae8();
loc_e08aec(@class(UIColor), @selector(shortSeparatorColor));
loc_e08af0();
loc_e08aec(stack[2012], @selector(tableView));
r7 = r7;
loc_e08aec(loc_e08af0(), @selector(setSeparatorColor:), stack[2019], 0x5, stack[2008]);
sub_e08ae8();
sub_e08ae8();
r5 = stack[2012];
if (loc_e08aec(r5, stack[2011]) != 0x0) {
loc_e08aec(@class(WWKCustomBuildConfig), @selector(shareInstance));
loc_e08aec(loc_e08af0(), @selector(pairInfoStringWithDisplayName), 0x6);
loc_e08aec(@class(NSString), @selector(stringWithFormat:), 0x3149208, loc_e08af0(), stack[2008]);
r7 = r7;
loc_e08aec(stack[2012], @selector(setTitle:), loc_e08af0());
sub_e08ae8();
sub_e08ae8();
sub_e08ae8();
r5 = stack[2012];
}
else {
loc_e08aec(r5, @selector(setTitle:), 0x31491f8);
}
r5->_suppName = 0x1;
sub_550c8(sub_e08a18(0x14));
r1 = stack[2024];
r5 = stack[2012];
r4 = *ivar_offset(_push_notification_observer);
r0 = *(r5 + r4);
*(r5 + r4) = stack[2024];
if (r0 != 0x0) {
(*(*r0 + 0x8))();
r1 = *(r5 + r4);
}
loc_e08d8c();
loc_e08aec(@class(NSNotificationCenter), @selector(defaultCenter));
r7 = r7;
stack[2025] = loc_e08af0();
r3 = @selector(onPvMergeWillOpen:);
r1 = @selector(addObserver:selector:name:object:);
r0 = stack[2025];
asm { strd r2, r6, [sp, #0x98 + var_98] };
r2 = stack[2012];
loc_e08aec(r0, r1, r2, r3, stack[2008]);
sub_e08ae8();
r5 = stack[2012];
r1 = stack[2011];
if (loc_e08aec(r5, r1) != 0x0) {
loc_e08aec(r5, @selector(navigationItem));
r7 = r7;
stack[2026] = loc_e08af0();
r1 = @selector(setRightBarButtonItem:);
r2 = 0x0;
loc_e08aec(stack[2026], r1, r2);
sub_e08ae8();
}
loc_e08a08(sp + 0x4c, r1, r2, @selector(onPvMergeWillOpen:));
asm { vld1.64 {d8, d9, d10, d11}, [r4, #0x80]! };
asm { vld1.64 {d12, d13, d14, d15}, [r4, #0x80] };
return;
}
不對
通過控制檯日誌可以看到姓名修改頁是WWKNameEditController
[2702:1027:0618/21:05:53.235:W:WWKNavigationController.mm(236)] -------- UI : Push To WWKNameEditController
[2702:1027:0618/21:05:53.905:W:UIViewController+Log.mm(27)] WWKMeInfoTableViewController viewDidDisappear
[2702:1027:0618/21:05:53.906:W:UIViewController+Log.mm(22)] WWKNameEditController viewDidAppear
直接在控制檯 改下試試
還是不可編輯
姓名行是 WWKTextFieldCell
void * -[WWKNameEditController editTextFieldCell](void * self, void * _cmd) {
r0 = self;
r7 = (sp - 0x14) + 0xc;
r4 = sp - 0x60;
asm { bfc r4, #0x0, #0x4 };
sp = r4;
asm { vst1.64 {d8, d9, d10, d11}, [r4, #0x80]! };
asm { vst1.64 {d12, d13, d14, d15}, [r4, #0x80] };
sp = sp - 0x50;
r5 = r0;
r6 = *ivar_offset(_editTextFieldCell);
r4 = *(r5 + r6);
sub_e08a2c(sp + 0x1c, 0x2904ab0);
if (r4 == 0x0) {
r4 = 0xffffffff;
loc_e08aec(@class(WWKTextFieldCell), @selector(class));
sub_e08c08();
loc_e08af0();
loc_e08aec(r5, @selector(tableView));
loc_e08aec(loc_e08af0(), @selector(dequeueReusableCellWithIdentifier:), stack[2052], 0x2, stack[2048]);
r7 = r7;
r0 = loc_e08af0();
asm { ldrd r4, r5, [sp, #-0x8 + 16] };
*(r5 + r4) = r0;
sub_e08ae8(*(r5 + r4), *(r5 + r4));
sub_e08ae8(stack[2053]);
loc_e08aec(*(r5 + r4), @selector(inputTextView), 0x3);
r7 = r7;
loc_e08aec(loc_e08af0(), @selector(setDelegate:), stack[2051]);
sub_e08ae8(stack[2054]);
r0 = sub_e08ae8(stack[2052]);
asm { ldrd r0, r1, [sp, #-0x8 + 16] };
r4 = *(r1 + r0);
}
r4 = sub_e08e28(r4);
loc_e08a08(sp + 0x1c);
r0 = r4;
asm { vld1.64 {d8, d9, d10, d11}, [r4, #0x80]! };
asm { vld1.64 {d12, d13, d14, d15}, [r4, #0x80] };
return r0;
}
void * -[WWKNameEditController tableView:cellForRowAtIndexPath:](void * self, void * _cmd, void * arg2, void * arg3) {
r3 = arg3;
r2 = arg2;
r1 = _cmd;
r0 = self;
r7 = (sp - 0x14) + 0xc;
r4 = sp - 0x60;
asm { bfc r4, #0x0, #0x4 };
sp = r4;
asm { vst1.64 {d8, d9, d10, d11}, [r4, #0x80]! };
asm { vst1.64 {d12, d13, d14, d15}, [r4, #0x80] };
sp = sp - 0x1c0;
stack[2123] = loc_e08af8(r2, r1, r2, r3, stack[2048], stack[2049], stack[2050], stack[2051], stack[2052]);
stack[2124] = loc_e08af8(r3);
sub_e08a2c(sp + 0x18c, ___gxx_personality_sj0, 0x2904b48, @selector(cellTypes), stack[2048]);
stack[2053] = r0;
loc_e08aec(r0, @selector(cellTypes));
loc_e08aec(loc_e08af0(), @selector(objectAtIndexedSubscript:), loc_e08aec(stack[2124], @selector(section), 0x2), 0x3, stack[2048]);
loc_e08aec(loc_e08af0(), @selector(objectAtIndexedSubscript:), loc_e08aec(stack[2124], @selector(row), 0x4));
r7 = r7;
stack[2127] = loc_e08af0();
stack[2054] = loc_e08aec(stack[2127], @selector(intValue), 0x6);
sub_e08ae8(stack[2127]);
sub_e08ae8(stack[2126]);
sub_e08ae8(stack[2125]);
r0 = stack[2054];
if (r0 == 0x2) {
loc_e08aec(@class(WWKRealNameCell), @selector(class));
sub_e08c08();
loc_e08aec(stack[2123], @selector(dequeueReusableCellWithIdentifier:), loc_e08af0(), 0x9, stack[2048]);
r7 = r7;
stack[2129] = loc_e08af0();
r4 = stack[2129];
sub_e08ae8(stack[2128]);
if (stack[2129] == 0x0) {
loc_e08aec(@class(WWKRealNameCell), @selector(alloc), 0xa);
loc_e08aec(@class(WWKRealNameCell), @selector(class));
sub_e08c08();
r7 = r7;
r4 = loc_e08aec(stack[2053], @selector(initWithStyle:reuseIdentifier:), 0x0, loc_e08af0(), stack[2048]);
sub_e08ae8(stack[2129]);
sub_e08ae8(stack[2130]);
}
stack[2131] = r4;
loc_e0a2d4(sp + 0x1c, (*(*loc_e08aec(@class(ProfileHelper), @selector(currentProfile), 0xe) + 0x50))());
loc_e08af8(0x3154678);
r1 = *(int8_t *)stack[2102];
if ((r1 & 0x1) == 0x0) {
asm { lsrseq r1, r1, #0x1 };
}
if (CPU_FLAGS & NE) {
asm { ldrne r1, [r0, #0x4] };
}
if (r1 != 0x0) {
sub_474ae0();
r7 = r7;
r4 = loc_e08af0();
sub_e08ae8(0x3154678);
r2 = 0x2;
}
else {
r4 = 0x3154678;
r1 = *(int8_t *)stack[2103];
if ((r1 & 0x1) == 0x0) {
asm { lsrseq r1, r1, #0x1 };
}
if (CPU_FLAGS & NE) {
asm { ldrne r1, [r0, #0x4] };
}
if (r1 != 0x0) {
sub_474ae0();
r7 = r7;
r4 = loc_e08af0();
sub_e08ae8(0x3154678);
r2 = 0x1;
}
else {
r2 = 0x0;
}
}
loc_e08aec(stack[2131], @selector(setTitle:andSubTitle:andRealNameStatus:), 0x3154658, r4, r2);
r4 = stack[2131];
sub_e08ae8(stack[2054]);
loc_e0a2d0(sp + 0x1c);
}
else {
if (r0 <= 0x1) {
loc_e08aec(stack[2053], @selector(editTextFieldCell));
loc_e08aec(loc_e08af0(), @selector(textLabel), 0x15);
r7 = r7;
loc_e08aec(loc_e08af0(), @selector(setText:), 0x31456a8);
sub_e08ae8(stack[2133]);
sub_e08ae8(stack[2132]);
if (stack[2054] == 0x1) {
asm { moveq r2, r0 };
}
asm { ldrd r1, r0, [sp, #-0x8 + 24] };
loc_e08aec();
loc_e08aec(loc_e08af0(), @selector(inputTextView), 0x18);
r7 = r7;
loc_e08aec(loc_e08af0(), @selector(setPlaceholder:), stack[2050]);
sub_e08ae8(stack[2135]);
sub_e08ae8(stack[2134]);
if (stack[2054] != 0x0) {
r0 = 0x22;
asm { ldrd r1, r0, [sp, #-0x8 + 24] };
loc_e08aec(r0);
loc_e08aec(loc_e08af0(), stack[2051]);
loc_e08aec(loc_e08af0(), @selector(setEnabled:), 0x1);
sub_e08ae8(stack[2142]);
sub_e08ae8(stack[2141]);
loc_e08aec(@class(UIColor), @selector(blackColor), 0x25);
r7 = r7;
loc_e08af0();
r0 = 0x26;
asm { ldrd r1, r0, [sp, #-0x8 + 24] };
loc_e08aec(r0);
loc_e08aec(loc_e08af0(), stack[2051]);
r7 = r7;
loc_e08aec(loc_e08af0(), @selector(setTextColor:), stack[2143], 0x28, stack[2048]);
sub_e08ae8(stack[2145]);
sub_e08ae8(stack[2144]);
}
else {
if (loc_e08aec(stack[2053]->_footerTips, @selector(length), 0x1a) != 0x0) {
r0 = 0x1b;
asm { ldrd r1, r0, [sp, #-0x8 + 24] };
loc_e08aec(r0);
loc_e08aec(loc_e08af0(), stack[2051]);
loc_e08aec(loc_e08af0(), @selector(setEnabled:), 0x0);
sub_e08ae8(stack[2137]);
sub_e08ae8(stack[2136]);
loc_e08aec(@class(UIColor), @selector(subTitleColor), 0x1e);
r7 = r7;
loc_e08af0();
r0 = 0x1f;
asm { ldrd r1, r0, [sp, #-0x8 + 24] };
loc_e08aec(r0);
loc_e08aec(loc_e08af0(), stack[2051]);
r7 = r7;
loc_e08aec(loc_e08af0(), @selector(setTextColor:), stack[2138], 0x21, stack[2048]);
sub_e08ae8(stack[2140]);
sub_e08ae8(stack[2139]);
}
else {
r0 = 0x22;
asm { ldrd r1, r0, [sp, #-0x8 + 24] };
loc_e08aec(r0);
loc_e08aec(loc_e08af0(), stack[2051]);
loc_e08aec(loc_e08af0(), @selector(setEnabled:), 0x1);
sub_e08ae8(stack[2142]);
sub_e08ae8(stack[2141]);
loc_e08aec(@class(UIColor), @selector(blackColor), 0x25);
r7 = r7;
loc_e08af0();
r0 = 0x26;
asm { ldrd r1, r0, [sp, #-0x8 + 24] };
loc_e08aec(r0);
loc_e08aec(loc_e08af0(), stack[2051]);
r7 = r7;
loc_e08aec(loc_e08af0(), @selector(setTextColor:), stack[2143], 0x28, stack[2048]);
sub_e08ae8(stack[2145]);
sub_e08ae8(stack[2144]);
}
}
sub_e08ae8();
r0 = 0x29;
asm { ldrd r1, r0, [sp, #-0x8 + 24] };
loc_e08aec(r0);
r7 = r7;
r4 = loc_e08af0();
}
else {
loc_e08aec(@class(UITableViewCell), @selector(alloc), 0x2a);
r4 = loc_e08aec();
}
}
sub_e08ae8(stack[2124]);
sub_e08ae8(stack[2123]);
r4 = loc_e08b04(r4);
loc_e08a08(sp + 0x18c);
r0 = r4;
asm { vld1.64 {d8, d9, d10, d11}, [r4, #0x80]! };
asm { vld1.64 {d12, d13, d14, d15}, [r4, #0x80] };
return r0;
}
上面代碼可以看到 創建的時候設置了enabled 但是是設置footerTips的
打印輸入框的isEnabled
(lldb) po [0x16a523c0 isEnabled]
nil
(lldb) po [0x16a523c0 setEnabled:YES]
0x00000002
(lldb) po [0x16a523c0 isEnabled]
0x00000001
編輯完之後,點確定就好了。