iOS - 全民K歌 KSong逆向分析架構(gòu)、啟動(dòng)優(yōu)化處理

### UI結(jié)構(gòu)

- 啟動(dòng)圖 UIView包裝 GDTSplashAlignImageView

- **首頁kSUScrollView**

? -? **推薦: KSUITableView**

? ? - KSLayoutableTimelineFeedCellV2: KSLayoutableFeedBaseCell

? ? ? ? - KSAdapterImageView 動(dòng)畫ImageView

? - **關(guān)注:KSUITableView**

? ? - KSBannerEntryView: KSBaseVuew 頂部橫向collectionview

? ? - KSLayoutableTimelineFeedCellV2:KSLayoutableFeedBaseCell? 內(nèi)容cell

? ? - KSLayoutableCycleScollFeedCell: KSLaoutableFeedCell

? - **直播:KSEntertainmentView:KSBaseView**

? ? - KSHippyWrapperView: UIView

? ? ? - RCTRootView: UIView (RN: RCTBridge通信)

? ? ? ? - RCTBaseListView: UIView

? ? ? ? ? - UITableView

? ? ? ? ? ? - RCTBaseListCell

? ? ? ? ? ? ? ? - RCTBaseListItemView: UIView cell里封裝的所有UI空間

? ? ? ? ? ? ? ? ? ? - RCTView:UIView(封裝的BaseView,內(nèi)有切圓角等相關(guān)處理)

? ? ? ? ? ? ? ? ? ? ? - RCTBackgroundImageCacheManager:NSObject圖片加載、展示、緩存、查找緩存

? - **北京(附近推薦): KSUITableView**

? ? - KSongRefreshScrollViewHeader

? ? - KSongLoadMoreScrollViewFooterView

? ? - KSLayoutableTimelineFeedCellV2: KSLayoutableFeedBaseCell

? ? ? - KSAdapterImageView

- **直播頁**

? - KSLiveShowPageScrollView

? ? - KSLiveShowVideoCantainView:UIVIew 直播封裝View

? ? ? - KSLiveShowVideoCDNView:UIView

? ? ? ? - GPUImageView

RCTRootView: Ksong、抖音

### 啟動(dòng)

- **[KSAppDelegate didFinishLaunchingWithOptions]**

```

//1. launch 初始化,記錄啟動(dòng)時(shí)間等

[KSLaunchManager sharedManager]finishStageTimer: withLog:@"Finish launchingWithOptions"];

[KSLaunchManager sharedManager] startStageTimer: withLog:@"Start init"];

[KSLaunchManager sharedManager] setIsStartApp]

....

// 2. 自動(dòng)播放配置

setFeedAutoPlaySet

setFeedPreviewPlaySet

? //NSUserDefaults_FeedPreviewPlaySetting(settingvc)

//3. 數(shù)據(jù)合并前

runLaunchTaskBeforeDatabaseComplatibleCheck];

? //[KSLaunchManager executeInMain: as:@"disableLandscapeRotation"] ^ {

? //}

? //InitWXApiWrapper

? //setupKSImgProcEnv

? //KSPlugDeviveStatisManagerSetupObserver

? //[KSLaunchManager sharedManager] finishStageTimer: withLog:@"finish runLaunchTaskBeforeDatabaseComplatibleCheck"]

? ...

//4. 初始化主界面

bool [KSCoredataManager sharedInstance] isDataBaseCompatible

if isDataBaseCompatible {

? executeInMain: as:@"setupManagedObjectContexts"];

? //log

? [WnsSdkHelper sharedInstance]

? //展示隱私彈窗,rootvc

? checkAndShowPrivacyGuideIfNeeded

} else {

// 數(shù)據(jù)遷移vc

[KSDBMigrationNavVC alloc] initWithRootViewController:

setRootViewController:

//數(shù)據(jù)遷移...

setMigrationStatus

dispatch_async(global_queue) {

}

....

}

```

### SDK

ImSDK.framework

KSVideoPlayer

Lottie

```

bool -[KSAppDelegate application:didFinishLaunchingWithOptions:](void * self, void * _cmd, void * arg2, void * arg3) {

? ? r31 = r31 - 0xc0;

? ? *(r31 + 0x60) = r28;

? ? *(0x70 + r31) = r27;

? ? *(r31 + 0x70) = r26;

? ? *(0x80 + r31) = r25;

? ? *(r31 + 0x80) = r24;

? ? *(0x90 + r31) = r23;

? ? *(r31 + 0x90) = r22;

? ? *(0xa0 + r31) = r21;

? ? *(r31 + 0xa0) = r20;

? ? *(0xb0 + r31) = r19;

? ? *(r31 + 0xb0) = r29;

? ? *(0xc0 + r31) = r30;

? ? r20 = self;

? ? *(r31 + 0x58) = *___stack_chk_guard;

? ? r19 = [arg3 retain];

? ? r0 = [*objc_cls_ref_KSLaunchManager sharedManager];

? ? r0 = [r0 retain];

? ? [r0 finishStageTimer:zero_extend_64(0x0) withLog:@"Finish launchingWithOptions"];

? ? [r0 release];

? ? r0 = [*objc_cls_ref_KSLaunchManager sharedManager];

? ? r0 = [r0 retain];

? ? [r0 startStageTimer:zero_extend_64(0x1) withLog:@"Start init"];

? ? [r0 release];

? ? [r20 setLaunchOptionsStore:r19];

? ? r0 = [KSLaunchIdManager sharedManager];

? ? r0 = [r0 retain];

? ? [r0 setIsStartApp:zero_extend_64(0x1)];

? ? [r0 release];

? ? r0 = [KSLaunchIdManager sharedManager];

? ? r0 = [r0 retain];

? ? [r0 setLaunchOptions:r19];

? ? [r0 release];

? ? r1 = @selector(setFeedAutoPlaySet:);

? ? r0 = r20;

? ? asm { movn? ? ? x2, #0x0 };

? ? objc_msgSend(r0, r1);

? ? r1 = @selector(setFeedPreviewPlaySet:);

? ? r0 = r20;

? ? asm { movn? ? ? x2, #0x0 };

? ? objc_msgSend(r0, r1);

? ? [r20 runLaunchTaskBeforeDatabaseComplatibleCheck];

? ? r0 = [KSCoredataManager sharedInstance];

? ? r29 = r29;

? ? r0 = [r0 retain];

? ? r24 = [r0 isDataBaseCompatible];

? ? [r0 release];

? ? r0 = *(r25 + 0x8f0);

? ? if (r24 != 0x0) {

? ? ? ? ? ? [r0 executeInMain:0x1074e69c0 as:@"setupManagedObjectContexts"];

? ? ? ? ? ? if ([KSWnsConfigManager boolConfig_Switch:@"EnableWnsLogOptimize"] != 0x0) {

? ? ? ? ? ? ? ? ? ? r0 = [WnsLoggerWrapper sharedInstance];

? ? ? ? ? ? ? ? ? ? r29 = r29;

? ? ? ? ? ? ? ? ? ? r0 = [r0 retain];

? ? ? ? ? ? ? ? ? ? [r0 setPrefix:@"app"];

? ? ? ? ? ? ? ? ? ? [r0 release];

? ? ? ? ? ? }

? ? ? ? ? ? [[WnsSdkHelper sharedInstance] retain];

? ? ? ? ? ? *(r31 + 0x48) = @"KS";

? ? ? ? ? ? *(0x58 + r31) = @"INFO";

? ? ? ? ? ? [[NSDictionary dictionaryWithObjects:r31 + 0x50 forKeys:r31 + 0x48 count:stack[2048]] retain];

? ? ? ? ? ? [KSWnsConfigManager boolConfig_Switch:@"EnableWnsLogOptimize"];

? ? ? ? ? ? r1 = @selector(log:file:func:line:module:EFDict:msg:);

? ? ? ? ? ? asm { stp? ? ? ? x8, x0, sp };

? ? ? ? ? ? objc_msgSend(r21, r1);

? ? ? ? ? ? [r23 release];

? ? ? ? ? ? [r21 release];

? ? ? ? ? ? *(r31 + 0x18) = __NSConcreteStackBlock;

? ? ? ? ? ? *(r31 + 0x20) = *0x106e17a70;

? ? ? ? ? ? *(r31 + 0x28) = 0x101f6d4cc;

? ? ? ? ? ? *(0x38 + r31) = 0x1074add78;

? ? ? ? ? ? *(r31 + 0x38) = r20;

? ? ? ? ? ? *(r31 + 0x40) = [r19 retain];

? ? ? ? ? ? [r20 checkAndShowPrivacyGuideIfNeeded:r31 + 0x18];

? ? ? ? ? ? r0 = *(r31 + 0x40);

? ? }

? ? else {

? ? ? ? ? ? r0 = [r0 sharedManager];

? ? ? ? ? ? r0 = [r0 retain];

? ? ? ? ? ? [r0 abort];

? ? ? ? ? ? [r0 release];

? ? ? ? ? ? r0 = [UIApplication sharedApplication];

? ? ? ? ? ? r0 = [r0 retain];

? ? ? ? ? ? [r0 setStatusBarHidden:zero_extend_64(0x0) withAnimation:zero_extend_64(0x0)];

? ? ? ? ? ? [r0 release];

? ? ? ? ? ? r0 = [r20 window];

? ? ? ? ? ? r29 = r29;

? ? ? ? ? ? r0 = [r0 retain];

? ? ? ? ? ? [r0 release];

? ? ? ? ? ? if (r0 == 0x0) {

? ? ? ? ? ? ? ? ? ? [r20 generateWindow];

? ? ? ? ? ? }

? ? ? ? ? ? r25 = [[UIViewController alloc] init];

? ? ? ? ? ? r0 = [KSDBMigrationNavVC alloc];

? ? ? ? ? ? r0 = [r0 initWithRootViewController:r25];

? ? ? ? ? ? r26 = r0;

? ? ? ? ? ? [r0 setNavigationBarHidden:zero_extend_64(0x1)];

? ? ? ? ? ? r0 = [r20 window];

? ? ? ? ? ? r0 = [r0 retain];

? ? ? ? ? ? [r0 setRootViewController:r26];

? ? ? ? ? ? [r27 release];

? ? ? ? ? ? [r26 release];

? ? ? ? ? ? [r25 release];

? ? ? ? ? ? r23 = [[KSDBMigrationViewController alloc] init];

? ? ? ? ? ? [r20 setDataBaseMigrationVC:r23];

? ? ? ? ? ? [r23 release];

? ? ? ? ? ? r23 = [[r20 dataBaseMigrationVC] retain];

? ? ? ? ? ? r0 = [r20 window];

? ? ? ? ? ? r0 = [r0 retain];

? ? ? ? ? ? [r0 setRootViewController:r23];

? ? ? ? ? ? [r22 release];

? ? ? ? ? ? [r23 release];

? ? ? ? ? ? r0 = [KSCoredataManager sharedInstance];

? ? ? ? ? ? r0 = [r0 retain];

? ? ? ? ? ? [r0 setDelegate:r20];

? ? ? ? ? ? [r0 release];

? ? ? ? ? ? r0 = [KSCoredataManager sharedInstance];

? ? ? ? ? ? r0 = [r0 retain];

? ? ? ? ? ? [r0 setMigrationStatus:zero_extend_64(0x1)];

? ? ? ? ? ? [r0 release];

? ? ? ? ? ? r0 = dispatch_get_global_queue(zero_extend_64(0x2), zero_extend_64(0x0));

? ? ? ? ? ? r0 = [r0 retain];

? ? ? ? ? ? dispatch_async(r0, 0x1074e69e0);

? ? ? ? ? ? r0 = r20;

? ? }

? ? [r0 release];

? ? [r19 release];

? ? if (*___stack_chk_guard == *(r31 + 0x58)) {

? ? ? ? ? ? r0 = zero_extend_64(0x1);

? ? }

? ? else {

? ? ? ? ? ? r0 = __stack_chk_fail();

? ? }

? ? return r0;

}

```

```

void -[KSAppDelegate checkAndShowPrivacyGuideIfNeeded:](void * self, void * _cmd, void * arg2) {

? ? r31 = r31 - 0x80;

? ? *(r31 + 0x30) = r26;

? ? *(0x40 + r31) = r25;

? ? *(r31 + 0x40) = r24;

? ? *(0x50 + r31) = r23;

? ? *(r31 + 0x50) = r22;

? ? *(0x60 + r31) = r21;

? ? *(r31 + 0x60) = r20;

? ? *(0x70 + r31) = r19;

? ? *(r31 + 0x70) = r29;

? ? *(0x80 + r31) = r30;

? ? r29 = r31 + 0x70;

? ? r20 = self;

? ? r19 = [arg2 retain];

? ? if ([r20 hasUserAgreePrivacyGuide] != 0x0) {

? ? ? ? ? ? if (r19 != 0x0) {

? ? ? ? ? ? ? ? ? ? (*(r19 + 0x10))(r19);

? ? ? ? ? ? }

? ? }

? ? else {

? ? ? ? ? ? r0 = [KSLaunchManager sharedManager];

? ? ? ? ? ? r0 = [r0 retain];

? ? ? ? ? ? [r0 abort];

? ? ? ? ? ? [r0 release];

? ? ? ? ? ? [r20 changeWebViewUserAgent];

? ? ? ? ? ? r0 = [r20 window];

? ? ? ? ? ? r29 = r29;

? ? ? ? ? ? r0 = [r0 retain];

? ? ? ? ? ? [r0 release];

? ? ? ? ? ? if (r0 == 0x0) {

? ? ? ? ? ? ? ? ? ? [r20 generateWindow];

? ? ? ? ? ? }

? ? ? ? ? ? r21 = [[KSongBlankViewController alloc] init];

? ? ? ? ? ? r0 = [KSBaseNavigationController alloc];

? ? ? ? ? ? r0 = [r0 initWithRootViewController:r21];

? ? ? ? ? ? r22 = r0;

? ? ? ? ? ? [r0 setNavigationBarHidden:zero_extend_64(0x1)];

? ? ? ? ? ? [r22 setSmartSupportAutorotate:zero_extend_64(0x1)];

? ? ? ? ? ? r0 = [r20 window];

? ? ? ? ? ? r0 = [r0 retain];

? ? ? ? ? ? [r0 setRootViewController:r22];

? ? ? ? ? ? [r0 release];

? ? ? ? ? ? r23 = [[KSOperationalDialog alloc] init];

? ? ? ? ? ? r25 = [objc_msgSend(@class(LanguageHelper), @selector(textForKey:)) retain];

? ? ? ? ? ? [r23 setHeadingCaption:r25];

? ? ? ? ? ? [r25 release];

? ? ? ? ? ? r25 = [[r20 createRichTextDescView:r23] retain];

? ? ? ? ? ? [r23 addContentView:r25];

? ? ? ? ? ? [r25 release];

? ? ? ? ? ? r25 = [objc_msgSend(@class(LanguageHelper), @selector(textForKey:)) retain];

? ? ? ? ? ? *(r31 + 0x8) = __NSConcreteStackBlock;

? ? ? ? ? ? *(r31 + 0x10) = *0x106e17a70;

? ? ? ? ? ? *(r31 + 0x18) = 0x1022ce604;

? ? ? ? ? ? *(0x28 + r31) = 0x1074c2500;

? ? ? ? ? ? *(r31 + 0x28) = [r19 retain];

? ? ? ? ? ? [r23 addControlButton:r25 emphasis:zero_extend_64(0x1) callback:stack[2048]];

? ? ? ? ? ? [r25 release];

? ? ? ? ? ? r24 = [objc_msgSend(@class(LanguageHelper), @selector(textForKey:)) retain];

? ? ? ? ? ? [r23 addControlLinkButton:r24 callback:0x1074ea818];

? ? ? ? ? ? [r24 release];

? ? ? ? ? ? r24 = [[r21 view] retain];

? ? ? ? ? ? [r23 showInView:r24];

? ? ? ? ? ? [r24 release];

? ? ? ? ? ? [r20 setPrivacyGuideDialog:r23];

? ? ? ? ? ? [*(r31 + 0x28) release];

? ? ? ? ? ? [r23 release];

? ? ? ? ? ? [r22 release];

? ? ? ? ? ? [r21 release];

? ? }

? ? [r19 release];

? ? return;

}

```

```

bool -[KSAppDelegate didFinishLaunchingWithOptions:](void * self, void * _cmd, void * arg2) {

? ? r31 = r31 - 0x140;

? ? *(r31 + 0xd0) = d9;

? ? *(0xe0 + r31) = d8;

? ? *(r31 + 0xe0) = r28;

? ? *(0xf0 + r31) = r27;

? ? *(r31 + 0xf0) = r26;

? ? *(0x100 + r31) = r25;

? ? *(r31 + 0x100) = r24;

? ? *(0x110 + r31) = r23;

? ? *(r31 + 0x110) = r22;

? ? *(0x120 + r31) = r21;

? ? *(r31 + 0x120) = r20;

? ? *(0x130 + r31) = r19;

? ? *(r31 + 0x130) = r29;

? ? *(0x140 + r31) = r30;

? ? *(r31 + 0xc0) = *___stack_chk_guard;

? ? *(r31 + 0x40) = [arg2 retain];

? ? r22 = [[WnsSdkHelper sharedInstance] retain];

? ? *(r31 + 0xb0) = @"KS";

? ? *(r31 + 0xc0) = @"INFO";

? ? *(r31 + 0x28) = @selector(dictionaryWithObjects:forKeys:count:);

? ? [[NSDictionary dictionaryWithObjects:r31 + 0x130 - 0x78 forKeys:r31 + 0x130 - 0x80 count:stack[2048]] retain];

? ? r0 = [KSVersion getGitCommitHash];

? ? [r0 retain];

? ? r1 = @selector(log:file:func:line:module:EFDict:msg:);

? ? asm { stp? ? ? ? x8, x0, sp };

? ? *(r31 + 0x20) = r1;

? ? objc_msgSend(r22, r1);

? ? [r23 release];

? ? [r19 release];

? ? [r22 release];

? ? r26 = [[NSUserDefaults standardUserDefaults] retain];

? ? r0 = objc_msgSend(@class(WnsConfigManager), r21);

? ? r0 = [r0 retain];

? ? r0 = [r0 appConfig];

? ? r0 = [r0 retain];

? ? r0 = [r0 basicConfig];

? ? r0 = [r0 retain];

? ? [r26 setObject:[[r0 savedAppVer] retain] forKey:@"LastAppVersion"];

? ? [r28 release];

? ? [r27 release];

? ? [r23 release];

? ? [r19 release];

? ? [r26 release];

? ? [[[NSUserDefaults standardUserDefaults] retain] setObject:[[NSDate date] retain] forKey:@"LastLaunchDate"];

? ? [r22 release];

? ? [r19 release];

? ? [r24 runLaunchTaskBeforeSafeModeCheck:*(r31 + 0x40)];

? ? r0 = [WnsProtocolObjManager defaultManager];

? ? r0 = [r0 retain];

? ? [r0 setCheckCallChildThread:zero_extend_64(0x1)];

? ? [r0 release];

? ? *(r31 + 0x38) = r24;

? ? objc_initWeak(r31 + 0x98, r24);

? ? *(r31 + 0x70) = __NSConcreteStackBlock;

? ? *(r31 + 0x78) = *0x106e17a70;

? ? *(r31 + 0x80) = 0x101f6e274;

? ? *(0x90 + r31) = 0x1074e6a00;

? ? *(r31 + 0x30) = r31 + 0x90;

? ? objc_copyWeak(r31 + 0x90, r31 + 0x98);

? ? r0 = [WnsProtocolObjManager defaultManager];

? ? r0 = [r0 retain];

? ? [r0 setChildThreadBlock:r31 + 0x70];

? ? [r0 release];

? ? r0 = objc_msgSend(@class(QzoneSafeModeMgr), r21);

? ? r29 = r29;

? ? r0 = [r0 retain];

? ? r27 = r0;

? ? if ([r0 needEnterSafeMode] != 0x0) {

? ? ? ? ? ? [r27 release];

? ? ? ? ? ? r27 = [[WnsSdkHelper sharedInstance] retain];

? ? ? ? ? ? *(r29 + 0xffffffffffffff70) = @"KS";

? ? ? ? ? ? *(r29 + 0xffffffffffffff78) = @"INFO";

? ? ? ? ? ? [objc_msgSend(@class(NSDictionary), *(r31 + 0x28)) retain];

? ? ? ? ? ? r0 = [QzoneSafeModeMgr sharedInstance];

? ? ? ? ? ? r0 = [r0 retain];

? ? ? ? ? ? r22 = [r0 needEnterSafeMode];

? ? ? ? ? ? r0 = [WnsConfigManager sharedInstance];

? ? ? ? ? ? r0 = [r0 retain];

? ? ? ? ? ? r0 = [r0 appConfig];

? ? ? ? ? ? r0 = [r0 retain];

? ? ? ? ? ? r0 = [r0 kSongSetting];

? ? ? ? ? ? r0 = [r0 retain];

? ? ? ? ? ? r0 = [r0 enableSafeModeForDebug];

? ? ? ? ? ? *(r31 + 0x8) = r22;

? ? ? ? ? ? *(0x18 + r31) = r0;

? ? ? ? ? ? *r31 = 0x107701748;

? ? ? ? ? ? objc_msgSend(r27, *(r31 + 0x20));

? ? ? ? ? ? [r19 release];

? ? ? ? ? ? [r25 release];

? ? ? ? ? ? [r26 release];

? ? ? ? ? ? [r28 release];

? ? ? ? ? ? [r24 release];

? ? ? ? ? ? [r27 release];

? ? ? ? ? ? r0 = [KSLaunchManager sharedManager];

? ? ? ? ? ? r0 = [r0 retain];

? ? ? ? ? ? [r0 abort];

? ? ? ? ? ? [r0 release];

? ? ? ? ? ? [*(r31 + 0x38) setLaunchOptionsStore:*(0x48 + r31)];

? ? ? ? ? ? r0 = [KSLaunchIdManager sharedManager];

? ? ? ? ? ? r0 = [r0 retain];

? ? ? ? ? ? [r0 setIsStartApp:zero_extend_64(0x1)];

? ? ? ? ? ? [r0 release];

? ? ? ? ? ? r0 = [KSLaunchIdManager sharedManager];

? ? ? ? ? ? r0 = [r0 retain];

? ? ? ? ? ? [r0 setLaunchOptions:*(r31 + 0x40)];

? ? ? ? ? ? [r0 release];

? ? ? ? ? ? [*(r31 + 0x38) enterSafeModeUI];

? ? ? ? ? ? r0 = [QzoneSafeModeMgr sharedInstance];

? ? ? ? ? ? r29 = r29;

? ? ? ? ? ? r0 = [r0 retain];

? ? ? ? ? ? [r0 reportEnterSecondLevelSafeMode];

? ? ? ? ? ? [r0 release];

? ? }

? ? else {

? ? ? ? ? ? r0 = [WnsConfigManager sharedInstance];

? ? ? ? ? ? r0 = [r0 retain];

? ? ? ? ? ? r22 = r0;

? ? ? ? ? ? r0 = [r0 appConfig];

? ? ? ? ? ? r0 = [r0 retain];

? ? ? ? ? ? r19 = r0;

? ? ? ? ? ? r0 = [r0 kSongSetting];

? ? ? ? ? ? r29 = r29;

? ? ? ? ? ? r0 = [r0 retain];

? ? ? ? ? ? r28 = [r0 enableSafeModeForDebug];

? ? ? ? ? ? [r0 release];

? ? ? ? ? ? [r19 release];

? ? ? ? ? ? [r22 release];

? ? ? ? ? ? [r27 release];

? ? ? ? ? ? if (r28 != 0x0) {

? ? ? ? ? ? ? ? ? ? r27 = [[WnsSdkHelper sharedInstance] retain];

? ? ? ? ? ? ? ? ? ? *(r29 + 0xffffffffffffff70) = @"KS";

? ? ? ? ? ? ? ? ? ? *(r29 + 0xffffffffffffff78) = @"INFO";

? ? ? ? ? ? ? ? ? ? [objc_msgSend(@class(NSDictionary), *(r31 + 0x28)) retain];

? ? ? ? ? ? ? ? ? ? r0 = [QzoneSafeModeMgr sharedInstance];

? ? ? ? ? ? ? ? ? ? r0 = [r0 retain];

? ? ? ? ? ? ? ? ? ? r22 = [r0 needEnterSafeMode];

? ? ? ? ? ? ? ? ? ? r0 = [WnsConfigManager sharedInstance];

? ? ? ? ? ? ? ? ? ? r0 = [r0 retain];

? ? ? ? ? ? ? ? ? ? r0 = [r0 appConfig];

? ? ? ? ? ? ? ? ? ? r0 = [r0 retain];

? ? ? ? ? ? ? ? ? ? r0 = [r0 kSongSetting];

? ? ? ? ? ? ? ? ? ? r0 = [r0 retain];

? ? ? ? ? ? ? ? ? ? r0 = [r0 enableSafeModeForDebug];

? ? ? ? ? ? ? ? ? ? *(r31 + 0x8) = r22;

? ? ? ? ? ? ? ? ? ? *(0x18 + r31) = r0;

? ? ? ? ? ? ? ? ? ? *r31 = 0x107701748;

? ? ? ? ? ? ? ? ? ? objc_msgSend(r27, *(r31 + 0x20));

? ? ? ? ? ? ? ? ? ? [r19 release];

? ? ? ? ? ? ? ? ? ? [r25 release];

? ? ? ? ? ? ? ? ? ? [r26 release];

? ? ? ? ? ? ? ? ? ? [r28 release];

? ? ? ? ? ? ? ? ? ? [r24 release];

? ? ? ? ? ? ? ? ? ? [r27 release];

? ? ? ? ? ? ? ? ? ? r0 = [KSLaunchManager sharedManager];

? ? ? ? ? ? ? ? ? ? r0 = [r0 retain];

? ? ? ? ? ? ? ? ? ? [r0 abort];

? ? ? ? ? ? ? ? ? ? [r0 release];

? ? ? ? ? ? ? ? ? ? [*(r31 + 0x38) setLaunchOptionsStore:*(0x48 + r31)];

? ? ? ? ? ? ? ? ? ? r0 = [KSLaunchIdManager sharedManager];

? ? ? ? ? ? ? ? ? ? r0 = [r0 retain];

? ? ? ? ? ? ? ? ? ? [r0 setIsStartApp:zero_extend_64(0x1)];

? ? ? ? ? ? ? ? ? ? [r0 release];

? ? ? ? ? ? ? ? ? ? r0 = [KSLaunchIdManager sharedManager];

? ? ? ? ? ? ? ? ? ? r0 = [r0 retain];

? ? ? ? ? ? ? ? ? ? [r0 setLaunchOptions:*(r31 + 0x40)];

? ? ? ? ? ? ? ? ? ? [r0 release];

? ? ? ? ? ? ? ? ? ? [*(r31 + 0x38) enterSafeModeUI];

? ? ? ? ? ? ? ? ? ? r0 = [QzoneSafeModeMgr sharedInstance];

? ? ? ? ? ? ? ? ? ? r29 = r29;

? ? ? ? ? ? ? ? ? ? r0 = [r0 retain];

? ? ? ? ? ? ? ? ? ? [r0 reportEnterSecondLevelSafeMode];

? ? ? ? ? ? ? ? ? ? [r0 release];

? ? ? ? ? ? }

? ? ? ? ? ? else {

? ? ? ? ? ? ? ? ? ? r0 = [QzoneSafeModeMgr sharedInstance];

? ? ? ? ? ? ? ? ? ? r29 = r29;

? ? ? ? ? ? ? ? ? ? r0 = [r0 retain];

? ? ? ? ? ? ? ? ? ? r22 = [r0 needEnterFirstLevelSafeMode];

? ? ? ? ? ? ? ? ? ? [r0 release];

? ? ? ? ? ? ? ? ? ? if (r22 != 0x0) {

? ? ? ? ? ? ? ? ? ? ? ? ? ? r0 = [QzoneSafeModeMgr sharedInstance];

? ? ? ? ? ? ? ? ? ? ? ? ? ? r0 = [r0 retain];

? ? ? ? ? ? ? ? ? ? ? ? ? ? [r0 doFirstLevelSafeModeResetWork];

? ? ? ? ? ? ? ? ? ? ? ? ? ? [r0 release];

? ? ? ? ? ? ? ? ? ? ? ? ? ? r0 = [KSLaunchManager sharedManager];

? ? ? ? ? ? ? ? ? ? ? ? ? ? r0 = [r0 retain];

? ? ? ? ? ? ? ? ? ? ? ? ? ? [r0 abort];

? ? ? ? ? ? ? ? ? ? ? ? ? ? [r0 release];

? ? ? ? ? ? ? ? ? ? ? ? ? ? r0 = [QzoneSafeModeMgr sharedInstance];

? ? ? ? ? ? ? ? ? ? ? ? ? ? r29 = r29;

? ? ? ? ? ? ? ? ? ? ? ? ? ? r0 = [r0 retain];

? ? ? ? ? ? ? ? ? ? ? ? ? ? [r0 reportEnterFirstLevelSafeMode];

? ? ? ? ? ? ? ? ? ? ? ? ? ? [r0 release];

? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? [*(r31 + 0x38) enterMainUIWithLaunchOptions:*(0x48 + r31)];

? ? ? ? ? ? ? ? ? ? *(r31 + 0x48) = __NSConcreteStackBlock;

? ? ? ? ? ? ? ? ? ? *(r31 + 0x50) = *0x106e17a70;

? ? ? ? ? ? ? ? ? ? *(r31 + 0x58) = 0x101f6e718;

? ? ? ? ? ? ? ? ? ? *(0x68 + r31) = 0x1074add48;

? ? ? ? ? ? ? ? ? ? *(r31 + 0x68) = *(r31 + 0x38);

? ? ? ? ? ? ? ? ? ? [KSLaunchManager executeInMain:r31 + 0x48 as:@"setupAfterMainUICreated"];

? ? ? ? ? ? }

? ? }

? ? [KSApi registerApp:@"ks649644247955316826" universalLink:@"https://kg5.qq.com/" delegate:stack[2048]];

? ? objc_destroyWeak(*(r31 + 0x30));

? ? objc_destroyWeak(r31 + 0x98);

? ? [*(r31 + 0x40) release];

? ? if (*___stack_chk_guard == *(r29 + 0xffffffffffffff90)) {

? ? ? ? ? ? r0 = zero_extend_64(0x1);

? ? }

? ? else {

? ? ? ? ? ? r0 = __stack_chk_fail();

? ? }

? ? return r0;

}

```

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,533評論 6 531
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,055評論 3 414
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,365評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,561評論 1 307
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 71,346評論 6 404
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 54,889評論 1 321
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 42,978評論 3 439
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,118評論 0 286
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,637評論 1 333
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 40,558評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 42,739評論 1 369
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,246評論 5 355
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 43,980評論 3 346
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,362評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,619評論 1 280
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 51,347評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 47,702評論 2 370