Compare commits

...

21 Commits

Author SHA1 Message Date
xsean
08a70350fc 本地统计load 2025-12-02 12:05:50 +08:00
xsean
0d9c1b0408 修改sqlite close 2025-12-02 11:38:32 +08:00
xsean
a04260863e 本地统计load 2025-12-01 17:42:45 +08:00
xsean
354bfd5cb9 修改超时 2025-12-01 11:21:01 +08:00
xsean
7df8da9213 修改超时 2025-12-01 10:07:51 +08:00
xsean
8c7bd97be9 本地统计load 2025-11-25 11:39:32 +08:00
xsean
9664d82f73 修改超时 2025-11-20 14:56:16 +08:00
xsean
a742b2e811 修改超时 2025-11-20 14:40:18 +08:00
xsean
8829cb877b 本地统计load 2025-11-19 11:40:16 +08:00
xsean
8f30ad7e5b 新api配置 2025-11-18 14:52:09 +08:00
xsean
0fe8a37050 修改签名 2025-11-18 13:48:04 +08:00
xsean
437cdc5b1b 本地展示load和show 2025-11-18 11:49:58 +08:00
xsean
d0495f3a18 new api 2025-11-15 21:49:13 +08:00
xsean
cbc31d6070 new api 2025-11-14 19:40:13 +08:00
xsean
73af692ae2 new api 2025-11-13 21:11:28 +08:00
xsean
9c8108fd5d 修改 2025-11-13 17:40:14 +08:00
xsean
e185710b42 修改 2025-11-13 14:30:50 +08:00
xsean
112398d2af 修改 2025-11-13 14:29:24 +08:00
xsean
68e6965bc5 修改服务配置 2025-11-13 11:24:29 +08:00
xsean
d28990a768 hook 配置优化 2025-11-13 11:11:29 +08:00
xsean
edcb876dec 修改超时时间 2025-11-11 14:32:45 +08:00
69 changed files with 4769 additions and 73200 deletions

BIN
.DS_Store vendored

Binary file not shown.

View File

@ -6,5 +6,5 @@ Author: XYZShell
Section: Utilities Section: Utilities
Tag: role::developer Tag: role::developer
Architecture: iphoneos-arm Architecture: iphoneos-arm
Version: 0.0.7-10-68+debug Version: 0.0.7-10-117+debug
Installed-Size: 1624 Installed-Size: 1700

View File

@ -1 +1 @@
./packages/com.xyzshell.ioscontrol_0.0.7-10-68+debug_iphoneos-arm.deb ./packages/com.xyzshell.ioscontrol_0.0.7-10-117+debug_iphoneos-arm.deb

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -2,184 +2,192 @@
triple: 'arm64-apple-darwin' triple: 'arm64-apple-darwin'
binary-path: '/Users/mac/workspaces/projects/ios-change/old-ios-hook/.theos/obj/debug/arm64/OhNo.dylib' binary-path: '/Users/mac/workspaces/projects/ios-change/old-ios-hook/.theos/obj/debug/arm64/OhNo.dylib'
relocations: relocations:
- { offset: 0x7D, size: 0x8, addend: 0x0, symName: _settings, symBinAddr: 0x11DF8, symSize: 0x0 } - { offset: 0x51, size: 0x8, addend: 0x0, symName: '__logos_meta_orig$XHooks$ATTrackingManager$trackingAuthorizationStatus', symObjAddr: 0x1EEA0, symBinAddr: 0x121B0, symSize: 0x0 }
- { offset: 0xF0, size: 0x8, addend: 0x0, symName: '__logos_meta_orig$ohno$ATTrackingManager$trackingAuthorizationStatus', symObjAddr: 0x26D20, symBinAddr: 0x11C50, symSize: 0x0 } - { offset: 0xE9, size: 0x8, addend: 0x0, symName: '__logos_meta_orig$XHooks$ATTrackingManager$requestTrackingAuthorizationWithCompletionHandler$', symObjAddr: 0x1EEA8, symBinAddr: 0x121B8, symSize: 0x0 }
- { offset: 0x163, size: 0x8, addend: 0x0, symName: '__logos_meta_orig$ohno$ATTrackingManager$requestTrackingAuthorizationWithCompletionHandler$', symObjAddr: 0x26D28, symBinAddr: 0x11C58, symSize: 0x0 } - { offset: 0x183, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$ASIdentifierManager$advertisingIdentifier', symObjAddr: 0x1EEB0, symBinAddr: 0x121C0, symSize: 0x0 }
- { offset: 0x1FD, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$ASIdentifierManager$advertisingIdentifier', symObjAddr: 0x26D30, symBinAddr: 0x11C60, symSize: 0x0 } - { offset: 0x218, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$ASIdentifierManager$isAdvertisingTrackingEnabled', symObjAddr: 0x1EEB8, symBinAddr: 0x121C8, symSize: 0x0 }
- { offset: 0x27B, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$ASIdentifierManager$isAdvertisingTrackingEnabled', symObjAddr: 0x26D38, symBinAddr: 0x11C68, symSize: 0x0 } - { offset: 0x254, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$UIDevice$identifierForVendor', symObjAddr: 0x1EEC0, symBinAddr: 0x121D0, symSize: 0x0 }
- { offset: 0x2B7, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$UIDevice$identifierForVendor', symObjAddr: 0x26D40, symBinAddr: 0x11C70, symSize: 0x0 } - { offset: 0x441, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$UIDevice$name', symObjAddr: 0x1EEC8, symBinAddr: 0x121D8, symSize: 0x0 }
- { offset: 0x492, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$UIDevice$name', symObjAddr: 0x26D48, symBinAddr: 0x11C78, symSize: 0x0 } - { offset: 0x46B, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$UIDevice$model', symObjAddr: 0x1EED0, symBinAddr: 0x121E0, symSize: 0x0 }
- { offset: 0x4BC, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$UIDevice$model', symObjAddr: 0x26D50, symBinAddr: 0x11C80, symSize: 0x0 } - { offset: 0x480, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$UIDevice$localizedModel', symObjAddr: 0x1EED8, symBinAddr: 0x121E8, symSize: 0x0 }
- { offset: 0x4D1, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$UIDevice$localizedModel', symObjAddr: 0x26D58, symBinAddr: 0x11C88, symSize: 0x0 } - { offset: 0x495, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$UIDevice$systemName', symObjAddr: 0x1EEE0, symBinAddr: 0x121F0, symSize: 0x0 }
- { offset: 0x4E6, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$UIDevice$systemName', symObjAddr: 0x26D60, symBinAddr: 0x11C90, symSize: 0x0 } - { offset: 0x4AA, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$UIDevice$systemVersion', symObjAddr: 0x1EEE8, symBinAddr: 0x121F8, symSize: 0x0 }
- { offset: 0x4FB, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$UIDevice$systemVersion', symObjAddr: 0x26D68, symBinAddr: 0x11C98, symSize: 0x0 } - { offset: 0x4BF, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$UIDevice$batteryState', symObjAddr: 0x1EEF0, symBinAddr: 0x12200, symSize: 0x0 }
- { offset: 0x510, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$UIDevice$batteryState', symObjAddr: 0x26D70, symBinAddr: 0x11CA0, symSize: 0x0 } - { offset: 0x4E9, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$UIDevice$batteryLevel', symObjAddr: 0x1EEF8, symBinAddr: 0x12208, symSize: 0x0 }
- { offset: 0x53A, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$UIDevice$batteryLevel', symObjAddr: 0x26D78, symBinAddr: 0x11CA8, symSize: 0x0 } - { offset: 0x513, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$UIDevice$orientation', symObjAddr: 0x1EF00, symBinAddr: 0x12210, symSize: 0x0 }
- { offset: 0x564, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$UIDevice$orientation', symObjAddr: 0x26D80, symBinAddr: 0x11CB0, symSize: 0x0 } - { offset: 0x53D, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$NSProcessInfo$systemUptime', symObjAddr: 0x1EF08, symBinAddr: 0x12218, symSize: 0x0 }
- { offset: 0x58E, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$NSProcessInfo$systemUptime', symObjAddr: 0x26D88, symBinAddr: 0x11CB8, symSize: 0x0 } - { offset: 0x709, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$NSProcessInfo$physicalMemory', symObjAddr: 0x1EF10, symBinAddr: 0x12220, symSize: 0x0 }
- { offset: 0x738, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$NSProcessInfo$physicalMemory', symObjAddr: 0x26D90, symBinAddr: 0x11CC0, symSize: 0x0 } - { offset: 0x733, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$NSProcessInfo$processorCount', symObjAddr: 0x1EF18, symBinAddr: 0x12228, symSize: 0x0 }
- { offset: 0x762, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$NSProcessInfo$processorCount', symObjAddr: 0x26D98, symBinAddr: 0x11CC8, symSize: 0x0 } - { offset: 0x75D, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$NSProcessInfo$operatingSystemVersion', symObjAddr: 0x1EF20, symBinAddr: 0x12230, symSize: 0x0 }
- { offset: 0x78C, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$NSProcessInfo$operatingSystemVersion', symObjAddr: 0x26DA0, symBinAddr: 0x11CD0, symSize: 0x0 } - { offset: 0x787, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$UIWindow$safeAreaInsets', symObjAddr: 0x1EF28, symBinAddr: 0x12238, symSize: 0x0 }
- { offset: 0x7B6, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$UIWindow$safeAreaInsets', symObjAddr: 0x26DA8, symBinAddr: 0x11CD8, symSize: 0x0 } - { offset: 0x24B5, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$UIScreen$brightness', symObjAddr: 0x1EF30, symBinAddr: 0x12240, symSize: 0x0 }
- { offset: 0x24E4, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$UIScreen$brightness', symObjAddr: 0x26DB0, symBinAddr: 0x11CE0, symSize: 0x0 } - { offset: 0x24E4, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$UIScreen$bounds', symObjAddr: 0x1EF38, symBinAddr: 0x12248, symSize: 0x0 }
- { offset: 0x2513, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$UIScreen$bounds', symObjAddr: 0x26DB8, symBinAddr: 0x11CE8, symSize: 0x0 } - { offset: 0x250E, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$UIScreen$scale', symObjAddr: 0x1EF40, symBinAddr: 0x12250, symSize: 0x0 }
- { offset: 0x253D, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$UIScreen$scale', symObjAddr: 0x26DC0, symBinAddr: 0x11CF0, symSize: 0x0 } - { offset: 0x2523, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$UIScreen$nativeBounds', symObjAddr: 0x1EF48, symBinAddr: 0x12258, symSize: 0x0 }
- { offset: 0x2552, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$UIScreen$nativeBounds', symObjAddr: 0x26DC8, symBinAddr: 0x11CF8, symSize: 0x0 } - { offset: 0x2538, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$UIScreen$isCaptured', symObjAddr: 0x1EF50, symBinAddr: 0x12260, symSize: 0x0 }
- { offset: 0x2567, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$UIScreen$isCaptured', symObjAddr: 0x26DD0, symBinAddr: 0x11D00, symSize: 0x0 } - { offset: 0x2562, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$UIScreen$mirroredScreen', symObjAddr: 0x1EF58, symBinAddr: 0x12268, symSize: 0x0 }
- { offset: 0x2591, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$UIScreen$mirroredScreen', symObjAddr: 0x26DD8, symBinAddr: 0x11D08, symSize: 0x0 } - { offset: 0x258C, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$UIScreenMode$size', symObjAddr: 0x1EF60, symBinAddr: 0x12270, symSize: 0x0 }
- { offset: 0x25BB, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$AVAudioSession$outputVolume', symObjAddr: 0x26DE0, symBinAddr: 0x11D10, symSize: 0x0 } - { offset: 0x25BB, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$UIStatusBarManager$statusBarFrame', symObjAddr: 0x1EF68, symBinAddr: 0x12278, symSize: 0x0 }
- { offset: 0x25F5, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$UIScreenMode$size', symObjAddr: 0x26DE8, symBinAddr: 0x11D18, symSize: 0x0 } - { offset: 0x2627, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$AVAudioSession$outputVolume', symObjAddr: 0x1EF70, symBinAddr: 0x12280, symSize: 0x0 }
- { offset: 0x2624, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$NSFileManager$attributesOfFileSystemForPath$error$', symObjAddr: 0x26DF0, symBinAddr: 0x11D20, symSize: 0x0 } - { offset: 0x299C, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$NSFileManager$attributesOfFileSystemForPath$error$', symObjAddr: 0x1EF78, symBinAddr: 0x12288, symSize: 0x0 }
- { offset: 0x274E, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$NSFileManager$fileExistsAtPath$', symObjAddr: 0x26DF8, symBinAddr: 0x11D28, symSize: 0x0 } - { offset: 0x2AC6, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$NSFileManager$fileExistsAtPath$', symObjAddr: 0x1EF80, symBinAddr: 0x12290, symSize: 0x0 }
- { offset: 0x277D, size: 0x8, addend: 0x0, symName: '__logos_meta_orig$ohno$NSLocale$preferredLanguages', symObjAddr: 0x26E00, symBinAddr: 0x11D30, symSize: 0x0 } - { offset: 0x2AF5, size: 0x8, addend: 0x0, symName: '__logos_meta_orig$XHooks$NSLocale$preferredLanguages', symObjAddr: 0x1EF88, symBinAddr: 0x12298, symSize: 0x0 }
- { offset: 0x27A7, size: 0x8, addend: 0x0, symName: '__logos_meta_orig$ohno$NSLocale$currentLocale', symObjAddr: 0x26E08, symBinAddr: 0x11D38, symSize: 0x0 } - { offset: 0x2B1F, size: 0x8, addend: 0x0, symName: '__logos_meta_orig$XHooks$NSLocale$currentLocale', symObjAddr: 0x1EF90, symBinAddr: 0x122A0, symSize: 0x0 }
- { offset: 0x27E6, size: 0x8, addend: 0x0, symName: '__logos_meta_orig$ohno$NSLocale$systemLocale', symObjAddr: 0x26E10, symBinAddr: 0x11D40, symSize: 0x0 } - { offset: 0x2B5E, size: 0x8, addend: 0x0, symName: '__logos_meta_orig$XHooks$NSLocale$systemLocale', symObjAddr: 0x1EF98, symBinAddr: 0x122A8, symSize: 0x0 }
- { offset: 0x27FB, size: 0x8, addend: 0x0, symName: '__logos_meta_orig$ohno$NSTimeZone$localTimeZone', symObjAddr: 0x26E18, symBinAddr: 0x11D48, symSize: 0x0 } - { offset: 0x2B73, size: 0x8, addend: 0x0, symName: '__logos_meta_orig$XHooks$NSTimeZone$localTimeZone', symObjAddr: 0x1EFA0, symBinAddr: 0x122B0, symSize: 0x0 }
- { offset: 0x2854, size: 0x8, addend: 0x0, symName: '__logos_meta_orig$ohno$NSTimeZone$systemTimeZone', symObjAddr: 0x26E20, symBinAddr: 0x11D50, symSize: 0x0 } - { offset: 0x2BCC, size: 0x8, addend: 0x0, symName: '__logos_meta_orig$XHooks$NSTimeZone$systemTimeZone', symObjAddr: 0x1EFA8, symBinAddr: 0x122B8, symSize: 0x0 }
- { offset: 0x2869, size: 0x8, addend: 0x0, symName: '__logos_meta_orig$ohno$NSTimeZone$defaultTimeZone', symObjAddr: 0x26E28, symBinAddr: 0x11D58, symSize: 0x0 } - { offset: 0x2BE1, size: 0x8, addend: 0x0, symName: '__logos_meta_orig$XHooks$NSTimeZone$defaultTimeZone', symObjAddr: 0x1EFB0, symBinAddr: 0x122C0, symSize: 0x0 }
- { offset: 0x287E, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$UIStatusBarManager$statusBarFrame', symObjAddr: 0x26E30, symBinAddr: 0x11D60, symSize: 0x0 } - { offset: 0x2BF6, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$NSMutableURLRequest$initWithURL$', symObjAddr: 0x1EFB8, symBinAddr: 0x122C8, symSize: 0x0 }
- { offset: 0x28EA, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$NSMutableURLRequest$initWithURL$', symObjAddr: 0x26E38, symBinAddr: 0x11D68, symSize: 0x0 } - { offset: 0x2E93, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$NSMutableURLRequest$setValue$forHTTPHeaderField$', symObjAddr: 0x1EFC0, symBinAddr: 0x122D0, symSize: 0x0 }
- { offset: 0x2B87, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$NSMutableURLRequest$setValue$forHTTPHeaderField$', symObjAddr: 0x26E40, symBinAddr: 0x11D70, symSize: 0x0 } - { offset: 0x2EC8, size: 0x8, addend: 0x0, symName: '__logos_meta_orig$XHooks$NSURLSession$sessionWithConfiguration$', symObjAddr: 0x1EFC8, symBinAddr: 0x122D8, symSize: 0x0 }
- { offset: 0x2BBC, size: 0x8, addend: 0x0, symName: '__logos_meta_orig$ohno$NSURLSession$sessionWithConfiguration$', symObjAddr: 0x26E48, symBinAddr: 0x11D78, symSize: 0x0 } - { offset: 0x35FC, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$NSURLSession$dataTaskWithRequest$completionHandler$', symObjAddr: 0x1EFD0, symBinAddr: 0x122E0, symSize: 0x0 }
- { offset: 0x32F0, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$NSURLSession$dataTaskWithRequest$completionHandler$', symObjAddr: 0x26E50, symBinAddr: 0x11D80, symSize: 0x0 } - { offset: 0x384E, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$WKWebView$evaluateJavaScript$completionHandler$', symObjAddr: 0x1EFD8, symBinAddr: 0x122E8, symSize: 0x0 }
- { offset: 0x3542, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$WKWebView$evaluateJavaScript$completionHandler$', symObjAddr: 0x26E58, symBinAddr: 0x11D88, symSize: 0x0 } - { offset: 0x54B2, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$WKWebView$setCustomUserAgent$', symObjAddr: 0x1EFE0, symBinAddr: 0x122F0, symSize: 0x0 }
- { offset: 0x51A6, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$WKWebView$setCustomUserAgent$', symObjAddr: 0x26E60, symBinAddr: 0x11D90, symSize: 0x0 } - { offset: 0x54DD, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$WKWebView$customUserAgent', symObjAddr: 0x1EFE8, symBinAddr: 0x122F8, symSize: 0x0 }
- { offset: 0x51D1, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$WKWebView$customUserAgent', symObjAddr: 0x26E68, symBinAddr: 0x11D98, symSize: 0x0 } - { offset: 0x5507, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$CTTelephonyNetworkInfo$serviceCurrentRadioAccessTechnology', symObjAddr: 0x1EFF0, symBinAddr: 0x12300, symSize: 0x0 }
- { offset: 0x51FB, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$CTTelephonyNetworkInfo$serviceCurrentRadioAccessTechnology', symObjAddr: 0x26E70, symBinAddr: 0x11DA0, symSize: 0x0 } - { offset: 0x56B7, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$CTTelephonyNetworkInfo$serviceSubscriberCellularProviders', symObjAddr: 0x1EFF8, symBinAddr: 0x12308, symSize: 0x0 }
- { offset: 0x53AB, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$CTTelephonyNetworkInfo$serviceSubscriberCellularProviders', symObjAddr: 0x26E78, symBinAddr: 0x11DA8, symSize: 0x0 } - { offset: 0x56CC, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$CMMotionManager$startGyroUpdatesToQueue$withHandler$', symObjAddr: 0x1F000, symBinAddr: 0x12310, symSize: 0x0 }
- { offset: 0x53C0, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$CMMotionManager$startGyroUpdatesToQueue$withHandler$', symObjAddr: 0x26E80, symBinAddr: 0x11DB0, symSize: 0x0 } - { offset: 0x5C18, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$uname', symObjAddr: 0x1F008, symBinAddr: 0x12318, symSize: 0x0 }
- { offset: 0x590C, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$uname', symObjAddr: 0x26E88, symBinAddr: 0x11DB8, symSize: 0x0 } - { offset: 0x5C9A, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$sysctl', symObjAddr: 0x1F010, symBinAddr: 0x12320, symSize: 0x0 }
- { offset: 0x598E, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$sysctl', symObjAddr: 0x26E90, symBinAddr: 0x11DC0, symSize: 0x0 } - { offset: 0x5CF3, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$sysctlbyname', symObjAddr: 0x1F018, symBinAddr: 0x12328, symSize: 0x0 }
- { offset: 0x59E7, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$sysctlbyname', symObjAddr: 0x26E98, symBinAddr: 0x11DC8, symSize: 0x0 } - { offset: 0x5D2D, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$clock_gettime', symObjAddr: 0x1F020, symBinAddr: 0x12330, symSize: 0x0 }
- { offset: 0x5A21, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$clock_gettime', symObjAddr: 0x26EA0, symBinAddr: 0x11DD0, symSize: 0x0 } - { offset: 0x5DCD, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$getifaddrs', symObjAddr: 0x1F028, symBinAddr: 0x12338, symSize: 0x0 }
- { offset: 0x5AC1, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$getifaddrs', symObjAddr: 0x26EA8, symBinAddr: 0x11DD8, symSize: 0x0 } - { offset: 0x5EAB, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$SCNetworkReachabilityGetFlags', symObjAddr: 0x1F030, symBinAddr: 0x12340, symSize: 0x0 }
- { offset: 0x5B9F, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$SCNetworkReachabilityGetFlags', symObjAddr: 0x26EB0, symBinAddr: 0x11DE0, symSize: 0x0 } - { offset: 0x5F5C, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$UIAccessibilityIsClosedCaptioningEnabled', symObjAddr: 0x1F038, symBinAddr: 0x12348, symSize: 0x0 }
- { offset: 0x5C50, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$UIAccessibilityIsClosedCaptioningEnabled', symObjAddr: 0x26EB8, symBinAddr: 0x11DE8, symSize: 0x0 } - { offset: 0x5F7E, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$UIAccessibilityIsMonoAudioEnabled', symObjAddr: 0x1F040, symBinAddr: 0x12350, symSize: 0x0 }
- { offset: 0x5C72, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$UIAccessibilityIsMonoAudioEnabled', symObjAddr: 0x26EC0, symBinAddr: 0x11DF0, symSize: 0x0 } - { offset: 0x6166, size: 0x8, addend: 0x0, symName: _SetupXSLog, symObjAddr: 0x0, symBinAddr: 0x4000, symSize: 0x24 }
- { offset: 0x5E40, size: 0x8, addend: 0x0, symName: _str2uuid, symObjAddr: 0x0, symBinAddr: 0x4000, symSize: 0x64 } - { offset: 0x617B, size: 0x8, addend: 0x0, symName: '-[CustomCMGyroData rotationRate]', symObjAddr: 0x24, symBinAddr: 0x4024, symSize: 0x44 }
- { offset: 0x5E68, size: 0x8, addend: 0x0, symName: _str2int, symObjAddr: 0x64, symBinAddr: 0x4064, symSize: 0x58 } - { offset: 0x61B2, size: 0x8, addend: 0x0, symName: '-[CustomCMGyroData customRotationRate]', symObjAddr: 0x68, symBinAddr: 0x4068, symSize: 0x40 }
- { offset: 0x5E90, size: 0x8, addend: 0x0, symName: _str2float, symObjAddr: 0xBC, symBinAddr: 0x40BC, symSize: 0x54 } - { offset: 0x61E9, size: 0x8, addend: 0x0, symName: '-[CustomCMGyroData setCustomRotationRate:]', symObjAddr: 0xA8, symBinAddr: 0x40A8, symSize: 0x40 }
- { offset: 0x5EB8, size: 0x8, addend: 0x0, symName: _str2double, symObjAddr: 0x110, symBinAddr: 0x4110, symSize: 0x54 } - { offset: 0x6228, size: 0x8, addend: 0x0, symName: __logosLocalCtor_e9c95796, symObjAddr: 0xE8, symBinAddr: 0x40E8, symSize: 0xD38 }
- { offset: 0x5EE0, size: 0x8, addend: 0x0, symName: _str2ull, symObjAddr: 0x164, symBinAddr: 0x4164, symSize: 0x58 } - { offset: 0x64AB, size: 0x8, addend: 0x0, symName: '__logos_meta_method$XHooks$ATTrackingManager$trackingAuthorizationStatus', symObjAddr: 0xE20, symBinAddr: 0x4E20, symSize: 0x80 }
- { offset: 0x5F08, size: 0x8, addend: 0x0, symName: _tryGetVal, symObjAddr: 0x1BC, symBinAddr: 0x41BC, symSize: 0x190 } - { offset: 0x6515, size: 0x8, addend: 0x0, symName: '__logos_meta_method$XHooks$ATTrackingManager$requestTrackingAuthorizationWithCompletionHandler$', symObjAddr: 0xEA0, symBinAddr: 0x4EA0, symSize: 0x150 }
- { offset: 0x5F62, size: 0x8, addend: 0x0, symName: _str2chars, symObjAddr: 0x34C, symBinAddr: 0x434C, symSize: 0x6C } - { offset: 0x6577, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$ASIdentifierManager$advertisingIdentifier', symObjAddr: 0xFF0, symBinAddr: 0x4FF0, symSize: 0x110 }
- { offset: 0x5F98, size: 0x8, addend: 0x0, symName: '-[CustomCMGyroData rotationRate]', symObjAddr: 0x3B8, symBinAddr: 0x43B8, symSize: 0x44 } - { offset: 0x65BB, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$ASIdentifierManager$isAdvertisingTrackingEnabled', symObjAddr: 0x1100, symBinAddr: 0x5100, symSize: 0x70 }
- { offset: 0x5FCF, size: 0x8, addend: 0x0, symName: '-[CustomCMGyroData customRotationRate]', symObjAddr: 0x3FC, symBinAddr: 0x43FC, symSize: 0x40 } - { offset: 0x65FF, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$UIDevice$identifierForVendor', symObjAddr: 0x1170, symBinAddr: 0x5170, symSize: 0x110 }
- { offset: 0x6006, size: 0x8, addend: 0x0, symName: '-[CustomCMGyroData setCustomRotationRate:]', symObjAddr: 0x43C, symBinAddr: 0x443C, symSize: 0x40 } - { offset: 0x6643, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$UIDevice$name', symObjAddr: 0x1280, symBinAddr: 0x5280, symSize: 0x110 }
- { offset: 0x6045, size: 0x8, addend: 0x0, symName: __logosLocalCtor_e2ef2056, symObjAddr: 0x47C, symBinAddr: 0x447C, symSize: 0xD0C } - { offset: 0x6687, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$UIDevice$model', symObjAddr: 0x1390, symBinAddr: 0x5390, symSize: 0x34 }
- { offset: 0x62E8, size: 0x8, addend: 0x0, symName: '__logos_meta_method$ohno$ATTrackingManager$trackingAuthorizationStatus', symObjAddr: 0x1188, symBinAddr: 0x5188, symSize: 0x130 } - { offset: 0x66BD, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$UIDevice$localizedModel', symObjAddr: 0x13C4, symBinAddr: 0x53C4, symSize: 0x34 }
- { offset: 0x6349, size: 0x8, addend: 0x0, symName: '__logos_meta_method$ohno$ATTrackingManager$requestTrackingAuthorizationWithCompletionHandler$', symObjAddr: 0x12B8, symBinAddr: 0x52B8, symSize: 0x1BC } - { offset: 0x66F3, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$UIDevice$systemName', symObjAddr: 0x13F8, symBinAddr: 0x53F8, symSize: 0x34 }
- { offset: 0x63B0, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$ASIdentifierManager$advertisingIdentifier', symObjAddr: 0x1474, symBinAddr: 0x5474, symSize: 0x158 } - { offset: 0x6729, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$UIDevice$systemVersion', symObjAddr: 0x142C, symBinAddr: 0x542C, symSize: 0x110 }
- { offset: 0x63F9, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$ASIdentifierManager$isAdvertisingTrackingEnabled', symObjAddr: 0x15CC, symBinAddr: 0x55CC, symSize: 0xF4 } - { offset: 0x676D, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$UIDevice$batteryState', symObjAddr: 0x153C, symBinAddr: 0x553C, symSize: 0x9C }
- { offset: 0x6442, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$UIDevice$identifierForVendor', symObjAddr: 0x16C0, symBinAddr: 0x56C0, symSize: 0x158 } - { offset: 0x67B1, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$UIDevice$batteryLevel', symObjAddr: 0x15D8, symBinAddr: 0x55D8, symSize: 0xA0 }
- { offset: 0x648B, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$UIDevice$name', symObjAddr: 0x1818, symBinAddr: 0x5818, symSize: 0x158 } - { offset: 0x67F5, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$UIDevice$orientation', symObjAddr: 0x1678, symBinAddr: 0x5678, symSize: 0x18 }
- { offset: 0x64D4, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$UIDevice$model', symObjAddr: 0x1970, symBinAddr: 0x5970, symSize: 0x34 } - { offset: 0x682B, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$NSProcessInfo$systemUptime', symObjAddr: 0x1690, symBinAddr: 0x5690, symSize: 0xA4 }
- { offset: 0x650A, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$UIDevice$localizedModel', symObjAddr: 0x19A4, symBinAddr: 0x59A4, symSize: 0x34 } - { offset: 0x687D, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$NSProcessInfo$physicalMemory', symObjAddr: 0x1734, symBinAddr: 0x5734, symSize: 0xA0 }
- { offset: 0x6540, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$UIDevice$systemName', symObjAddr: 0x19D8, symBinAddr: 0x59D8, symSize: 0x34 } - { offset: 0x68C1, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$NSProcessInfo$processorCount', symObjAddr: 0x17D4, symBinAddr: 0x57D4, symSize: 0xA0 }
- { offset: 0x6576, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$UIDevice$systemVersion', symObjAddr: 0x1A0C, symBinAddr: 0x5A0C, symSize: 0x158 } - { offset: 0x6905, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$NSProcessInfo$operatingSystemVersion', symObjAddr: 0x1874, symBinAddr: 0x5874, symSize: 0x468 }
- { offset: 0x65BF, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$UIDevice$batteryState', symObjAddr: 0x1B64, symBinAddr: 0x5B64, symSize: 0xF0 } - { offset: 0x6987, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$UIWindow$safeAreaInsets', symObjAddr: 0x1CDC, symBinAddr: 0x5CDC, symSize: 0x170 }
- { offset: 0x6608, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$UIDevice$batteryLevel', symObjAddr: 0x1C54, symBinAddr: 0x5C54, symSize: 0xF0 } - { offset: 0x6A04, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$UIScreen$brightness', symObjAddr: 0x1E4C, symBinAddr: 0x5E4C, symSize: 0xA0 }
- { offset: 0x6651, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$UIDevice$orientation', symObjAddr: 0x1D44, symBinAddr: 0x5D44, symSize: 0x18 } - { offset: 0x6A48, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$UIScreen$bounds', symObjAddr: 0x1EEC, symBinAddr: 0x5EEC, symSize: 0x174 }
- { offset: 0x6687, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$NSProcessInfo$systemUptime', symObjAddr: 0x1D5C, symBinAddr: 0x5D5C, symSize: 0xF0 } - { offset: 0x6AB7, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$UIScreen$scale', symObjAddr: 0x2060, symBinAddr: 0x6060, symSize: 0xA0 }
- { offset: 0x66D0, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$NSProcessInfo$physicalMemory', symObjAddr: 0x1E4C, symBinAddr: 0x5E4C, symSize: 0x110 } - { offset: 0x6AFB, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$UIScreen$nativeBounds', symObjAddr: 0x2100, symBinAddr: 0x6100, symSize: 0x174 }
- { offset: 0x6719, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$NSProcessInfo$processorCount', symObjAddr: 0x1F5C, symBinAddr: 0x5F5C, symSize: 0xF0 } - { offset: 0x6B6A, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$UIScreen$isCaptured', symObjAddr: 0x2274, symBinAddr: 0x6274, symSize: 0x1C }
- { offset: 0x6766, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$NSProcessInfo$operatingSystemVersion', symObjAddr: 0x204C, symBinAddr: 0x604C, symSize: 0x614 } - { offset: 0x6BA0, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$UIScreen$mirroredScreen', symObjAddr: 0x2290, symBinAddr: 0x6290, symSize: 0x18 }
- { offset: 0x67F4, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$UIWindow$safeAreaInsets', symObjAddr: 0x2660, symBinAddr: 0x6660, symSize: 0x214 } - { offset: 0x6BD6, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$UIScreenMode$size', symObjAddr: 0x22A8, symBinAddr: 0x62A8, symSize: 0x154 }
- { offset: 0x6842, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$UIScreen$brightness', symObjAddr: 0x2874, symBinAddr: 0x6874, symSize: 0xF0 } - { offset: 0x6C44, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$UIStatusBarManager$statusBarFrame', symObjAddr: 0x23FC, symBinAddr: 0x63FC, symSize: 0x190 }
- { offset: 0x688F, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$UIScreen$bounds', symObjAddr: 0x2964, symBinAddr: 0x6964, symSize: 0x12C } - { offset: 0x6CB3, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$AVAudioSession$outputVolume', symObjAddr: 0x258C, symBinAddr: 0x658C, symSize: 0xA0 }
- { offset: 0x68DD, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$UIScreen$scale', symObjAddr: 0x2A90, symBinAddr: 0x6A90, symSize: 0xF0 } - { offset: 0x6CFB, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$NSFileManager$attributesOfFileSystemForPath$error$', symObjAddr: 0x262C, symBinAddr: 0x662C, symSize: 0x280 }
- { offset: 0x692A, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$UIScreen$nativeBounds', symObjAddr: 0x2B80, symBinAddr: 0x6B80, symSize: 0x12C } - { offset: 0x6D9D, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$NSFileManager$fileExistsAtPath$', symObjAddr: 0x28AC, symBinAddr: 0x68AC, symSize: 0x37C }
- { offset: 0x6978, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$UIScreen$isCaptured', symObjAddr: 0x2CAC, symBinAddr: 0x6CAC, symSize: 0x1C } - { offset: 0x6E08, size: 0x8, addend: 0x0, symName: '__logos_meta_method$XHooks$NSLocale$preferredLanguages', symObjAddr: 0x2C28, symBinAddr: 0x6C28, symSize: 0x7C }
- { offset: 0x69B1, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$UIScreen$mirroredScreen', symObjAddr: 0x2CC8, symBinAddr: 0x6CC8, symSize: 0x18 } - { offset: 0x6E41, size: 0x8, addend: 0x0, symName: '__logos_meta_method$XHooks$NSLocale$currentLocale', symObjAddr: 0x2CA4, symBinAddr: 0x6CA4, symSize: 0xD4 }
- { offset: 0x69EA, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$AVAudioSession$outputVolume', symObjAddr: 0x2CE0, symBinAddr: 0x6CE0, symSize: 0xF0 } - { offset: 0x6E89, size: 0x8, addend: 0x0, symName: '__logos_meta_method$XHooks$NSLocale$systemLocale', symObjAddr: 0x2D78, symBinAddr: 0x6D78, symSize: 0xD4 }
- { offset: 0x6A37, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$UIScreenMode$size', symObjAddr: 0x2DD0, symBinAddr: 0x6DD0, symSize: 0x104 } - { offset: 0x6ED1, size: 0x8, addend: 0x0, symName: '__logos_meta_method$XHooks$NSTimeZone$localTimeZone', symObjAddr: 0x2E4C, symBinAddr: 0x6E4C, symSize: 0xD8 }
- { offset: 0x6A85, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$NSFileManager$attributesOfFileSystemForPath$error$', symObjAddr: 0x2ED4, symBinAddr: 0x6ED4, symSize: 0x248 } - { offset: 0x6F19, size: 0x8, addend: 0x0, symName: '__logos_meta_method$XHooks$NSTimeZone$systemTimeZone', symObjAddr: 0x2F24, symBinAddr: 0x6F24, symSize: 0xD8 }
- { offset: 0x6B09, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$NSFileManager$fileExistsAtPath$', symObjAddr: 0x311C, symBinAddr: 0x711C, symSize: 0x3A0 } - { offset: 0x6F61, size: 0x8, addend: 0x0, symName: '__logos_meta_method$XHooks$NSTimeZone$defaultTimeZone', symObjAddr: 0x2FFC, symBinAddr: 0x6FFC, symSize: 0xD8 }
- { offset: 0x6B74, size: 0x8, addend: 0x0, symName: '__logos_meta_method$ohno$NSLocale$preferredLanguages', symObjAddr: 0x34BC, symBinAddr: 0x74BC, symSize: 0x88 } - { offset: 0x6FA9, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$NSMutableURLRequest$initWithURL$', symObjAddr: 0x30D4, symBinAddr: 0x70D4, symSize: 0x13C }
- { offset: 0x6BAD, size: 0x8, addend: 0x0, symName: '__logos_meta_method$ohno$NSLocale$currentLocale', symObjAddr: 0x3544, symBinAddr: 0x7544, symSize: 0x138 } - { offset: 0x7006, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$NSMutableURLRequest$setValue$forHTTPHeaderField$', symObjAddr: 0x3210, symBinAddr: 0x7210, symSize: 0x13C }
- { offset: 0x6BFA, size: 0x8, addend: 0x0, symName: '__logos_meta_method$ohno$NSLocale$systemLocale', symObjAddr: 0x367C, symBinAddr: 0x767C, symSize: 0x138 } - { offset: 0x707D, size: 0x8, addend: 0x0, symName: '__logos_meta_method$XHooks$NSURLSession$sessionWithConfiguration$', symObjAddr: 0x334C, symBinAddr: 0x734C, symSize: 0x160 }
- { offset: 0x6C47, size: 0x8, addend: 0x0, symName: '__logos_meta_method$ohno$NSTimeZone$localTimeZone', symObjAddr: 0x37B4, symBinAddr: 0x77B4, symSize: 0x138 } - { offset: 0x70D4, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$NSURLSession$dataTaskWithRequest$completionHandler$', symObjAddr: 0x34AC, symBinAddr: 0x74AC, symSize: 0x134 }
- { offset: 0x6C94, size: 0x8, addend: 0x0, symName: '__logos_meta_method$ohno$NSTimeZone$systemTimeZone', symObjAddr: 0x38EC, symBinAddr: 0x78EC, symSize: 0x138 } - { offset: 0x7149, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$WKWebView$evaluateJavaScript$completionHandler$', symObjAddr: 0x35E0, symBinAddr: 0x75E0, symSize: 0x100 }
- { offset: 0x6CE1, size: 0x8, addend: 0x0, symName: '__logos_meta_method$ohno$NSTimeZone$defaultTimeZone', symObjAddr: 0x3A24, symBinAddr: 0x7A24, symSize: 0x138 } - { offset: 0x71AB, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$WKWebView$setCustomUserAgent$', symObjAddr: 0x36E0, symBinAddr: 0x76E0, symSize: 0xEC }
- { offset: 0x6D2E, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$UIStatusBarManager$statusBarFrame', symObjAddr: 0x3B5C, symBinAddr: 0x7B5C, symSize: 0x12C } - { offset: 0x71FE, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$WKWebView$customUserAgent', symObjAddr: 0x37CC, symBinAddr: 0x77CC, symSize: 0x110 }
- { offset: 0x6D7C, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$NSMutableURLRequest$initWithURL$', symObjAddr: 0x3C88, symBinAddr: 0x7C88, symSize: 0x134 } - { offset: 0x7246, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$CTTelephonyNetworkInfo$serviceCurrentRadioAccessTechnology', symObjAddr: 0x38DC, symBinAddr: 0x78DC, symSize: 0x3AC }
- { offset: 0x6DC4, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$NSMutableURLRequest$setValue$forHTTPHeaderField$', symObjAddr: 0x3DBC, symBinAddr: 0x7DBC, symSize: 0x18C } - { offset: 0x72ED, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$CTTelephonyNetworkInfo$serviceSubscriberCellularProviders', symObjAddr: 0x3C88, symBinAddr: 0x7C88, symSize: 0x6C8 }
- { offset: 0x6E2C, size: 0x8, addend: 0x0, symName: '__logos_meta_method$ohno$NSURLSession$sessionWithConfiguration$', symObjAddr: 0x3F48, symBinAddr: 0x7F48, symSize: 0xF4 } - { offset: 0x7394, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$CMMotionManager$startGyroUpdatesToQueue$withHandler$', symObjAddr: 0x4350, symBinAddr: 0x8350, symSize: 0x150 }
- { offset: 0x6E74, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$NSURLSession$dataTaskWithRequest$completionHandler$', symObjAddr: 0x403C, symBinAddr: 0x803C, symSize: 0x134 } - { offset: 0x73F6, size: 0x8, addend: 0x0, symName: '__logos_function$XHooks$uname', symObjAddr: 0x44A0, symBinAddr: 0x84A0, symSize: 0xFC }
- { offset: 0x6EDA, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$WKWebView$evaluateJavaScript$completionHandler$', symObjAddr: 0x4170, symBinAddr: 0x8170, symSize: 0x1F0 } - { offset: 0x745C, size: 0x8, addend: 0x0, symName: '__logos_function$XHooks$sysctl', symObjAddr: 0x459C, symBinAddr: 0x859C, symSize: 0x350 }
- { offset: 0x6F42, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$WKWebView$setCustomUserAgent$', symObjAddr: 0x4360, symBinAddr: 0x8360, symSize: 0x140 } - { offset: 0x7559, size: 0x8, addend: 0x0, symName: '__logos_function$XHooks$sysctlbyname', symObjAddr: 0x48EC, symBinAddr: 0x88EC, symSize: 0x2B4 }
- { offset: 0x6F9B, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$WKWebView$customUserAgent', symObjAddr: 0x44A0, symBinAddr: 0x84A0, symSize: 0x12C } - { offset: 0x768F, size: 0x8, addend: 0x0, symName: '__logos_function$XHooks$clock_gettime', symObjAddr: 0x4BA0, symBinAddr: 0x8BA0, symSize: 0x50 }
- { offset: 0x6FE8, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$CTTelephonyNetworkInfo$serviceCurrentRadioAccessTechnology', symObjAddr: 0x45CC, symBinAddr: 0x85CC, symSize: 0x170 } - { offset: 0x76D7, size: 0x8, addend: 0x0, symName: '__logos_function$XHooks$getifaddrs', symObjAddr: 0x4BF0, symBinAddr: 0x8BF0, symSize: 0x614 }
- { offset: 0x703F, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$CTTelephonyNetworkInfo$serviceSubscriberCellularProviders', symObjAddr: 0x473C, symBinAddr: 0x873C, symSize: 0x170 } - { offset: 0x7857, size: 0x8, addend: 0x0, symName: '__logos_function$XHooks$SCNetworkReachabilityGetFlags', symObjAddr: 0x5204, symBinAddr: 0x9204, symSize: 0x78 }
- { offset: 0x7096, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$CMMotionManager$startGyroUpdatesToQueue$withHandler$', symObjAddr: 0x48AC, symBinAddr: 0x88AC, symSize: 0x150 } - { offset: 0x789F, size: 0x8, addend: 0x0, symName: __logosLocalDtor_2e2d985c, symObjAddr: 0x527C, symBinAddr: 0x927C, symSize: 0x64 }
- { offset: 0x70F8, size: 0x8, addend: 0x0, symName: '__logos_function$ohno$uname', symObjAddr: 0x49FC, symBinAddr: 0x89FC, symSize: 0x88 } - { offset: 0x78E3, size: 0x8, addend: 0x0, symName: '____logos_meta_method$XHooks$ATTrackingManager$requestTrackingAuthorizationWithCompletionHandler$_block_invoke', symObjAddr: 0x52E0, symBinAddr: 0x92E0, symSize: 0x50 }
- { offset: 0x7131, size: 0x8, addend: 0x0, symName: '__logos_function$ohno$sysctl', symObjAddr: 0x4A84, symBinAddr: 0x8A84, symSize: 0x410 } - { offset: 0x792D, size: 0x8, addend: 0x0, symName: ___copy_helper_block_e8_32b, symObjAddr: 0x5330, symBinAddr: 0x9330, symSize: 0x38 }
- { offset: 0x721E, size: 0x8, addend: 0x0, symName: '__logos_function$ohno$sysctlbyname', symObjAddr: 0x4E94, symBinAddr: 0x8E94, symSize: 0x428 } - { offset: 0x7951, size: 0x8, addend: 0x0, symName: ___destroy_helper_block_e8_32s, symObjAddr: 0x5368, symBinAddr: 0x9368, symSize: 0x2C }
- { offset: 0x731C, size: 0x8, addend: 0x0, symName: '__logos_function$ohno$clock_gettime', symObjAddr: 0x52BC, symBinAddr: 0x92BC, symSize: 0x5C } - { offset: 0x796D, size: 0x8, addend: 0x0, symName: _UIEdgeInsetsMake, symObjAddr: 0x5394, symBinAddr: 0x9394, symSize: 0x4C }
- { offset: 0x7364, size: 0x8, addend: 0x0, symName: '__logos_function$ohno$getifaddrs', symObjAddr: 0x5318, symBinAddr: 0x9318, symSize: 0x698 } - { offset: 0x79CD, size: 0x8, addend: 0x0, symName: _CGRectMake, symObjAddr: 0x53E0, symBinAddr: 0x93E0, symSize: 0x4C }
- { offset: 0x74EA, size: 0x8, addend: 0x0, symName: '__logos_function$ohno$SCNetworkReachabilityGetFlags', symObjAddr: 0x59B0, symBinAddr: 0x99B0, symSize: 0x84 } - { offset: 0x7A33, size: 0x8, addend: 0x0, symName: _CGSizeMake, symObjAddr: 0x542C, symBinAddr: 0x942C, symSize: 0x2C }
- { offset: 0x7532, size: 0x8, addend: 0x0, symName: __logosLocalDtor_9db639d6, symObjAddr: 0x5A34, symBinAddr: 0x9A34, symSize: 0x28 } - { offset: 0x7A7B, size: 0x8, addend: 0x0, symName: '____logos_method$XHooks$NSFileManager$fileExistsAtPath$_block_invoke', symObjAddr: 0x5458, symBinAddr: 0x9458, symSize: 0x9C }
- { offset: 0x7576, size: 0x8, addend: 0x0, symName: '____logos_meta_method$ohno$ATTrackingManager$trackingAuthorizationStatus_block_invoke', symObjAddr: 0x5A5C, symBinAddr: 0x9A5C, symSize: 0x80 } - { offset: 0x7B05, size: 0x8, addend: 0x0, symName: ___copy_helper_block_e8_32s, symObjAddr: 0x54F4, symBinAddr: 0x94F4, symSize: 0x38 }
- { offset: 0x75C3, size: 0x8, addend: 0x0, symName: ___copy_helper_block_e8_32r, symObjAddr: 0x5ADC, symBinAddr: 0x9ADC, symSize: 0x38 } - { offset: 0x7B29, size: 0x8, addend: 0x0, symName: '____logos_method$XHooks$CMMotionManager$startGyroUpdatesToQueue$withHandler$_block_invoke', symObjAddr: 0x552C, symBinAddr: 0x952C, symSize: 0x10C }
- { offset: 0x75E7, size: 0x8, addend: 0x0, symName: ___destroy_helper_block_e8_32r, symObjAddr: 0x5B14, symBinAddr: 0x9B14, symSize: 0x2C } - { offset: 0x7BAF, size: 0x8, addend: 0x0, symName: _randomRadiansPerSecond, symObjAddr: 0x5638, symBinAddr: 0x9638, symSize: 0x44 }
- { offset: 0x7603, size: 0x8, addend: 0x0, symName: '____logos_meta_method$ohno$ATTrackingManager$requestTrackingAuthorizationWithCompletionHandler$_block_invoke', symObjAddr: 0x5B40, symBinAddr: 0x9B40, symSize: 0x80 } - { offset: 0x7BD9, size: 0x8, addend: 0x0, symName: _modifyInterfaceIP, symObjAddr: 0x567C, symBinAddr: 0x967C, symSize: 0x140 }
- { offset: 0x7650, size: 0x8, addend: 0x0, symName: '____logos_meta_method$ohno$ATTrackingManager$requestTrackingAuthorizationWithCompletionHandler$_block_invoke_2', symObjAddr: 0x5BC0, symBinAddr: 0x9BC0, symSize: 0x58 } - { offset: 0x7C6C, size: 0x8, addend: 0x0, symName: _createInterface, symObjAddr: 0x57BC, symBinAddr: 0x97BC, symSize: 0x3C8 }
- { offset: 0x76A0, size: 0x8, addend: 0x0, symName: ___copy_helper_block_e8_32b40r, symObjAddr: 0x5C18, symBinAddr: 0x9C18, symSize: 0x58 } - { offset: 0x7D15, size: 0x8, addend: 0x0, symName: '__logos_function$XHooks$UIAccessibilityIsClosedCaptioningEnabled', symObjAddr: 0x5B84, symBinAddr: 0x9B84, symSize: 0xC }
- { offset: 0x76C4, size: 0x8, addend: 0x0, symName: ___destroy_helper_block_e8_32s40r, symObjAddr: 0x5C70, symBinAddr: 0x9C70, symSize: 0x40 } - { offset: 0x7D2F, size: 0x8, addend: 0x0, symName: '__logos_function$XHooks$UIAccessibilityIsMonoAudioEnabled', symObjAddr: 0x5B90, symBinAddr: 0x9B90, symSize: 0xC }
- { offset: 0x76E0, size: 0x8, addend: 0x0, symName: ___Block_byref_object_copy_, symObjAddr: 0x5CB0, symBinAddr: 0x9CB0, symSize: 0x54 } - { offset: 0x7D49, size: 0x8, addend: 0x0, symName: ___GLOBAL_init_65535, symObjAddr: 0x5D6C, symBinAddr: 0x9B9C, symSize: 0x28 }
- { offset: 0x7704, size: 0x8, addend: 0x0, symName: ___Block_byref_object_dispose_, symObjAddr: 0x5D04, symBinAddr: 0x9D04, symSize: 0x2C } - { offset: 0x7FCF, size: 0x8, addend: 0x0, symName: _XSLogSetupLogWithFilePath, symObjAddr: 0x0, symBinAddr: 0x9BC4, symSize: 0x100 }
- { offset: 0x7720, size: 0x8, addend: 0x0, symName: '____logos_method$ohno$ASIdentifierManager$advertisingIdentifier_block_invoke', symObjAddr: 0x5D30, symBinAddr: 0x9D30, symSize: 0x80 } - { offset: 0x7FE8, size: 0x8, addend: 0x0, symName: _kLogFilePath, symObjAddr: 0xE38, symBinAddr: 0x12198, symSize: 0x0 }
- { offset: 0x776D, size: 0x8, addend: 0x0, symName: '____logos_method$ohno$ASIdentifierManager$isAdvertisingTrackingEnabled_block_invoke', symObjAddr: 0x5DB0, symBinAddr: 0x9DB0, symSize: 0x9C } - { offset: 0x804F, size: 0x8, addend: 0x0, symName: _XSLogSetupLogWithFilePath, symObjAddr: 0x0, symBinAddr: 0x9BC4, symSize: 0x100 }
- { offset: 0x77D6, size: 0x8, addend: 0x0, symName: '____logos_method$ohno$UIDevice$identifierForVendor_block_invoke', symObjAddr: 0x5E4C, symBinAddr: 0x9E4C, symSize: 0x80 } - { offset: 0x8070, size: 0x8, addend: 0x0, symName: _XSLogSetupLogWithFilePath.onceToken, symObjAddr: 0x3DE8, symBinAddr: 0x12358, symSize: 0x0 }
- { offset: 0x7823, size: 0x8, addend: 0x0, symName: '____logos_method$ohno$UIDevice$name_block_invoke', symObjAddr: 0x5ECC, symBinAddr: 0x9ECC, symSize: 0x64 } - { offset: 0x8115, size: 0x8, addend: 0x0, symName: _logFileHandle, symObjAddr: 0x3DF8, symBinAddr: 0x12368, symSize: 0x0 }
- { offset: 0x7870, size: 0x8, addend: 0x0, symName: '____logos_method$ohno$UIDevice$systemVersion_block_invoke', symObjAddr: 0x5F30, symBinAddr: 0x9F30, symSize: 0x64 } - { offset: 0x8195, size: 0x8, addend: 0x0, symName: _logQueue, symObjAddr: 0x3DF0, symBinAddr: 0x12360, symSize: 0x0 }
- { offset: 0x78BD, size: 0x8, addend: 0x0, symName: '____logos_method$ohno$UIDevice$batteryState_block_invoke', symObjAddr: 0x5F94, symBinAddr: 0x9F94, symSize: 0x70 } - { offset: 0x81BA, size: 0x8, addend: 0x0, symName: _kMaxFileSize, symObjAddr: 0xE40, symBinAddr: 0x121A0, symSize: 0x0 }
- { offset: 0x7926, size: 0x8, addend: 0x0, symName: '____logos_method$ohno$UIDevice$batteryLevel_block_invoke', symObjAddr: 0x6004, symBinAddr: 0xA004, symSize: 0x64 } - { offset: 0x81CF, size: 0x8, addend: 0x0, symName: _logCount, symObjAddr: 0x3E00, symBinAddr: 0x12370, symSize: 0x0 }
- { offset: 0x7973, size: 0x8, addend: 0x0, symName: '____logos_method$ohno$NSProcessInfo$systemUptime_block_invoke', symObjAddr: 0x6068, symBinAddr: 0xA068, symSize: 0x88 } - { offset: 0x82ED, size: 0x8, addend: 0x0, symName: ___XSLogSetupLogWithFilePath_block_invoke, symObjAddr: 0x100, symBinAddr: 0x9CC4, symSize: 0x84 }
- { offset: 0x79DC, size: 0x8, addend: 0x0, symName: '____logos_method$ohno$NSProcessInfo$physicalMemory_block_invoke', symObjAddr: 0x60F0, symBinAddr: 0xA0F0, symSize: 0x74 } - { offset: 0x8337, size: 0x8, addend: 0x0, symName: _setupLogFileHandle, symObjAddr: 0x184, symBinAddr: 0x9D48, symSize: 0x180 }
- { offset: 0x7A45, size: 0x8, addend: 0x0, symName: '____logos_method$ohno$NSProcessInfo$processorCount_block_invoke', symObjAddr: 0x6164, symBinAddr: 0xA164, symSize: 0x74 } - { offset: 0x835B, size: 0x8, addend: 0x0, symName: _XSLogSetupLogWithFileName, symObjAddr: 0x368, symBinAddr: 0x9EC8, symSize: 0x94 }
- { offset: 0x7AB3, size: 0x8, addend: 0x0, symName: '____logos_method$ohno$NSProcessInfo$operatingSystemVersion_block_invoke', symObjAddr: 0x61D8, symBinAddr: 0xA1D8, symSize: 0x64 } - { offset: 0x838D, size: 0x8, addend: 0x0, symName: _getLogFilePath, symObjAddr: 0x3FC, symBinAddr: 0x9F5C, symSize: 0xEC }
- { offset: 0x7B04, size: 0x8, addend: 0x0, symName: '____logos_method$ohno$UIWindow$safeAreaInsets_block_invoke', symObjAddr: 0x623C, symBinAddr: 0xA23C, symSize: 0x160 } - { offset: 0x83DF, size: 0x8, addend: 0x0, symName: _XSLogRedirectNSLog, symObjAddr: 0x4E8, symBinAddr: 0xA048, symSize: 0xC0 }
- { offset: 0x7B81, size: 0x8, addend: 0x0, symName: _UIEdgeInsetsMake, symObjAddr: 0x639C, symBinAddr: 0xA39C, symSize: 0x4C } - { offset: 0x8411, size: 0x8, addend: 0x0, symName: _XSLogMessage, symObjAddr: 0x5A8, symBinAddr: 0xA108, symSize: 0xFC }
- { offset: 0x7BE1, size: 0x8, addend: 0x0, symName: '____logos_method$ohno$UIScreen$brightness_block_invoke', symObjAddr: 0x63E8, symBinAddr: 0xA3E8, symSize: 0x78 } - { offset: 0x8452, size: 0x8, addend: 0x0, symName: ___XSLogMessage_block_invoke, symObjAddr: 0x6A4, symBinAddr: 0xA204, symSize: 0x2CC }
- { offset: 0x7C4F, size: 0x8, addend: 0x0, symName: '____logos_method$ohno$UIScreen$bounds_block_invoke', symObjAddr: 0x6460, symBinAddr: 0xA460, symSize: 0x12C } - { offset: 0x84DE, size: 0x8, addend: 0x0, symName: _checkAndRollLogFile, symObjAddr: 0x970, symBinAddr: 0xA4D0, symSize: 0x298 }
- { offset: 0x7CEB, size: 0x8, addend: 0x0, symName: '____logos_method$ohno$UIScreen$scale_block_invoke', symObjAddr: 0x658C, symBinAddr: 0xA58C, symSize: 0x78 } - { offset: 0x8CEF, size: 0x8, addend: 0x0, symName: '+[XHookSettingsManager sharedManager]', symObjAddr: 0x0, symBinAddr: 0xA768, symSize: 0x7C }
- { offset: 0x7D59, size: 0x8, addend: 0x0, symName: '____logos_method$ohno$UIScreen$nativeBounds_block_invoke', symObjAddr: 0x6604, symBinAddr: 0xA604, symSize: 0x12C } - { offset: 0x8CFC, size: 0x8, addend: 0x0, symName: '+[XHookSettingsManager sharedManager]', symObjAddr: 0x0, symBinAddr: 0xA768, symSize: 0x7C }
- { offset: 0x7DF5, size: 0x8, addend: 0x0, symName: '____logos_method$ohno$AVAudioSession$outputVolume_block_invoke', symObjAddr: 0x6730, symBinAddr: 0xA730, symSize: 0x78 } - { offset: 0x8D25, size: 0x8, addend: 0x0, symName: _sharedManager.manager, symObjAddr: 0x6DA8, symBinAddr: 0x12378, symSize: 0x0 }
- { offset: 0x7E63, size: 0x8, addend: 0x0, symName: '____logos_method$ohno$UIScreenMode$size_block_invoke', symObjAddr: 0x67A8, symBinAddr: 0xA7A8, symSize: 0x118 } - { offset: 0x8D3A, size: 0x8, addend: 0x0, symName: _sharedManager.onceToken, symObjAddr: 0x6DB0, symBinAddr: 0x12380, symSize: 0x0 }
- { offset: 0x7EFE, size: 0x8, addend: 0x0, symName: '____logos_method$ohno$NSFileManager$attributesOfFileSystemForPath$error$_block_invoke', symObjAddr: 0x68C0, symBinAddr: 0xA8C0, symSize: 0xB0 } - { offset: 0x9246, size: 0x8, addend: 0x0, symName: '___37+[XHookSettingsManager sharedManager]_block_invoke', symObjAddr: 0x7C, symBinAddr: 0xA7E4, symSize: 0x54 }
- { offset: 0x7F66, size: 0x8, addend: 0x0, symName: ___copy_helper_block_e8_32s, symObjAddr: 0x6970, symBinAddr: 0xA970, symSize: 0x38 } - { offset: 0x926E, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager init]', symObjAddr: 0xD0, symBinAddr: 0xA838, symSize: 0xB0 }
- { offset: 0x7F8A, size: 0x8, addend: 0x0, symName: ___destroy_helper_block_e8_32s, symObjAddr: 0x69A8, symBinAddr: 0xA9A8, symSize: 0x2C } - { offset: 0x92A4, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager resetToDefaults]', symObjAddr: 0x180, symBinAddr: 0xA8E8, symSize: 0x184 }
- { offset: 0x7FA6, size: 0x8, addend: 0x0, symName: '____logos_method$ohno$NSFileManager$attributesOfFileSystemForPath$error$_block_invoke.252', symObjAddr: 0x69D4, symBinAddr: 0xA9D4, symSize: 0xB0 } - { offset: 0x92D6, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager parseString:defaultValue:]', symObjAddr: 0x304, symBinAddr: 0xAA6C, symSize: 0xD8 }
- { offset: 0x800E, size: 0x8, addend: 0x0, symName: '____logos_method$ohno$NSFileManager$fileExistsAtPath$_block_invoke', symObjAddr: 0x6A84, symBinAddr: 0xAA84, symSize: 0x9C } - { offset: 0x9328, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager parseInteger:defaultValue:]', symObjAddr: 0x3DC, symBinAddr: 0xAB44, symSize: 0x100 }
- { offset: 0x8098, size: 0x8, addend: 0x0, symName: '____logos_meta_method$ohno$NSLocale$currentLocale_block_invoke', symObjAddr: 0x6B20, symBinAddr: 0xAB20, symSize: 0xB0 } - { offset: 0x937A, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager parseFloat:defaultValue:]', symObjAddr: 0x4DC, symBinAddr: 0xAC44, symSize: 0x100 }
- { offset: 0x8106, size: 0x8, addend: 0x0, symName: '____logos_meta_method$ohno$NSLocale$systemLocale_block_invoke', symObjAddr: 0x6BD0, symBinAddr: 0xABD0, symSize: 0xB0 } - { offset: 0x93CC, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager parseDouble:defaultValue:]', symObjAddr: 0x5DC, symBinAddr: 0xAD44, symSize: 0x100 }
- { offset: 0x8174, size: 0x8, addend: 0x0, symName: '____logos_meta_method$ohno$NSTimeZone$localTimeZone_block_invoke', symObjAddr: 0x6C80, symBinAddr: 0xAC80, symSize: 0xB4 } - { offset: 0x941E, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager parseULL:defaultValue:]', symObjAddr: 0x6DC, symBinAddr: 0xAE44, symSize: 0x100 }
- { offset: 0x81E2, size: 0x8, addend: 0x0, symName: '____logos_meta_method$ohno$NSTimeZone$systemTimeZone_block_invoke', symObjAddr: 0x6D34, symBinAddr: 0xAD34, symSize: 0xB4 } - { offset: 0x9470, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager parseUUID:]', symObjAddr: 0x7DC, symBinAddr: 0xAF44, symSize: 0xAC }
- { offset: 0x8250, size: 0x8, addend: 0x0, symName: '____logos_meta_method$ohno$NSTimeZone$defaultTimeZone_block_invoke', symObjAddr: 0x6DE8, symBinAddr: 0xADE8, symSize: 0xB4 } - { offset: 0x94B4, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager parseDictionary:]', symObjAddr: 0x888, symBinAddr: 0xAFF0, symSize: 0xA4 }
- { offset: 0x82BE, size: 0x8, addend: 0x0, symName: '____logos_method$ohno$UIStatusBarManager$statusBarFrame_block_invoke', symObjAddr: 0x6E9C, symBinAddr: 0xAE9C, symSize: 0xE0 } - { offset: 0x94F8, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager parseArray:]', symObjAddr: 0x92C, symBinAddr: 0xB094, symSize: 0xA4 }
- { offset: 0x834A, size: 0x8, addend: 0x0, symName: '____logos_method$ohno$NSMutableURLRequest$initWithURL$_block_invoke', symObjAddr: 0x6F7C, symBinAddr: 0xAF7C, symSize: 0x68 } - { offset: 0x953C, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager loadSettingsFromPath:]', symObjAddr: 0x9D0, symBinAddr: 0xB138, symSize: 0x300 }
- { offset: 0x8395, size: 0x8, addend: 0x0, symName: '____logos_method$ohno$NSMutableURLRequest$setValue$forHTTPHeaderField$_block_invoke', symObjAddr: 0x6FE4, symBinAddr: 0xAFE4, symSize: 0x64 } - { offset: 0x95DD, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager parseSettings:]', symObjAddr: 0xCD0, symBinAddr: 0xB438, symSize: 0xAB4 }
- { offset: 0x83E6, size: 0x8, addend: 0x0, symName: '____logos_meta_method$ohno$NSURLSession$sessionWithConfiguration$_block_invoke', symObjAddr: 0x7048, symBinAddr: 0xB048, symSize: 0xDC } - { offset: 0x962B, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager cleanup]', symObjAddr: 0x1784, symBinAddr: 0xBEEC, symSize: 0x2C }
- { offset: 0x8431, size: 0x8, addend: 0x0, symName: '____logos_method$ohno$NSURLSession$dataTaskWithRequest$completionHandler$_block_invoke', symObjAddr: 0x7124, symBinAddr: 0xB124, symSize: 0x68 } - { offset: 0x965D, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager shouldHookApp:]', symObjAddr: 0x17B0, symBinAddr: 0xBF18, symSize: 0xA8 }
- { offset: 0x847C, size: 0x8, addend: 0x0, symName: '____logos_method$ohno$WKWebView$evaluateJavaScript$completionHandler$_block_invoke', symObjAddr: 0x718C, symBinAddr: 0xB18C, symSize: 0x64 } - { offset: 0x96A1, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager isLoaded]', symObjAddr: 0x1858, symBinAddr: 0xBFC0, symSize: 0x20 }
- { offset: 0x84CD, size: 0x8, addend: 0x0, symName: '____logos_method$ohno$WKWebView$setCustomUserAgent$_block_invoke', symObjAddr: 0x71F0, symBinAddr: 0xB1F0, symSize: 0x64 } - { offset: 0x96D7, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager idfa]', symObjAddr: 0x1878, symBinAddr: 0xBFE0, symSize: 0x1C }
- { offset: 0x851E, size: 0x8, addend: 0x0, symName: '____logos_method$ohno$WKWebView$customUserAgent_block_invoke', symObjAddr: 0x7254, symBinAddr: 0xB254, symSize: 0x64 } - { offset: 0x970D, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager idfv]', symObjAddr: 0x1894, symBinAddr: 0xBFFC, symSize: 0x1C }
- { offset: 0x856F, size: 0x8, addend: 0x0, symName: '____logos_method$ohno$CTTelephonyNetworkInfo$serviceCurrentRadioAccessTechnology_block_invoke', symObjAddr: 0x72B8, symBinAddr: 0xB2B8, symSize: 0x268 } - { offset: 0x9743, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager deviceName]', symObjAddr: 0x18B0, symBinAddr: 0xC018, symSize: 0x1C }
- { offset: 0x8617, size: 0x8, addend: 0x0, symName: '____logos_method$ohno$CTTelephonyNetworkInfo$serviceSubscriberCellularProviders_block_invoke', symObjAddr: 0x7520, symBinAddr: 0xB520, symSize: 0x36C } - { offset: 0x9779, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager osVersion]', symObjAddr: 0x18CC, symBinAddr: 0xC034, symSize: 0x1C }
- { offset: 0x86BF, size: 0x8, addend: 0x0, symName: '____logos_method$ohno$CMMotionManager$startGyroUpdatesToQueue$withHandler$_block_invoke', symObjAddr: 0x788C, symBinAddr: 0xB88C, symSize: 0x15C } - { offset: 0x97AF, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager productStr]', symObjAddr: 0x18E8, symBinAddr: 0xC050, symSize: 0x1C }
- { offset: 0x8764, size: 0x8, addend: 0x0, symName: ___copy_helper_block_e8_32b, symObjAddr: 0x79E8, symBinAddr: 0xB9E8, symSize: 0x38 } - { offset: 0x97E5, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager hwModel]', symObjAddr: 0x1904, symBinAddr: 0xC06C, symSize: 0x1C }
- { offset: 0x8788, size: 0x8, addend: 0x0, symName: _randomRadiansPerSecond, symObjAddr: 0x7A20, symBinAddr: 0xBA20, symSize: 0x44 } - { offset: 0x981B, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager trackingStatus]', symObjAddr: 0x1920, symBinAddr: 0xC088, symSize: 0x1C }
- { offset: 0x87B2, size: 0x8, addend: 0x0, symName: '____logos_function$ohno$uname_block_invoke', symObjAddr: 0x7A64, symBinAddr: 0xBA64, symSize: 0xB0 } - { offset: 0x9851, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager physicalMemory]', symObjAddr: 0x193C, symBinAddr: 0xC0A4, symSize: 0x1C }
- { offset: 0x881B, size: 0x8, addend: 0x0, symName: '____logos_function$ohno$sysctl_block_invoke', symObjAddr: 0x7B14, symBinAddr: 0xBB14, symSize: 0x78 } - { offset: 0x9887, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager cpuCore]', symObjAddr: 0x1958, symBinAddr: 0xC0C0, symSize: 0x1C }
- { offset: 0x8883, size: 0x8, addend: 0x0, symName: '____logos_function$ohno$sysctl_block_invoke_2', symObjAddr: 0x7B8C, symBinAddr: 0xBB8C, symSize: 0x68 } - { offset: 0x98BD, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager systemUptimeOffset]', symObjAddr: 0x1974, symBinAddr: 0xC0DC, symSize: 0x1C }
- { offset: 0x88D4, size: 0x8, addend: 0x0, symName: '____logos_function$ohno$sysctlbyname_block_invoke', symObjAddr: 0x7BF4, symBinAddr: 0xBBF4, symSize: 0xC0 } - { offset: 0x98F3, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager kernBootTimeOffset]', symObjAddr: 0x1990, symBinAddr: 0xC0F8, symSize: 0x1C }
- { offset: 0x893A, size: 0x8, addend: 0x0, symName: '____logos_function$ohno$sysctlbyname_block_invoke_2', symObjAddr: 0x7CB4, symBinAddr: 0xBCB4, symSize: 0xC0 } - { offset: 0x9929, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager batteryState]', symObjAddr: 0x19AC, symBinAddr: 0xC114, symSize: 0x1C }
- { offset: 0x89A0, size: 0x8, addend: 0x0, symName: '____logos_function$ohno$getifaddrs_block_invoke', symObjAddr: 0x7D74, symBinAddr: 0xBD74, symSize: 0x8C } - { offset: 0x995F, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager batteryLevel]', symObjAddr: 0x19C8, symBinAddr: 0xC130, symSize: 0x1C }
- { offset: 0x89F1, size: 0x8, addend: 0x0, symName: _modifyInterfaceIP, symObjAddr: 0x7E00, symBinAddr: 0xBE00, symSize: 0x16C } - { offset: 0x9995, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager screenBrightness]', symObjAddr: 0x19E4, symBinAddr: 0xC14C, symSize: 0x1C }
- { offset: 0x8A84, size: 0x8, addend: 0x0, symName: _createInterface, symObjAddr: 0x7F6C, symBinAddr: 0xBF6C, symSize: 0x3F4 } - { offset: 0x99CB, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager screenScale]', symObjAddr: 0x1A00, symBinAddr: 0xC168, symSize: 0x1C }
- { offset: 0x8B2D, size: 0x8, addend: 0x0, symName: '__logos_function$ohno$UIAccessibilityIsClosedCaptioningEnabled', symObjAddr: 0x8360, symBinAddr: 0xC360, symSize: 0xC } - { offset: 0x9A01, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager screenBounds]', symObjAddr: 0x1A1C, symBinAddr: 0xC184, symSize: 0x1C }
- { offset: 0x8B47, size: 0x8, addend: 0x0, symName: '__logos_function$ohno$UIAccessibilityIsMonoAudioEnabled', symObjAddr: 0x836C, symBinAddr: 0xC36C, symSize: 0xC } - { offset: 0x9A37, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager safeAreaInsets]', symObjAddr: 0x1A38, symBinAddr: 0xC1A0, symSize: 0x1C }
- { offset: 0x8B61, size: 0x8, addend: 0x0, symName: _cleanup, symObjAddr: 0x8378, symBinAddr: 0xC378, symSize: 0x38 } - { offset: 0x9A6D, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager diskSize]', symObjAddr: 0x1A54, symBinAddr: 0xC1BC, symSize: 0x1C }
- { offset: 0x8B77, size: 0x8, addend: 0x0, symName: ___GLOBAL_init_65535, symObjAddr: 0x8960, symBinAddr: 0xC3B0, symSize: 0x28 } - { offset: 0x9AA3, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager diskFreeSize]', symObjAddr: 0x1A70, symBinAddr: 0xC1D8, symSize: 0x1C }
- { offset: 0x9AD9, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager outputVolume]', symObjAddr: 0x1A8C, symBinAddr: 0xC1F4, symSize: 0x1C }
- { offset: 0x9B0F, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager userAgent]', symObjAddr: 0x1AA8, symBinAddr: 0xC210, symSize: 0x1C }
- { offset: 0x9B45, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager networkInterfacesInfo]', symObjAddr: 0x1AC4, symBinAddr: 0xC22C, symSize: 0x1C }
- { offset: 0x9B7B, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager simInfo]', symObjAddr: 0x1AE0, symBinAddr: 0xC248, symSize: 0x1C }
- { offset: 0x9BB1, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager locale]', symObjAddr: 0x1AFC, symBinAddr: 0xC264, symSize: 0x1C }
- { offset: 0x9BE7, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager timeZone]', symObjAddr: 0x1B18, symBinAddr: 0xC280, symSize: 0x1C }
- { offset: 0x9C1D, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager apps]', symObjAddr: 0x1B34, symBinAddr: 0xC29C, symSize: 0x1C }
- { offset: 0x9C53, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager .cxx_destruct]', symObjAddr: 0x1B50, symBinAddr: 0xC2B8, symSize: 0x108 }
... ...

Binary file not shown.

View File

@ -2,184 +2,192 @@
triple: 'arm64e-apple-darwin' triple: 'arm64e-apple-darwin'
binary-path: '/Users/mac/workspaces/projects/ios-change/old-ios-hook/.theos/obj/debug/arm64e/OhNo.dylib' binary-path: '/Users/mac/workspaces/projects/ios-change/old-ios-hook/.theos/obj/debug/arm64e/OhNo.dylib'
relocations: relocations:
- { offset: 0x7D, size: 0x8, addend: 0x0, symName: _settings, symBinAddr: 0x14610, symSize: 0x0 } - { offset: 0x51, size: 0x8, addend: 0x0, symName: '__logos_meta_orig$XHooks$ATTrackingManager$trackingAuthorizationStatus', symObjAddr: 0x1F4A0, symBinAddr: 0x14D00, symSize: 0x0 }
- { offset: 0xF0, size: 0x8, addend: 0x0, symName: '__logos_meta_orig$ohno$ATTrackingManager$trackingAuthorizationStatus', symObjAddr: 0x27998, symBinAddr: 0x14468, symSize: 0x0 } - { offset: 0xE9, size: 0x8, addend: 0x0, symName: '__logos_meta_orig$XHooks$ATTrackingManager$requestTrackingAuthorizationWithCompletionHandler$', symObjAddr: 0x1F4A8, symBinAddr: 0x14D08, symSize: 0x0 }
- { offset: 0x163, size: 0x8, addend: 0x0, symName: '__logos_meta_orig$ohno$ATTrackingManager$requestTrackingAuthorizationWithCompletionHandler$', symObjAddr: 0x279A0, symBinAddr: 0x14470, symSize: 0x0 } - { offset: 0x183, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$ASIdentifierManager$advertisingIdentifier', symObjAddr: 0x1F4B0, symBinAddr: 0x14D10, symSize: 0x0 }
- { offset: 0x1FD, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$ASIdentifierManager$advertisingIdentifier', symObjAddr: 0x279A8, symBinAddr: 0x14478, symSize: 0x0 } - { offset: 0x218, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$ASIdentifierManager$isAdvertisingTrackingEnabled', symObjAddr: 0x1F4B8, symBinAddr: 0x14D18, symSize: 0x0 }
- { offset: 0x27B, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$ASIdentifierManager$isAdvertisingTrackingEnabled', symObjAddr: 0x279B0, symBinAddr: 0x14480, symSize: 0x0 } - { offset: 0x254, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$UIDevice$identifierForVendor', symObjAddr: 0x1F4C0, symBinAddr: 0x14D20, symSize: 0x0 }
- { offset: 0x2B7, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$UIDevice$identifierForVendor', symObjAddr: 0x279B8, symBinAddr: 0x14488, symSize: 0x0 } - { offset: 0x441, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$UIDevice$name', symObjAddr: 0x1F4C8, symBinAddr: 0x14D28, symSize: 0x0 }
- { offset: 0x492, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$UIDevice$name', symObjAddr: 0x279C0, symBinAddr: 0x14490, symSize: 0x0 } - { offset: 0x46B, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$UIDevice$model', symObjAddr: 0x1F4D0, symBinAddr: 0x14D30, symSize: 0x0 }
- { offset: 0x4BC, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$UIDevice$model', symObjAddr: 0x279C8, symBinAddr: 0x14498, symSize: 0x0 } - { offset: 0x480, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$UIDevice$localizedModel', symObjAddr: 0x1F4D8, symBinAddr: 0x14D38, symSize: 0x0 }
- { offset: 0x4D1, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$UIDevice$localizedModel', symObjAddr: 0x279D0, symBinAddr: 0x144A0, symSize: 0x0 } - { offset: 0x495, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$UIDevice$systemName', symObjAddr: 0x1F4E0, symBinAddr: 0x14D40, symSize: 0x0 }
- { offset: 0x4E6, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$UIDevice$systemName', symObjAddr: 0x279D8, symBinAddr: 0x144A8, symSize: 0x0 } - { offset: 0x4AA, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$UIDevice$systemVersion', symObjAddr: 0x1F4E8, symBinAddr: 0x14D48, symSize: 0x0 }
- { offset: 0x4FB, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$UIDevice$systemVersion', symObjAddr: 0x279E0, symBinAddr: 0x144B0, symSize: 0x0 } - { offset: 0x4BF, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$UIDevice$batteryState', symObjAddr: 0x1F4F0, symBinAddr: 0x14D50, symSize: 0x0 }
- { offset: 0x510, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$UIDevice$batteryState', symObjAddr: 0x279E8, symBinAddr: 0x144B8, symSize: 0x0 } - { offset: 0x4E9, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$UIDevice$batteryLevel', symObjAddr: 0x1F4F8, symBinAddr: 0x14D58, symSize: 0x0 }
- { offset: 0x53A, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$UIDevice$batteryLevel', symObjAddr: 0x279F0, symBinAddr: 0x144C0, symSize: 0x0 } - { offset: 0x513, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$UIDevice$orientation', symObjAddr: 0x1F500, symBinAddr: 0x14D60, symSize: 0x0 }
- { offset: 0x564, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$UIDevice$orientation', symObjAddr: 0x279F8, symBinAddr: 0x144C8, symSize: 0x0 } - { offset: 0x53D, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$NSProcessInfo$systemUptime', symObjAddr: 0x1F508, symBinAddr: 0x14D68, symSize: 0x0 }
- { offset: 0x58E, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$NSProcessInfo$systemUptime', symObjAddr: 0x27A00, symBinAddr: 0x144D0, symSize: 0x0 } - { offset: 0x709, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$NSProcessInfo$physicalMemory', symObjAddr: 0x1F510, symBinAddr: 0x14D70, symSize: 0x0 }
- { offset: 0x738, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$NSProcessInfo$physicalMemory', symObjAddr: 0x27A08, symBinAddr: 0x144D8, symSize: 0x0 } - { offset: 0x733, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$NSProcessInfo$processorCount', symObjAddr: 0x1F518, symBinAddr: 0x14D78, symSize: 0x0 }
- { offset: 0x762, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$NSProcessInfo$processorCount', symObjAddr: 0x27A10, symBinAddr: 0x144E0, symSize: 0x0 } - { offset: 0x75D, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$NSProcessInfo$operatingSystemVersion', symObjAddr: 0x1F520, symBinAddr: 0x14D80, symSize: 0x0 }
- { offset: 0x78C, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$NSProcessInfo$operatingSystemVersion', symObjAddr: 0x27A18, symBinAddr: 0x144E8, symSize: 0x0 } - { offset: 0x787, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$UIWindow$safeAreaInsets', symObjAddr: 0x1F528, symBinAddr: 0x14D88, symSize: 0x0 }
- { offset: 0x7B6, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$UIWindow$safeAreaInsets', symObjAddr: 0x27A20, symBinAddr: 0x144F0, symSize: 0x0 } - { offset: 0x24B5, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$UIScreen$brightness', symObjAddr: 0x1F530, symBinAddr: 0x14D90, symSize: 0x0 }
- { offset: 0x24E4, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$UIScreen$brightness', symObjAddr: 0x27A28, symBinAddr: 0x144F8, symSize: 0x0 } - { offset: 0x24E4, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$UIScreen$bounds', symObjAddr: 0x1F538, symBinAddr: 0x14D98, symSize: 0x0 }
- { offset: 0x2513, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$UIScreen$bounds', symObjAddr: 0x27A30, symBinAddr: 0x14500, symSize: 0x0 } - { offset: 0x250E, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$UIScreen$scale', symObjAddr: 0x1F540, symBinAddr: 0x14DA0, symSize: 0x0 }
- { offset: 0x253D, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$UIScreen$scale', symObjAddr: 0x27A38, symBinAddr: 0x14508, symSize: 0x0 } - { offset: 0x2523, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$UIScreen$nativeBounds', symObjAddr: 0x1F548, symBinAddr: 0x14DA8, symSize: 0x0 }
- { offset: 0x2552, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$UIScreen$nativeBounds', symObjAddr: 0x27A40, symBinAddr: 0x14510, symSize: 0x0 } - { offset: 0x2538, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$UIScreen$isCaptured', symObjAddr: 0x1F550, symBinAddr: 0x14DB0, symSize: 0x0 }
- { offset: 0x2567, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$UIScreen$isCaptured', symObjAddr: 0x27A48, symBinAddr: 0x14518, symSize: 0x0 } - { offset: 0x2562, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$UIScreen$mirroredScreen', symObjAddr: 0x1F558, symBinAddr: 0x14DB8, symSize: 0x0 }
- { offset: 0x2591, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$UIScreen$mirroredScreen', symObjAddr: 0x27A50, symBinAddr: 0x14520, symSize: 0x0 } - { offset: 0x258C, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$UIScreenMode$size', symObjAddr: 0x1F560, symBinAddr: 0x14DC0, symSize: 0x0 }
- { offset: 0x25BB, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$AVAudioSession$outputVolume', symObjAddr: 0x27A58, symBinAddr: 0x14528, symSize: 0x0 } - { offset: 0x25BB, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$UIStatusBarManager$statusBarFrame', symObjAddr: 0x1F568, symBinAddr: 0x14DC8, symSize: 0x0 }
- { offset: 0x25F5, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$UIScreenMode$size', symObjAddr: 0x27A60, symBinAddr: 0x14530, symSize: 0x0 } - { offset: 0x2627, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$AVAudioSession$outputVolume', symObjAddr: 0x1F570, symBinAddr: 0x14DD0, symSize: 0x0 }
- { offset: 0x2624, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$NSFileManager$attributesOfFileSystemForPath$error$', symObjAddr: 0x27A68, symBinAddr: 0x14538, symSize: 0x0 } - { offset: 0x299C, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$NSFileManager$attributesOfFileSystemForPath$error$', symObjAddr: 0x1F578, symBinAddr: 0x14DD8, symSize: 0x0 }
- { offset: 0x274E, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$NSFileManager$fileExistsAtPath$', symObjAddr: 0x27A70, symBinAddr: 0x14540, symSize: 0x0 } - { offset: 0x2AC6, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$NSFileManager$fileExistsAtPath$', symObjAddr: 0x1F580, symBinAddr: 0x14DE0, symSize: 0x0 }
- { offset: 0x277D, size: 0x8, addend: 0x0, symName: '__logos_meta_orig$ohno$NSLocale$preferredLanguages', symObjAddr: 0x27A78, symBinAddr: 0x14548, symSize: 0x0 } - { offset: 0x2AF5, size: 0x8, addend: 0x0, symName: '__logos_meta_orig$XHooks$NSLocale$preferredLanguages', symObjAddr: 0x1F588, symBinAddr: 0x14DE8, symSize: 0x0 }
- { offset: 0x27A7, size: 0x8, addend: 0x0, symName: '__logos_meta_orig$ohno$NSLocale$currentLocale', symObjAddr: 0x27A80, symBinAddr: 0x14550, symSize: 0x0 } - { offset: 0x2B1F, size: 0x8, addend: 0x0, symName: '__logos_meta_orig$XHooks$NSLocale$currentLocale', symObjAddr: 0x1F590, symBinAddr: 0x14DF0, symSize: 0x0 }
- { offset: 0x27E6, size: 0x8, addend: 0x0, symName: '__logos_meta_orig$ohno$NSLocale$systemLocale', symObjAddr: 0x27A88, symBinAddr: 0x14558, symSize: 0x0 } - { offset: 0x2B5E, size: 0x8, addend: 0x0, symName: '__logos_meta_orig$XHooks$NSLocale$systemLocale', symObjAddr: 0x1F598, symBinAddr: 0x14DF8, symSize: 0x0 }
- { offset: 0x27FB, size: 0x8, addend: 0x0, symName: '__logos_meta_orig$ohno$NSTimeZone$localTimeZone', symObjAddr: 0x27A90, symBinAddr: 0x14560, symSize: 0x0 } - { offset: 0x2B73, size: 0x8, addend: 0x0, symName: '__logos_meta_orig$XHooks$NSTimeZone$localTimeZone', symObjAddr: 0x1F5A0, symBinAddr: 0x14E00, symSize: 0x0 }
- { offset: 0x2854, size: 0x8, addend: 0x0, symName: '__logos_meta_orig$ohno$NSTimeZone$systemTimeZone', symObjAddr: 0x27A98, symBinAddr: 0x14568, symSize: 0x0 } - { offset: 0x2BCC, size: 0x8, addend: 0x0, symName: '__logos_meta_orig$XHooks$NSTimeZone$systemTimeZone', symObjAddr: 0x1F5A8, symBinAddr: 0x14E08, symSize: 0x0 }
- { offset: 0x2869, size: 0x8, addend: 0x0, symName: '__logos_meta_orig$ohno$NSTimeZone$defaultTimeZone', symObjAddr: 0x27AA0, symBinAddr: 0x14570, symSize: 0x0 } - { offset: 0x2BE1, size: 0x8, addend: 0x0, symName: '__logos_meta_orig$XHooks$NSTimeZone$defaultTimeZone', symObjAddr: 0x1F5B0, symBinAddr: 0x14E10, symSize: 0x0 }
- { offset: 0x287E, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$UIStatusBarManager$statusBarFrame', symObjAddr: 0x27AA8, symBinAddr: 0x14578, symSize: 0x0 } - { offset: 0x2BF6, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$NSMutableURLRequest$initWithURL$', symObjAddr: 0x1F5B8, symBinAddr: 0x14E18, symSize: 0x0 }
- { offset: 0x28EA, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$NSMutableURLRequest$initWithURL$', symObjAddr: 0x27AB0, symBinAddr: 0x14580, symSize: 0x0 } - { offset: 0x2E93, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$NSMutableURLRequest$setValue$forHTTPHeaderField$', symObjAddr: 0x1F5C0, symBinAddr: 0x14E20, symSize: 0x0 }
- { offset: 0x2B87, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$NSMutableURLRequest$setValue$forHTTPHeaderField$', symObjAddr: 0x27AB8, symBinAddr: 0x14588, symSize: 0x0 } - { offset: 0x2EC8, size: 0x8, addend: 0x0, symName: '__logos_meta_orig$XHooks$NSURLSession$sessionWithConfiguration$', symObjAddr: 0x1F5C8, symBinAddr: 0x14E28, symSize: 0x0 }
- { offset: 0x2BBC, size: 0x8, addend: 0x0, symName: '__logos_meta_orig$ohno$NSURLSession$sessionWithConfiguration$', symObjAddr: 0x27AC0, symBinAddr: 0x14590, symSize: 0x0 } - { offset: 0x35FC, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$NSURLSession$dataTaskWithRequest$completionHandler$', symObjAddr: 0x1F5D0, symBinAddr: 0x14E30, symSize: 0x0 }
- { offset: 0x32F0, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$NSURLSession$dataTaskWithRequest$completionHandler$', symObjAddr: 0x27AC8, symBinAddr: 0x14598, symSize: 0x0 } - { offset: 0x384E, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$WKWebView$evaluateJavaScript$completionHandler$', symObjAddr: 0x1F5D8, symBinAddr: 0x14E38, symSize: 0x0 }
- { offset: 0x3542, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$WKWebView$evaluateJavaScript$completionHandler$', symObjAddr: 0x27AD0, symBinAddr: 0x145A0, symSize: 0x0 } - { offset: 0x54B2, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$WKWebView$setCustomUserAgent$', symObjAddr: 0x1F5E0, symBinAddr: 0x14E40, symSize: 0x0 }
- { offset: 0x51A6, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$WKWebView$setCustomUserAgent$', symObjAddr: 0x27AD8, symBinAddr: 0x145A8, symSize: 0x0 } - { offset: 0x54DD, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$WKWebView$customUserAgent', symObjAddr: 0x1F5E8, symBinAddr: 0x14E48, symSize: 0x0 }
- { offset: 0x51D1, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$WKWebView$customUserAgent', symObjAddr: 0x27AE0, symBinAddr: 0x145B0, symSize: 0x0 } - { offset: 0x5507, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$CTTelephonyNetworkInfo$serviceCurrentRadioAccessTechnology', symObjAddr: 0x1F5F0, symBinAddr: 0x14E50, symSize: 0x0 }
- { offset: 0x51FB, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$CTTelephonyNetworkInfo$serviceCurrentRadioAccessTechnology', symObjAddr: 0x27AE8, symBinAddr: 0x145B8, symSize: 0x0 } - { offset: 0x56B7, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$CTTelephonyNetworkInfo$serviceSubscriberCellularProviders', symObjAddr: 0x1F5F8, symBinAddr: 0x14E58, symSize: 0x0 }
- { offset: 0x53AB, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$CTTelephonyNetworkInfo$serviceSubscriberCellularProviders', symObjAddr: 0x27AF0, symBinAddr: 0x145C0, symSize: 0x0 } - { offset: 0x56CC, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$CMMotionManager$startGyroUpdatesToQueue$withHandler$', symObjAddr: 0x1F600, symBinAddr: 0x14E60, symSize: 0x0 }
- { offset: 0x53C0, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$CMMotionManager$startGyroUpdatesToQueue$withHandler$', symObjAddr: 0x27AF8, symBinAddr: 0x145C8, symSize: 0x0 } - { offset: 0x5C18, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$uname', symObjAddr: 0x1F608, symBinAddr: 0x14E68, symSize: 0x0 }
- { offset: 0x590C, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$uname', symObjAddr: 0x27B00, symBinAddr: 0x145D0, symSize: 0x0 } - { offset: 0x5C9A, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$sysctl', symObjAddr: 0x1F610, symBinAddr: 0x14E70, symSize: 0x0 }
- { offset: 0x598E, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$sysctl', symObjAddr: 0x27B08, symBinAddr: 0x145D8, symSize: 0x0 } - { offset: 0x5CF3, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$sysctlbyname', symObjAddr: 0x1F618, symBinAddr: 0x14E78, symSize: 0x0 }
- { offset: 0x59E7, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$sysctlbyname', symObjAddr: 0x27B10, symBinAddr: 0x145E0, symSize: 0x0 } - { offset: 0x5D2D, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$clock_gettime', symObjAddr: 0x1F620, symBinAddr: 0x14E80, symSize: 0x0 }
- { offset: 0x5A21, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$clock_gettime', symObjAddr: 0x27B18, symBinAddr: 0x145E8, symSize: 0x0 } - { offset: 0x5DCD, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$getifaddrs', symObjAddr: 0x1F628, symBinAddr: 0x14E88, symSize: 0x0 }
- { offset: 0x5AC1, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$getifaddrs', symObjAddr: 0x27B20, symBinAddr: 0x145F0, symSize: 0x0 } - { offset: 0x5EAB, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$SCNetworkReachabilityGetFlags', symObjAddr: 0x1F630, symBinAddr: 0x14E90, symSize: 0x0 }
- { offset: 0x5B9F, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$SCNetworkReachabilityGetFlags', symObjAddr: 0x27B28, symBinAddr: 0x145F8, symSize: 0x0 } - { offset: 0x5F5C, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$UIAccessibilityIsClosedCaptioningEnabled', symObjAddr: 0x1F638, symBinAddr: 0x14E98, symSize: 0x0 }
- { offset: 0x5C50, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$UIAccessibilityIsClosedCaptioningEnabled', symObjAddr: 0x27B30, symBinAddr: 0x14600, symSize: 0x0 } - { offset: 0x5F7E, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$UIAccessibilityIsMonoAudioEnabled', symObjAddr: 0x1F640, symBinAddr: 0x14EA0, symSize: 0x0 }
- { offset: 0x5C72, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$UIAccessibilityIsMonoAudioEnabled', symObjAddr: 0x27B38, symBinAddr: 0x14608, symSize: 0x0 } - { offset: 0x6166, size: 0x8, addend: 0x0, symName: _SetupXSLog, symObjAddr: 0x0, symBinAddr: 0x4000, symSize: 0x28 }
- { offset: 0x5E40, size: 0x8, addend: 0x0, symName: _str2uuid, symObjAddr: 0x0, symBinAddr: 0x4000, symSize: 0x78 } - { offset: 0x617B, size: 0x8, addend: 0x0, symName: '-[CustomCMGyroData rotationRate]', symObjAddr: 0x28, symBinAddr: 0x4028, symSize: 0x48 }
- { offset: 0x5E68, size: 0x8, addend: 0x0, symName: _str2int, symObjAddr: 0x78, symBinAddr: 0x4078, symSize: 0x5C } - { offset: 0x61B2, size: 0x8, addend: 0x0, symName: '-[CustomCMGyroData customRotationRate]', symObjAddr: 0x70, symBinAddr: 0x4070, symSize: 0x40 }
- { offset: 0x5E90, size: 0x8, addend: 0x0, symName: _str2float, symObjAddr: 0xD4, symBinAddr: 0x40D4, symSize: 0x58 } - { offset: 0x61E9, size: 0x8, addend: 0x0, symName: '-[CustomCMGyroData setCustomRotationRate:]', symObjAddr: 0xB0, symBinAddr: 0x40B0, symSize: 0x40 }
- { offset: 0x5EB8, size: 0x8, addend: 0x0, symName: _str2double, symObjAddr: 0x12C, symBinAddr: 0x412C, symSize: 0x58 } - { offset: 0x6228, size: 0x8, addend: 0x0, symName: __logosLocalCtor_e9c95796, symObjAddr: 0xF0, symBinAddr: 0x40F0, symSize: 0x1018 }
- { offset: 0x5EE0, size: 0x8, addend: 0x0, symName: _str2ull, symObjAddr: 0x184, symBinAddr: 0x4184, symSize: 0x5C } - { offset: 0x64AB, size: 0x8, addend: 0x0, symName: '__logos_meta_method$XHooks$ATTrackingManager$trackingAuthorizationStatus', symObjAddr: 0x1108, symBinAddr: 0x5108, symSize: 0x84 }
- { offset: 0x5F08, size: 0x8, addend: 0x0, symName: _tryGetVal, symObjAddr: 0x1E0, symBinAddr: 0x41E0, symSize: 0x198 } - { offset: 0x6515, size: 0x8, addend: 0x0, symName: '__logos_meta_method$XHooks$ATTrackingManager$requestTrackingAuthorizationWithCompletionHandler$', symObjAddr: 0x118C, symBinAddr: 0x518C, symSize: 0x16C }
- { offset: 0x5F62, size: 0x8, addend: 0x0, symName: _str2chars, symObjAddr: 0x378, symBinAddr: 0x4378, symSize: 0x70 } - { offset: 0x6577, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$ASIdentifierManager$advertisingIdentifier', symObjAddr: 0x12F8, symBinAddr: 0x52F8, symSize: 0x124 }
- { offset: 0x5F98, size: 0x8, addend: 0x0, symName: '-[CustomCMGyroData rotationRate]', symObjAddr: 0x3E8, symBinAddr: 0x43E8, symSize: 0x48 } - { offset: 0x65BB, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$ASIdentifierManager$isAdvertisingTrackingEnabled', symObjAddr: 0x141C, symBinAddr: 0x541C, symSize: 0x74 }
- { offset: 0x5FCF, size: 0x8, addend: 0x0, symName: '-[CustomCMGyroData customRotationRate]', symObjAddr: 0x430, symBinAddr: 0x4430, symSize: 0x40 } - { offset: 0x65FF, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$UIDevice$identifierForVendor', symObjAddr: 0x1490, symBinAddr: 0x5490, symSize: 0x124 }
- { offset: 0x6006, size: 0x8, addend: 0x0, symName: '-[CustomCMGyroData setCustomRotationRate:]', symObjAddr: 0x470, symBinAddr: 0x4470, symSize: 0x40 } - { offset: 0x6643, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$UIDevice$name', symObjAddr: 0x15B4, symBinAddr: 0x55B4, symSize: 0x124 }
- { offset: 0x6045, size: 0x8, addend: 0x0, symName: __logosLocalCtor_e2ef2056, symObjAddr: 0x4B0, symBinAddr: 0x44B0, symSize: 0xFEC } - { offset: 0x6687, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$UIDevice$model', symObjAddr: 0x16D8, symBinAddr: 0x56D8, symSize: 0x38 }
- { offset: 0x62E8, size: 0x8, addend: 0x0, symName: '__logos_meta_method$ohno$ATTrackingManager$trackingAuthorizationStatus', symObjAddr: 0x149C, symBinAddr: 0x549C, symSize: 0x14C } - { offset: 0x66BD, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$UIDevice$localizedModel', symObjAddr: 0x1710, symBinAddr: 0x5710, symSize: 0x38 }
- { offset: 0x6349, size: 0x8, addend: 0x0, symName: '__logos_meta_method$ohno$ATTrackingManager$requestTrackingAuthorizationWithCompletionHandler$', symObjAddr: 0x15E8, symBinAddr: 0x55E8, symSize: 0x1F0 } - { offset: 0x66F3, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$UIDevice$systemName', symObjAddr: 0x1748, symBinAddr: 0x5748, symSize: 0x38 }
- { offset: 0x63B0, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$ASIdentifierManager$advertisingIdentifier', symObjAddr: 0x17D8, symBinAddr: 0x57D8, symSize: 0x198 } - { offset: 0x6729, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$UIDevice$systemVersion', symObjAddr: 0x1780, symBinAddr: 0x5780, symSize: 0x124 }
- { offset: 0x63F9, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$ASIdentifierManager$isAdvertisingTrackingEnabled', symObjAddr: 0x1970, symBinAddr: 0x5970, symSize: 0x110 } - { offset: 0x676D, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$UIDevice$batteryState', symObjAddr: 0x18A4, symBinAddr: 0x58A4, symSize: 0xA0 }
- { offset: 0x6442, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$UIDevice$identifierForVendor', symObjAddr: 0x1A80, symBinAddr: 0x5A80, symSize: 0x198 } - { offset: 0x67B1, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$UIDevice$batteryLevel', symObjAddr: 0x1944, symBinAddr: 0x5944, symSize: 0xA4 }
- { offset: 0x648B, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$UIDevice$name', symObjAddr: 0x1C18, symBinAddr: 0x5C18, symSize: 0x198 } - { offset: 0x67F5, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$UIDevice$orientation', symObjAddr: 0x19E8, symBinAddr: 0x59E8, symSize: 0x18 }
- { offset: 0x64D4, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$UIDevice$model', symObjAddr: 0x1DB0, symBinAddr: 0x5DB0, symSize: 0x38 } - { offset: 0x682B, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$NSProcessInfo$systemUptime', symObjAddr: 0x1A00, symBinAddr: 0x5A00, symSize: 0xA8 }
- { offset: 0x650A, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$UIDevice$localizedModel', symObjAddr: 0x1DE8, symBinAddr: 0x5DE8, symSize: 0x38 } - { offset: 0x687D, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$NSProcessInfo$physicalMemory', symObjAddr: 0x1AA8, symBinAddr: 0x5AA8, symSize: 0xA4 }
- { offset: 0x6540, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$UIDevice$systemName', symObjAddr: 0x1E20, symBinAddr: 0x5E20, symSize: 0x38 } - { offset: 0x68C1, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$NSProcessInfo$processorCount', symObjAddr: 0x1B4C, symBinAddr: 0x5B4C, symSize: 0xA4 }
- { offset: 0x6576, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$UIDevice$systemVersion', symObjAddr: 0x1E58, symBinAddr: 0x5E58, symSize: 0x198 } - { offset: 0x6905, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$NSProcessInfo$operatingSystemVersion', symObjAddr: 0x1BF0, symBinAddr: 0x5BF0, symSize: 0x46C }
- { offset: 0x65BF, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$UIDevice$batteryState', symObjAddr: 0x1FF0, symBinAddr: 0x5FF0, symSize: 0x10C } - { offset: 0x6987, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$UIWindow$safeAreaInsets', symObjAddr: 0x205C, symBinAddr: 0x605C, symSize: 0x174 }
- { offset: 0x6608, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$UIDevice$batteryLevel', symObjAddr: 0x20FC, symBinAddr: 0x60FC, symSize: 0x10C } - { offset: 0x6A04, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$UIScreen$brightness', symObjAddr: 0x21D0, symBinAddr: 0x61D0, symSize: 0xA4 }
- { offset: 0x6651, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$UIDevice$orientation', symObjAddr: 0x2208, symBinAddr: 0x6208, symSize: 0x18 } - { offset: 0x6A48, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$UIScreen$bounds', symObjAddr: 0x2274, symBinAddr: 0x6274, symSize: 0x178 }
- { offset: 0x6687, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$NSProcessInfo$systemUptime', symObjAddr: 0x2220, symBinAddr: 0x6220, symSize: 0x10C } - { offset: 0x6AB7, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$UIScreen$scale', symObjAddr: 0x23EC, symBinAddr: 0x63EC, symSize: 0xA4 }
- { offset: 0x66D0, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$NSProcessInfo$physicalMemory', symObjAddr: 0x232C, symBinAddr: 0x632C, symSize: 0x12C } - { offset: 0x6AFB, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$UIScreen$nativeBounds', symObjAddr: 0x2490, symBinAddr: 0x6490, symSize: 0x178 }
- { offset: 0x6719, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$NSProcessInfo$processorCount', symObjAddr: 0x2458, symBinAddr: 0x6458, symSize: 0x10C } - { offset: 0x6B6A, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$UIScreen$isCaptured', symObjAddr: 0x2608, symBinAddr: 0x6608, symSize: 0x1C }
- { offset: 0x6766, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$NSProcessInfo$operatingSystemVersion', symObjAddr: 0x2564, symBinAddr: 0x6564, symSize: 0x644 } - { offset: 0x6BA0, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$UIScreen$mirroredScreen', symObjAddr: 0x2624, symBinAddr: 0x6624, symSize: 0x18 }
- { offset: 0x67F4, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$UIWindow$safeAreaInsets', symObjAddr: 0x2BA8, symBinAddr: 0x6BA8, symSize: 0x230 } - { offset: 0x6BD6, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$UIScreenMode$size', symObjAddr: 0x263C, symBinAddr: 0x663C, symSize: 0x158 }
- { offset: 0x6842, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$UIScreen$brightness', symObjAddr: 0x2DD8, symBinAddr: 0x6DD8, symSize: 0x10C } - { offset: 0x6C44, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$UIStatusBarManager$statusBarFrame', symObjAddr: 0x2794, symBinAddr: 0x6794, symSize: 0x194 }
- { offset: 0x688F, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$UIScreen$bounds', symObjAddr: 0x2EE4, symBinAddr: 0x6EE4, symSize: 0x148 } - { offset: 0x6CB3, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$AVAudioSession$outputVolume', symObjAddr: 0x2928, symBinAddr: 0x6928, symSize: 0xA4 }
- { offset: 0x68DD, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$UIScreen$scale', symObjAddr: 0x302C, symBinAddr: 0x702C, symSize: 0x10C } - { offset: 0x6CFB, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$NSFileManager$attributesOfFileSystemForPath$error$', symObjAddr: 0x29CC, symBinAddr: 0x69CC, symSize: 0x294 }
- { offset: 0x692A, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$UIScreen$nativeBounds', symObjAddr: 0x3138, symBinAddr: 0x7138, symSize: 0x148 } - { offset: 0x6D9D, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$NSFileManager$fileExistsAtPath$', symObjAddr: 0x2C60, symBinAddr: 0x6C60, symSize: 0x398 }
- { offset: 0x6978, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$UIScreen$isCaptured', symObjAddr: 0x3280, symBinAddr: 0x7280, symSize: 0x1C } - { offset: 0x6E08, size: 0x8, addend: 0x0, symName: '__logos_meta_method$XHooks$NSLocale$preferredLanguages', symObjAddr: 0x2FF8, symBinAddr: 0x6FF8, symSize: 0x80 }
- { offset: 0x69B1, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$UIScreen$mirroredScreen', symObjAddr: 0x329C, symBinAddr: 0x729C, symSize: 0x18 } - { offset: 0x6E41, size: 0x8, addend: 0x0, symName: '__logos_meta_method$XHooks$NSLocale$currentLocale', symObjAddr: 0x3078, symBinAddr: 0x7078, symSize: 0xE8 }
- { offset: 0x69EA, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$AVAudioSession$outputVolume', symObjAddr: 0x32B4, symBinAddr: 0x72B4, symSize: 0x10C } - { offset: 0x6E89, size: 0x8, addend: 0x0, symName: '__logos_meta_method$XHooks$NSLocale$systemLocale', symObjAddr: 0x3160, symBinAddr: 0x7160, symSize: 0xE8 }
- { offset: 0x6A37, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$UIScreenMode$size', symObjAddr: 0x33C0, symBinAddr: 0x73C0, symSize: 0x120 } - { offset: 0x6ED1, size: 0x8, addend: 0x0, symName: '__logos_meta_method$XHooks$NSTimeZone$localTimeZone', symObjAddr: 0x3248, symBinAddr: 0x7248, symSize: 0xEC }
- { offset: 0x6A85, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$NSFileManager$attributesOfFileSystemForPath$error$', symObjAddr: 0x34E0, symBinAddr: 0x74E0, symSize: 0x28C } - { offset: 0x6F19, size: 0x8, addend: 0x0, symName: '__logos_meta_method$XHooks$NSTimeZone$systemTimeZone', symObjAddr: 0x3334, symBinAddr: 0x7334, symSize: 0xEC }
- { offset: 0x6B09, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$NSFileManager$fileExistsAtPath$', symObjAddr: 0x376C, symBinAddr: 0x776C, symSize: 0x3BC } - { offset: 0x6F61, size: 0x8, addend: 0x0, symName: '__logos_meta_method$XHooks$NSTimeZone$defaultTimeZone', symObjAddr: 0x3420, symBinAddr: 0x7420, symSize: 0xEC }
- { offset: 0x6B74, size: 0x8, addend: 0x0, symName: '__logos_meta_method$ohno$NSLocale$preferredLanguages', symObjAddr: 0x3B28, symBinAddr: 0x7B28, symSize: 0x8C } - { offset: 0x6FA9, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$NSMutableURLRequest$initWithURL$', symObjAddr: 0x350C, symBinAddr: 0x750C, symSize: 0x140 }
- { offset: 0x6BAD, size: 0x8, addend: 0x0, symName: '__logos_meta_method$ohno$NSLocale$currentLocale', symObjAddr: 0x3BB4, symBinAddr: 0x7BB4, symSize: 0x178 } - { offset: 0x7006, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$NSMutableURLRequest$setValue$forHTTPHeaderField$', symObjAddr: 0x364C, symBinAddr: 0x764C, symSize: 0x140 }
- { offset: 0x6BFA, size: 0x8, addend: 0x0, symName: '__logos_meta_method$ohno$NSLocale$systemLocale', symObjAddr: 0x3D2C, symBinAddr: 0x7D2C, symSize: 0x178 } - { offset: 0x707D, size: 0x8, addend: 0x0, symName: '__logos_meta_method$XHooks$NSURLSession$sessionWithConfiguration$', symObjAddr: 0x378C, symBinAddr: 0x778C, symSize: 0x174 }
- { offset: 0x6C47, size: 0x8, addend: 0x0, symName: '__logos_meta_method$ohno$NSTimeZone$localTimeZone', symObjAddr: 0x3EA4, symBinAddr: 0x7EA4, symSize: 0x178 } - { offset: 0x70D4, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$NSURLSession$dataTaskWithRequest$completionHandler$', symObjAddr: 0x3900, symBinAddr: 0x7900, symSize: 0x148 }
- { offset: 0x6C94, size: 0x8, addend: 0x0, symName: '__logos_meta_method$ohno$NSTimeZone$systemTimeZone', symObjAddr: 0x401C, symBinAddr: 0x801C, symSize: 0x178 } - { offset: 0x7149, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$WKWebView$evaluateJavaScript$completionHandler$', symObjAddr: 0x3A48, symBinAddr: 0x7A48, symSize: 0x104 }
- { offset: 0x6CE1, size: 0x8, addend: 0x0, symName: '__logos_meta_method$ohno$NSTimeZone$defaultTimeZone', symObjAddr: 0x4194, symBinAddr: 0x8194, symSize: 0x178 } - { offset: 0x71AB, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$WKWebView$setCustomUserAgent$', symObjAddr: 0x3B4C, symBinAddr: 0x7B4C, symSize: 0xF0 }
- { offset: 0x6D2E, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$UIStatusBarManager$statusBarFrame', symObjAddr: 0x430C, symBinAddr: 0x830C, symSize: 0x148 } - { offset: 0x71FE, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$WKWebView$customUserAgent', symObjAddr: 0x3C3C, symBinAddr: 0x7C3C, symSize: 0x124 }
- { offset: 0x6D7C, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$NSMutableURLRequest$initWithURL$', symObjAddr: 0x4454, symBinAddr: 0x8454, symSize: 0x150 } - { offset: 0x7246, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$CTTelephonyNetworkInfo$serviceCurrentRadioAccessTechnology', symObjAddr: 0x3D60, symBinAddr: 0x7D60, symSize: 0x3C0 }
- { offset: 0x6DC4, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$NSMutableURLRequest$setValue$forHTTPHeaderField$', symObjAddr: 0x45A4, symBinAddr: 0x85A4, symSize: 0x1BC } - { offset: 0x72ED, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$CTTelephonyNetworkInfo$serviceSubscriberCellularProviders', symObjAddr: 0x4120, symBinAddr: 0x8120, symSize: 0x6DC }
- { offset: 0x6E2C, size: 0x8, addend: 0x0, symName: '__logos_meta_method$ohno$NSURLSession$sessionWithConfiguration$', symObjAddr: 0x4760, symBinAddr: 0x8760, symSize: 0x120 } - { offset: 0x7394, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$CMMotionManager$startGyroUpdatesToQueue$withHandler$', symObjAddr: 0x47FC, symBinAddr: 0x87FC, symSize: 0x16C }
- { offset: 0x6E74, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$NSURLSession$dataTaskWithRequest$completionHandler$', symObjAddr: 0x4880, symBinAddr: 0x8880, symSize: 0x160 } - { offset: 0x73F6, size: 0x8, addend: 0x0, symName: '__logos_function$XHooks$uname', symObjAddr: 0x4968, symBinAddr: 0x8968, symSize: 0x100 }
- { offset: 0x6EDA, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$WKWebView$evaluateJavaScript$completionHandler$', symObjAddr: 0x49E0, symBinAddr: 0x89E0, symSize: 0x21C } - { offset: 0x745C, size: 0x8, addend: 0x0, symName: '__logos_function$XHooks$sysctl', symObjAddr: 0x4A68, symBinAddr: 0x8A68, symSize: 0x354 }
- { offset: 0x6F42, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$WKWebView$setCustomUserAgent$', symObjAddr: 0x4BFC, symBinAddr: 0x8BFC, symSize: 0x170 } - { offset: 0x7559, size: 0x8, addend: 0x0, symName: '__logos_function$XHooks$sysctlbyname', symObjAddr: 0x4DBC, symBinAddr: 0x8DBC, symSize: 0x2B8 }
- { offset: 0x6F9B, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$WKWebView$customUserAgent', symObjAddr: 0x4D6C, symBinAddr: 0x8D6C, symSize: 0x16C } - { offset: 0x768F, size: 0x8, addend: 0x0, symName: '__logos_function$XHooks$clock_gettime', symObjAddr: 0x5074, symBinAddr: 0x9074, symSize: 0x54 }
- { offset: 0x6FE8, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$CTTelephonyNetworkInfo$serviceCurrentRadioAccessTechnology', symObjAddr: 0x4ED8, symBinAddr: 0x8ED8, symSize: 0x19C } - { offset: 0x76D7, size: 0x8, addend: 0x0, symName: '__logos_function$XHooks$getifaddrs', symObjAddr: 0x50C8, symBinAddr: 0x90C8, symSize: 0x618 }
- { offset: 0x703F, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$CTTelephonyNetworkInfo$serviceSubscriberCellularProviders', symObjAddr: 0x5074, symBinAddr: 0x9074, symSize: 0x19C } - { offset: 0x7857, size: 0x8, addend: 0x0, symName: '__logos_function$XHooks$SCNetworkReachabilityGetFlags', symObjAddr: 0x56E0, symBinAddr: 0x96E0, symSize: 0x7C }
- { offset: 0x7096, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$CMMotionManager$startGyroUpdatesToQueue$withHandler$', symObjAddr: 0x5210, symBinAddr: 0x9210, symSize: 0x16C } - { offset: 0x789F, size: 0x8, addend: 0x0, symName: __logosLocalDtor_2e2d985c, symObjAddr: 0x575C, symBinAddr: 0x975C, symSize: 0x68 }
- { offset: 0x70F8, size: 0x8, addend: 0x0, symName: '__logos_function$ohno$uname', symObjAddr: 0x537C, symBinAddr: 0x937C, symSize: 0xA4 } - { offset: 0x78E3, size: 0x8, addend: 0x0, symName: '____logos_meta_method$XHooks$ATTrackingManager$requestTrackingAuthorizationWithCompletionHandler$_block_invoke', symObjAddr: 0x57C4, symBinAddr: 0x97C4, symSize: 0x58 }
- { offset: 0x7131, size: 0x8, addend: 0x0, symName: '__logos_function$ohno$sysctl', symObjAddr: 0x5420, symBinAddr: 0x9420, symSize: 0x458 } - { offset: 0x792D, size: 0x8, addend: 0x0, symName: ___copy_helper_block_e8_32b, symObjAddr: 0x581C, symBinAddr: 0x981C, symSize: 0x3C }
- { offset: 0x721E, size: 0x8, addend: 0x0, symName: '__logos_function$ohno$sysctlbyname', symObjAddr: 0x5878, symBinAddr: 0x9878, symSize: 0x47C } - { offset: 0x7951, size: 0x8, addend: 0x0, symName: ___destroy_helper_block_e8_32s, symObjAddr: 0x5858, symBinAddr: 0x9858, symSize: 0x30 }
- { offset: 0x731C, size: 0x8, addend: 0x0, symName: '__logos_function$ohno$clock_gettime', symObjAddr: 0x5CF4, symBinAddr: 0x9CF4, symSize: 0x60 } - { offset: 0x796D, size: 0x8, addend: 0x0, symName: _UIEdgeInsetsMake, symObjAddr: 0x5888, symBinAddr: 0x9888, symSize: 0x4C }
- { offset: 0x7364, size: 0x8, addend: 0x0, symName: '__logos_function$ohno$getifaddrs', symObjAddr: 0x5D54, symBinAddr: 0x9D54, symSize: 0x6C4 } - { offset: 0x79CD, size: 0x8, addend: 0x0, symName: _CGRectMake, symObjAddr: 0x58D4, symBinAddr: 0x98D4, symSize: 0x4C }
- { offset: 0x74EA, size: 0x8, addend: 0x0, symName: '__logos_function$ohno$SCNetworkReachabilityGetFlags', symObjAddr: 0x6418, symBinAddr: 0xA418, symSize: 0x88 } - { offset: 0x7A33, size: 0x8, addend: 0x0, symName: _CGSizeMake, symObjAddr: 0x5920, symBinAddr: 0x9920, symSize: 0x2C }
- { offset: 0x7532, size: 0x8, addend: 0x0, symName: __logosLocalDtor_9db639d6, symObjAddr: 0x64A0, symBinAddr: 0xA4A0, symSize: 0x2C } - { offset: 0x7A7B, size: 0x8, addend: 0x0, symName: '____logos_method$XHooks$NSFileManager$fileExistsAtPath$_block_invoke', symObjAddr: 0x594C, symBinAddr: 0x994C, symSize: 0xA0 }
- { offset: 0x7576, size: 0x8, addend: 0x0, symName: '____logos_meta_method$ohno$ATTrackingManager$trackingAuthorizationStatus_block_invoke', symObjAddr: 0x64CC, symBinAddr: 0xA4CC, symSize: 0x84 } - { offset: 0x7B05, size: 0x8, addend: 0x0, symName: ___copy_helper_block_e8_32s, symObjAddr: 0x59EC, symBinAddr: 0x99EC, symSize: 0x3C }
- { offset: 0x75C3, size: 0x8, addend: 0x0, symName: ___copy_helper_block_e8_32r, symObjAddr: 0x6550, symBinAddr: 0xA550, symSize: 0x3C } - { offset: 0x7B29, size: 0x8, addend: 0x0, symName: '____logos_method$XHooks$CMMotionManager$startGyroUpdatesToQueue$withHandler$_block_invoke', symObjAddr: 0x5A28, symBinAddr: 0x9A28, symSize: 0x114 }
- { offset: 0x75E7, size: 0x8, addend: 0x0, symName: ___destroy_helper_block_e8_32r, symObjAddr: 0x658C, symBinAddr: 0xA58C, symSize: 0x30 } - { offset: 0x7BAF, size: 0x8, addend: 0x0, symName: _randomRadiansPerSecond, symObjAddr: 0x5B3C, symBinAddr: 0x9B3C, symSize: 0x48 }
- { offset: 0x7603, size: 0x8, addend: 0x0, symName: '____logos_meta_method$ohno$ATTrackingManager$requestTrackingAuthorizationWithCompletionHandler$_block_invoke', symObjAddr: 0x65BC, symBinAddr: 0xA5BC, symSize: 0x84 } - { offset: 0x7BD9, size: 0x8, addend: 0x0, symName: _modifyInterfaceIP, symObjAddr: 0x5B84, symBinAddr: 0x9B84, symSize: 0x144 }
- { offset: 0x7650, size: 0x8, addend: 0x0, symName: '____logos_meta_method$ohno$ATTrackingManager$requestTrackingAuthorizationWithCompletionHandler$_block_invoke_2', symObjAddr: 0x6640, symBinAddr: 0xA640, symSize: 0x60 } - { offset: 0x7C6C, size: 0x8, addend: 0x0, symName: _createInterface, symObjAddr: 0x5CC8, symBinAddr: 0x9CC8, symSize: 0x3CC }
- { offset: 0x76A0, size: 0x8, addend: 0x0, symName: ___copy_helper_block_e8_32b40r, symObjAddr: 0x66A0, symBinAddr: 0xA6A0, symSize: 0x5C } - { offset: 0x7D15, size: 0x8, addend: 0x0, symName: '__logos_function$XHooks$UIAccessibilityIsClosedCaptioningEnabled', symObjAddr: 0x6094, symBinAddr: 0xA094, symSize: 0xC }
- { offset: 0x76C4, size: 0x8, addend: 0x0, symName: ___destroy_helper_block_e8_32s40r, symObjAddr: 0x66FC, symBinAddr: 0xA6FC, symSize: 0x44 } - { offset: 0x7D2F, size: 0x8, addend: 0x0, symName: '__logos_function$XHooks$UIAccessibilityIsMonoAudioEnabled', symObjAddr: 0x60A0, symBinAddr: 0xA0A0, symSize: 0xC }
- { offset: 0x76E0, size: 0x8, addend: 0x0, symName: ___Block_byref_object_copy_, symObjAddr: 0x6740, symBinAddr: 0xA740, symSize: 0x58 } - { offset: 0x7D49, size: 0x8, addend: 0x0, symName: ___GLOBAL_init_65535, symObjAddr: 0x6284, symBinAddr: 0xA0AC, symSize: 0x34 }
- { offset: 0x7704, size: 0x8, addend: 0x0, symName: ___Block_byref_object_dispose_, symObjAddr: 0x6798, symBinAddr: 0xA798, symSize: 0x30 } - { offset: 0x7FCF, size: 0x8, addend: 0x0, symName: _XSLogSetupLogWithFilePath, symObjAddr: 0x0, symBinAddr: 0xA0E0, symSize: 0x11C }
- { offset: 0x7720, size: 0x8, addend: 0x0, symName: '____logos_method$ohno$ASIdentifierManager$advertisingIdentifier_block_invoke', symObjAddr: 0x67C8, symBinAddr: 0xA7C8, symSize: 0x84 } - { offset: 0x7FE8, size: 0x8, addend: 0x0, symName: _kLogFilePath, symObjAddr: 0xEA8, symBinAddr: 0x14CF0, symSize: 0x0 }
- { offset: 0x776D, size: 0x8, addend: 0x0, symName: '____logos_method$ohno$ASIdentifierManager$isAdvertisingTrackingEnabled_block_invoke', symObjAddr: 0x684C, symBinAddr: 0xA84C, symSize: 0xA0 } - { offset: 0x804F, size: 0x8, addend: 0x0, symName: _XSLogSetupLogWithFilePath, symObjAddr: 0x0, symBinAddr: 0xA0E0, symSize: 0x11C }
- { offset: 0x77D6, size: 0x8, addend: 0x0, symName: '____logos_method$ohno$UIDevice$identifierForVendor_block_invoke', symObjAddr: 0x68EC, symBinAddr: 0xA8EC, symSize: 0x84 } - { offset: 0x8070, size: 0x8, addend: 0x0, symName: _XSLogSetupLogWithFilePath.onceToken, symObjAddr: 0x3E60, symBinAddr: 0x14EA8, symSize: 0x0 }
- { offset: 0x7823, size: 0x8, addend: 0x0, symName: '____logos_method$ohno$UIDevice$name_block_invoke', symObjAddr: 0x6970, symBinAddr: 0xA970, symSize: 0x68 } - { offset: 0x8115, size: 0x8, addend: 0x0, symName: _logFileHandle, symObjAddr: 0x3E70, symBinAddr: 0x14EB8, symSize: 0x0 }
- { offset: 0x7870, size: 0x8, addend: 0x0, symName: '____logos_method$ohno$UIDevice$systemVersion_block_invoke', symObjAddr: 0x69D8, symBinAddr: 0xA9D8, symSize: 0x68 } - { offset: 0x8195, size: 0x8, addend: 0x0, symName: _logQueue, symObjAddr: 0x3E68, symBinAddr: 0x14EB0, symSize: 0x0 }
- { offset: 0x78BD, size: 0x8, addend: 0x0, symName: '____logos_method$ohno$UIDevice$batteryState_block_invoke', symObjAddr: 0x6A40, symBinAddr: 0xAA40, symSize: 0x74 } - { offset: 0x81BA, size: 0x8, addend: 0x0, symName: _kMaxFileSize, symObjAddr: 0xEB0, symBinAddr: 0x14CF8, symSize: 0x0 }
- { offset: 0x7926, size: 0x8, addend: 0x0, symName: '____logos_method$ohno$UIDevice$batteryLevel_block_invoke', symObjAddr: 0x6AB4, symBinAddr: 0xAAB4, symSize: 0x68 } - { offset: 0x81CF, size: 0x8, addend: 0x0, symName: _logCount, symObjAddr: 0x3E78, symBinAddr: 0x14EC0, symSize: 0x0 }
- { offset: 0x7973, size: 0x8, addend: 0x0, symName: '____logos_method$ohno$NSProcessInfo$systemUptime_block_invoke', symObjAddr: 0x6B1C, symBinAddr: 0xAB1C, symSize: 0x8C } - { offset: 0x82ED, size: 0x8, addend: 0x0, symName: ___XSLogSetupLogWithFilePath_block_invoke, symObjAddr: 0x11C, symBinAddr: 0xA1FC, symSize: 0x88 }
- { offset: 0x79DC, size: 0x8, addend: 0x0, symName: '____logos_method$ohno$NSProcessInfo$physicalMemory_block_invoke', symObjAddr: 0x6BA8, symBinAddr: 0xABA8, symSize: 0x78 } - { offset: 0x8337, size: 0x8, addend: 0x0, symName: _setupLogFileHandle, symObjAddr: 0x1A4, symBinAddr: 0xA284, symSize: 0x184 }
- { offset: 0x7A45, size: 0x8, addend: 0x0, symName: '____logos_method$ohno$NSProcessInfo$processorCount_block_invoke', symObjAddr: 0x6C20, symBinAddr: 0xAC20, symSize: 0x78 } - { offset: 0x835B, size: 0x8, addend: 0x0, symName: _XSLogSetupLogWithFileName, symObjAddr: 0x394, symBinAddr: 0xA408, symSize: 0x98 }
- { offset: 0x7AB3, size: 0x8, addend: 0x0, symName: '____logos_method$ohno$NSProcessInfo$operatingSystemVersion_block_invoke', symObjAddr: 0x6C98, symBinAddr: 0xAC98, symSize: 0x68 } - { offset: 0x838D, size: 0x8, addend: 0x0, symName: _getLogFilePath, symObjAddr: 0x42C, symBinAddr: 0xA4A0, symSize: 0x100 }
- { offset: 0x7B04, size: 0x8, addend: 0x0, symName: '____logos_method$ohno$UIWindow$safeAreaInsets_block_invoke', symObjAddr: 0x6D00, symBinAddr: 0xAD00, symSize: 0x164 } - { offset: 0x83DF, size: 0x8, addend: 0x0, symName: _XSLogRedirectNSLog, symObjAddr: 0x52C, symBinAddr: 0xA5A0, symSize: 0xC4 }
- { offset: 0x7B81, size: 0x8, addend: 0x0, symName: _UIEdgeInsetsMake, symObjAddr: 0x6E64, symBinAddr: 0xAE64, symSize: 0x4C } - { offset: 0x8411, size: 0x8, addend: 0x0, symName: _XSLogMessage, symObjAddr: 0x5F0, symBinAddr: 0xA664, symSize: 0x118 }
- { offset: 0x7BE1, size: 0x8, addend: 0x0, symName: '____logos_method$ohno$UIScreen$brightness_block_invoke', symObjAddr: 0x6EB0, symBinAddr: 0xAEB0, symSize: 0x7C } - { offset: 0x8452, size: 0x8, addend: 0x0, symName: ___XSLogMessage_block_invoke, symObjAddr: 0x708, symBinAddr: 0xA77C, symSize: 0x2D0 }
- { offset: 0x7C4F, size: 0x8, addend: 0x0, symName: '____logos_method$ohno$UIScreen$bounds_block_invoke', symObjAddr: 0x6F2C, symBinAddr: 0xAF2C, symSize: 0x130 } - { offset: 0x84DE, size: 0x8, addend: 0x0, symName: _checkAndRollLogFile, symObjAddr: 0x9D8, symBinAddr: 0xAA4C, symSize: 0x29C }
- { offset: 0x7CEB, size: 0x8, addend: 0x0, symName: '____logos_method$ohno$UIScreen$scale_block_invoke', symObjAddr: 0x705C, symBinAddr: 0xB05C, symSize: 0x7C } - { offset: 0x8CEF, size: 0x8, addend: 0x0, symName: '+[XHookSettingsManager sharedManager]', symObjAddr: 0x0, symBinAddr: 0xACE8, symSize: 0x90 }
- { offset: 0x7D59, size: 0x8, addend: 0x0, symName: '____logos_method$ohno$UIScreen$nativeBounds_block_invoke', symObjAddr: 0x70D8, symBinAddr: 0xB0D8, symSize: 0x130 } - { offset: 0x8CFC, size: 0x8, addend: 0x0, symName: '+[XHookSettingsManager sharedManager]', symObjAddr: 0x0, symBinAddr: 0xACE8, symSize: 0x90 }
- { offset: 0x7DF5, size: 0x8, addend: 0x0, symName: '____logos_method$ohno$AVAudioSession$outputVolume_block_invoke', symObjAddr: 0x7208, symBinAddr: 0xB208, symSize: 0x7C } - { offset: 0x8D25, size: 0x8, addend: 0x0, symName: _sharedManager.manager, symObjAddr: 0x6E40, symBinAddr: 0x14EC8, symSize: 0x0 }
- { offset: 0x7E63, size: 0x8, addend: 0x0, symName: '____logos_method$ohno$UIScreenMode$size_block_invoke', symObjAddr: 0x7284, symBinAddr: 0xB284, symSize: 0x11C } - { offset: 0x8D3A, size: 0x8, addend: 0x0, symName: _sharedManager.onceToken, symObjAddr: 0x6E48, symBinAddr: 0x14ED0, symSize: 0x0 }
- { offset: 0x7EFE, size: 0x8, addend: 0x0, symName: '____logos_method$ohno$NSFileManager$attributesOfFileSystemForPath$error$_block_invoke', symObjAddr: 0x73A0, symBinAddr: 0xB3A0, symSize: 0xB4 } - { offset: 0x9246, size: 0x8, addend: 0x0, symName: '___37+[XHookSettingsManager sharedManager]_block_invoke', symObjAddr: 0x90, symBinAddr: 0xAD78, symSize: 0x58 }
- { offset: 0x7F66, size: 0x8, addend: 0x0, symName: ___copy_helper_block_e8_32s, symObjAddr: 0x7454, symBinAddr: 0xB454, symSize: 0x3C } - { offset: 0x926E, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager init]', symObjAddr: 0xE8, symBinAddr: 0xADD0, symSize: 0xB4 }
- { offset: 0x7F8A, size: 0x8, addend: 0x0, symName: ___destroy_helper_block_e8_32s, symObjAddr: 0x7490, symBinAddr: 0xB490, symSize: 0x30 } - { offset: 0x92A4, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager resetToDefaults]', symObjAddr: 0x19C, symBinAddr: 0xAE84, symSize: 0x188 }
- { offset: 0x7FA6, size: 0x8, addend: 0x0, symName: '____logos_method$ohno$NSFileManager$attributesOfFileSystemForPath$error$_block_invoke.315', symObjAddr: 0x74C0, symBinAddr: 0xB4C0, symSize: 0xB4 } - { offset: 0x92D6, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager parseString:defaultValue:]', symObjAddr: 0x324, symBinAddr: 0xB00C, symSize: 0xEC }
- { offset: 0x800E, size: 0x8, addend: 0x0, symName: '____logos_method$ohno$NSFileManager$fileExistsAtPath$_block_invoke', symObjAddr: 0x7574, symBinAddr: 0xB574, symSize: 0xA0 } - { offset: 0x9328, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager parseInteger:defaultValue:]', symObjAddr: 0x410, symBinAddr: 0xB0F8, symSize: 0x104 }
- { offset: 0x8098, size: 0x8, addend: 0x0, symName: '____logos_meta_method$ohno$NSLocale$currentLocale_block_invoke', symObjAddr: 0x7614, symBinAddr: 0xB614, symSize: 0xB4 } - { offset: 0x937A, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager parseFloat:defaultValue:]', symObjAddr: 0x514, symBinAddr: 0xB1FC, symSize: 0x104 }
- { offset: 0x8106, size: 0x8, addend: 0x0, symName: '____logos_meta_method$ohno$NSLocale$systemLocale_block_invoke', symObjAddr: 0x76C8, symBinAddr: 0xB6C8, symSize: 0xB4 } - { offset: 0x93CC, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager parseDouble:defaultValue:]', symObjAddr: 0x618, symBinAddr: 0xB300, symSize: 0x104 }
- { offset: 0x8174, size: 0x8, addend: 0x0, symName: '____logos_meta_method$ohno$NSTimeZone$localTimeZone_block_invoke', symObjAddr: 0x777C, symBinAddr: 0xB77C, symSize: 0xB8 } - { offset: 0x941E, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager parseULL:defaultValue:]', symObjAddr: 0x71C, symBinAddr: 0xB404, symSize: 0x104 }
- { offset: 0x81E2, size: 0x8, addend: 0x0, symName: '____logos_meta_method$ohno$NSTimeZone$systemTimeZone_block_invoke', symObjAddr: 0x7834, symBinAddr: 0xB834, symSize: 0xB8 } - { offset: 0x9470, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager parseUUID:]', symObjAddr: 0x820, symBinAddr: 0xB508, symSize: 0xC0 }
- { offset: 0x8250, size: 0x8, addend: 0x0, symName: '____logos_meta_method$ohno$NSTimeZone$defaultTimeZone_block_invoke', symObjAddr: 0x78EC, symBinAddr: 0xB8EC, symSize: 0xB8 } - { offset: 0x94B4, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager parseDictionary:]', symObjAddr: 0x8E0, symBinAddr: 0xB5C8, symSize: 0xB8 }
- { offset: 0x82BE, size: 0x8, addend: 0x0, symName: '____logos_method$ohno$UIStatusBarManager$statusBarFrame_block_invoke', symObjAddr: 0x79A4, symBinAddr: 0xB9A4, symSize: 0xE4 } - { offset: 0x94F8, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager parseArray:]', symObjAddr: 0x998, symBinAddr: 0xB680, symSize: 0xB8 }
- { offset: 0x834A, size: 0x8, addend: 0x0, symName: '____logos_method$ohno$NSMutableURLRequest$initWithURL$_block_invoke', symObjAddr: 0x7A88, symBinAddr: 0xBA88, symSize: 0x6C } - { offset: 0x953C, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager loadSettingsFromPath:]', symObjAddr: 0xA50, symBinAddr: 0xB738, symSize: 0x304 }
- { offset: 0x8395, size: 0x8, addend: 0x0, symName: '____logos_method$ohno$NSMutableURLRequest$setValue$forHTTPHeaderField$_block_invoke', symObjAddr: 0x7AF4, symBinAddr: 0xBAF4, symSize: 0x68 } - { offset: 0x95DD, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager parseSettings:]', symObjAddr: 0xD54, symBinAddr: 0xBA3C, symSize: 0xAB8 }
- { offset: 0x83E6, size: 0x8, addend: 0x0, symName: '____logos_meta_method$ohno$NSURLSession$sessionWithConfiguration$_block_invoke', symObjAddr: 0x7B5C, symBinAddr: 0xBB5C, symSize: 0xE0 } - { offset: 0x962B, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager cleanup]', symObjAddr: 0x180C, symBinAddr: 0xC4F4, symSize: 0x30 }
- { offset: 0x8431, size: 0x8, addend: 0x0, symName: '____logos_method$ohno$NSURLSession$dataTaskWithRequest$completionHandler$_block_invoke', symObjAddr: 0x7C3C, symBinAddr: 0xBC3C, symSize: 0x6C } - { offset: 0x965D, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager shouldHookApp:]', symObjAddr: 0x183C, symBinAddr: 0xC524, symSize: 0xAC }
- { offset: 0x847C, size: 0x8, addend: 0x0, symName: '____logos_method$ohno$WKWebView$evaluateJavaScript$completionHandler$_block_invoke', symObjAddr: 0x7CA8, symBinAddr: 0xBCA8, symSize: 0x68 } - { offset: 0x96A1, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager isLoaded]', symObjAddr: 0x18E8, symBinAddr: 0xC5D0, symSize: 0x20 }
- { offset: 0x84CD, size: 0x8, addend: 0x0, symName: '____logos_method$ohno$WKWebView$setCustomUserAgent$_block_invoke', symObjAddr: 0x7D10, symBinAddr: 0xBD10, symSize: 0x68 } - { offset: 0x96D7, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager idfa]', symObjAddr: 0x1908, symBinAddr: 0xC5F0, symSize: 0x1C }
- { offset: 0x851E, size: 0x8, addend: 0x0, symName: '____logos_method$ohno$WKWebView$customUserAgent_block_invoke', symObjAddr: 0x7D78, symBinAddr: 0xBD78, symSize: 0x68 } - { offset: 0x970D, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager idfv]', symObjAddr: 0x1924, symBinAddr: 0xC60C, symSize: 0x1C }
- { offset: 0x856F, size: 0x8, addend: 0x0, symName: '____logos_method$ohno$CTTelephonyNetworkInfo$serviceCurrentRadioAccessTechnology_block_invoke', symObjAddr: 0x7DE0, symBinAddr: 0xBDE0, symSize: 0x26C } - { offset: 0x9743, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager deviceName]', symObjAddr: 0x1940, symBinAddr: 0xC628, symSize: 0x1C }
- { offset: 0x8617, size: 0x8, addend: 0x0, symName: '____logos_method$ohno$CTTelephonyNetworkInfo$serviceSubscriberCellularProviders_block_invoke', symObjAddr: 0x804C, symBinAddr: 0xC04C, symSize: 0x370 } - { offset: 0x9779, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager osVersion]', symObjAddr: 0x195C, symBinAddr: 0xC644, symSize: 0x1C }
- { offset: 0x86BF, size: 0x8, addend: 0x0, symName: '____logos_method$ohno$CMMotionManager$startGyroUpdatesToQueue$withHandler$_block_invoke', symObjAddr: 0x83BC, symBinAddr: 0xC3BC, symSize: 0x164 } - { offset: 0x97AF, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager productStr]', symObjAddr: 0x1978, symBinAddr: 0xC660, symSize: 0x1C }
- { offset: 0x8764, size: 0x8, addend: 0x0, symName: ___copy_helper_block_e8_32b, symObjAddr: 0x8520, symBinAddr: 0xC520, symSize: 0x3C } - { offset: 0x97E5, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager hwModel]', symObjAddr: 0x1994, symBinAddr: 0xC67C, symSize: 0x1C }
- { offset: 0x8788, size: 0x8, addend: 0x0, symName: _randomRadiansPerSecond, symObjAddr: 0x855C, symBinAddr: 0xC55C, symSize: 0x48 } - { offset: 0x981B, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager trackingStatus]', symObjAddr: 0x19B0, symBinAddr: 0xC698, symSize: 0x1C }
- { offset: 0x87B2, size: 0x8, addend: 0x0, symName: '____logos_function$ohno$uname_block_invoke', symObjAddr: 0x85A4, symBinAddr: 0xC5A4, symSize: 0xB4 } - { offset: 0x9851, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager physicalMemory]', symObjAddr: 0x19CC, symBinAddr: 0xC6B4, symSize: 0x1C }
- { offset: 0x881B, size: 0x8, addend: 0x0, symName: '____logos_function$ohno$sysctl_block_invoke', symObjAddr: 0x8658, symBinAddr: 0xC658, symSize: 0x7C } - { offset: 0x9887, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager cpuCore]', symObjAddr: 0x19E8, symBinAddr: 0xC6D0, symSize: 0x1C }
- { offset: 0x8883, size: 0x8, addend: 0x0, symName: '____logos_function$ohno$sysctl_block_invoke_2', symObjAddr: 0x86D4, symBinAddr: 0xC6D4, symSize: 0x6C } - { offset: 0x98BD, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager systemUptimeOffset]', symObjAddr: 0x1A04, symBinAddr: 0xC6EC, symSize: 0x1C }
- { offset: 0x88D4, size: 0x8, addend: 0x0, symName: '____logos_function$ohno$sysctlbyname_block_invoke', symObjAddr: 0x8740, symBinAddr: 0xC740, symSize: 0xC4 } - { offset: 0x98F3, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager kernBootTimeOffset]', symObjAddr: 0x1A20, symBinAddr: 0xC708, symSize: 0x1C }
- { offset: 0x893A, size: 0x8, addend: 0x0, symName: '____logos_function$ohno$sysctlbyname_block_invoke_2', symObjAddr: 0x8804, symBinAddr: 0xC804, symSize: 0xC4 } - { offset: 0x9929, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager batteryState]', symObjAddr: 0x1A3C, symBinAddr: 0xC724, symSize: 0x1C }
- { offset: 0x89A0, size: 0x8, addend: 0x0, symName: '____logos_function$ohno$getifaddrs_block_invoke', symObjAddr: 0x88C8, symBinAddr: 0xC8C8, symSize: 0x90 } - { offset: 0x995F, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager batteryLevel]', symObjAddr: 0x1A58, symBinAddr: 0xC740, symSize: 0x1C }
- { offset: 0x89F1, size: 0x8, addend: 0x0, symName: _modifyInterfaceIP, symObjAddr: 0x8958, symBinAddr: 0xC958, symSize: 0x170 } - { offset: 0x9995, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager screenBrightness]', symObjAddr: 0x1A74, symBinAddr: 0xC75C, symSize: 0x1C }
- { offset: 0x8A84, size: 0x8, addend: 0x0, symName: _createInterface, symObjAddr: 0x8AC8, symBinAddr: 0xCAC8, symSize: 0x3F8 } - { offset: 0x99CB, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager screenScale]', symObjAddr: 0x1A90, symBinAddr: 0xC778, symSize: 0x1C }
- { offset: 0x8B2D, size: 0x8, addend: 0x0, symName: '__logos_function$ohno$UIAccessibilityIsClosedCaptioningEnabled', symObjAddr: 0x8EC0, symBinAddr: 0xCEC0, symSize: 0xC } - { offset: 0x9A01, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager screenBounds]', symObjAddr: 0x1AAC, symBinAddr: 0xC794, symSize: 0x1C }
- { offset: 0x8B47, size: 0x8, addend: 0x0, symName: '__logos_function$ohno$UIAccessibilityIsMonoAudioEnabled', symObjAddr: 0x8ECC, symBinAddr: 0xCECC, symSize: 0xC } - { offset: 0x9A37, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager safeAreaInsets]', symObjAddr: 0x1AC8, symBinAddr: 0xC7B0, symSize: 0x1C }
- { offset: 0x8B61, size: 0x8, addend: 0x0, symName: _cleanup, symObjAddr: 0x8ED8, symBinAddr: 0xCED8, symSize: 0x3C } - { offset: 0x9A6D, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager diskSize]', symObjAddr: 0x1AE4, symBinAddr: 0xC7CC, symSize: 0x1C }
- { offset: 0x8B77, size: 0x8, addend: 0x0, symName: ___GLOBAL_init_65535, symObjAddr: 0x94F0, symBinAddr: 0xCF14, symSize: 0x34 } - { offset: 0x9AA3, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager diskFreeSize]', symObjAddr: 0x1B00, symBinAddr: 0xC7E8, symSize: 0x1C }
- { offset: 0x9AD9, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager outputVolume]', symObjAddr: 0x1B1C, symBinAddr: 0xC804, symSize: 0x1C }
- { offset: 0x9B0F, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager userAgent]', symObjAddr: 0x1B38, symBinAddr: 0xC820, symSize: 0x1C }
- { offset: 0x9B45, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager networkInterfacesInfo]', symObjAddr: 0x1B54, symBinAddr: 0xC83C, symSize: 0x1C }
- { offset: 0x9B7B, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager simInfo]', symObjAddr: 0x1B70, symBinAddr: 0xC858, symSize: 0x1C }
- { offset: 0x9BB1, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager locale]', symObjAddr: 0x1B8C, symBinAddr: 0xC874, symSize: 0x1C }
- { offset: 0x9BE7, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager timeZone]', symObjAddr: 0x1BA8, symBinAddr: 0xC890, symSize: 0x1C }
- { offset: 0x9C1D, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager apps]', symObjAddr: 0x1BC4, symBinAddr: 0xC8AC, symSize: 0x1C }
- { offset: 0x9C53, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager .cxx_destruct]', symObjAddr: 0x1BE0, symBinAddr: 0xC8C8, symSize: 0x10C }
... ...

View File

@ -1 +1 @@
68 117

View File

@ -10,7 +10,7 @@ TWEAK_NAME = AppRunMan
AppRunMan_FRAMEWORKS = CoreLocation CFNetwork CoreTelephony Security UIKit IOSurface JavaScriptCore network AppRunMan_FRAMEWORKS = CoreLocation CFNetwork CoreTelephony Security UIKit IOSurface JavaScriptCore network
AppRunMan_PRIVATE_FRAMEWORKS = IOKit AppRunMan_PRIVATE_FRAMEWORKS = IOKit
AppRunMan_FILES = Tweak.x $(wildcard server/*.m) $(wildcard server/GCD/*.m) AppRunMan_FILES = Tweak.x XSLog.m $(wildcard server/*.m) $(wildcard server/GCD/*.m)
AppRunMan_LDFLAGS = -v AppRunMan_LDFLAGS = -v
AppRunMan_CFLAGS = -Wno-error -Wno-module-import-in-extern-c -fobjc-arc AppRunMan_CFLAGS = -Wno-error -Wno-module-import-in-extern-c -fobjc-arc

View File

@ -4,13 +4,28 @@
#import <SpringBoard/SBApplication.h> #import <SpringBoard/SBApplication.h>
#import <SpringBoard/SBWorkspace.h> #import <SpringBoard/SBWorkspace.h>
#import <SpringBoard/SBApplicationController.h> #import <SpringBoard/SBApplicationController.h>
#import <unistd.h> // 为了 getpid()
#import <UIKit/UIKit.h> #import <UIKit/UIKit.h>
#import <objc/runtime.h> #import <objc/runtime.h>
#import "server/MySimpleServer.h" #import "server/MySimpleServer.h"
#import "server/FloatingWindow.h" #import "server/FloatingWindow.h"
#import "XSLog.h"
__attribute__((constructor)) static void SetupXSLog() {
XSLogSetupLogWithFilePath(@"/var/mobile/Documents/AppRunMain.log", 50 * 1024 * 1024);
XSLogRedirectNSLog();
}
// 一次性服务器启动封装
static void startServerOnce(void) {
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
NSLog(@"[AppRunMan] start app server (pid=%d)", getpid());
startSimpleServer();
});
}
@interface UIWindow (FloatingWindow) @interface UIWindow (FloatingWindow)
@end @end
@ -35,8 +50,6 @@
objc_setAssociatedObject(self, @selector(addFloatingWindow), floatingWindow, OBJC_ASSOCIATION_RETAIN_NONATOMIC); objc_setAssociatedObject(self, @selector(addFloatingWindow), floatingWindow, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
} }
@end @end
%group all %group all
@ -47,17 +60,18 @@
{ {
%orig; %orig;
// 延迟启动服务器让系统UI完全加载 // 延迟启动服务器让系统UI完全加载
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)),
dispatch_get_main_queue(), ^{ dispatch_get_main_queue(), ^{
startSimpleServer(); // 改为一次性启动
startServerOnce();
}); });
@autoreleasepool { @autoreleasepool {
// 延迟添加悬浮窗,给系统UI足够的启动时间 // 延迟添加悬浮窗,给系统UI足够的启动时间
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2 * NSEC_PER_SEC)), dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2 * NSEC_PER_SEC)),
dispatch_get_main_queue(), ^{ dispatch_get_main_queue(), ^{
// 添加保护机制 // 添加保护机制
@try { @try {
if (@available(iOS 13.0, *)) { if (@available(iOS 13.0, *)) {
// iOS 13+ 使用 UIWindowScene // iOS 13+ 使用 UIWindowScene
@ -95,7 +109,6 @@
// 清理悬浮窗 // 清理悬浮窗
} }
%end %end
/* /*
@ -109,15 +122,16 @@
return dict; return dict;
} }
%end %end
*/ */
%end %end
%ctor {
%ctor{ // 使用一次性保护,避免 dylib 被重复装载时重复执行
NSLog(@"start app server"); static dispatch_once_t onceToken;
%init(all); dispatch_once(&onceToken, ^{
NSLog(@"[AppRunMan] %ctor init (pid=%d)", getpid());
%init(all);
});
} }

22
AppRunMan/XSLog.h Normal file
View File

@ -0,0 +1,22 @@
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
/// @param logFileName 日志文件名
/// @param maxFileSize 日志文件最大大小(字节),超过此大小将创建新文件
void XSLogSetupLogWithFileName(NSString *logFileName, unsigned long long maxFileSize);
/// @param logFilePath 日志文件路径
/// @param maxFileSize 日志文件最大大小(字节),超过此大小将创建新文件
void XSLogSetupLogWithFilePath(NSString *logFilePath, unsigned long long maxFileSize);
void XSLogMessage(NSString *format, ...) __attribute__((format(NSString, 1, 2)));
void XSLogRedirectNSLog(void);
// 定义一个宏方便替换NSLog
#define XSLog(format, ...) XSLogMessage((format), ##__VA_ARGS__)
NS_ASSUME_NONNULL_END

162
AppRunMan/XSLog.m Normal file
View File

@ -0,0 +1,162 @@
#import "XSLog.h"
static NSString *kLogFilePath = @"app.log";
static unsigned long long kMaxFileSize = 10 * 1024 * 1024; // 10 MB
static NSFileHandle *logFileHandle;
static dispatch_queue_t logQueue;
static int logCount = 0; //
static const int kLogCheckFrequency = 100; // 100
//
static void setupLogFileHandle(NSString *logFilePath);
static void checkAndRollLogFile(NSString *logFilePath);
static NSString *getLogFilePath(NSString *logFileName);
void XSLogSetupLogWithFilePath(NSString *logFilePath,
unsigned long long maxFileSize) {
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
kLogFilePath = logFilePath;
kMaxFileSize = maxFileSize;
logQueue = dispatch_queue_create("com.yourcompany.app.logQueue",
DISPATCH_QUEUE_SERIAL);
//
setupLogFileHandle(logFilePath);
});
}
void XSLogSetupLogWithFileName(NSString *logFileName,
unsigned long long maxFileSize) {
kLogFilePath = getLogFilePath(logFileName);
XSLogSetupLogWithFilePath(kLogFilePath,maxFileSize);
}
static NSString *getLogFilePath(NSString *logFileName) {
// Documents
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
NSUserDomainMask, YES);
NSString *documentsDirectory = [paths firstObject];
NSString *logFilePath =
[documentsDirectory stringByAppendingPathComponent:logFileName];
return logFilePath;
}
static void setupLogFileHandle(NSString *logFilePath) {
//
checkAndRollLogFile(logFilePath);
//
if (logFileHandle) {
[logFileHandle closeFile];
logFileHandle = nil;
}
//
logFileHandle = [NSFileHandle fileHandleForWritingAtPath:logFilePath];
if (!logFileHandle) {
//
[[NSFileManager defaultManager] createFileAtPath:logFilePath
contents:nil
attributes:nil];
logFileHandle = [NSFileHandle fileHandleForWritingAtPath:logFilePath];
}
if (logFileHandle) {
//
[logFileHandle seekToEndOfFile];
} else {
fprintf(stderr, "Error: Could not open log file for writing.\n");
}
}
static void checkAndRollLogFile(NSString *logFilePath) {
NSFileManager *fileManager = [NSFileManager defaultManager];
if ([fileManager fileExistsAtPath:logFilePath]) {
NSError *error = nil;
NSDictionary *fileAttributes =
[fileManager attributesOfItemAtPath:logFilePath error:&error];
if (fileAttributes) {
unsigned long long fileSize = [fileAttributes fileSize];
if (fileSize > kMaxFileSize) {
//
NSString *backupFilePath =
[logFilePath stringByAppendingString:@".bak"];
[fileManager removeItemAtPath:backupFilePath
error:nil]; //
[fileManager moveItemAtPath:logFilePath
toPath:backupFilePath
error:&error]; //
if (error) {
fprintf(stderr, "Error rolling log file: %s\n",
error.localizedDescription.UTF8String);
}
//
[fileManager createFileAtPath:logFilePath contents:nil attributes:nil];
//
setupLogFileHandle(kLogFilePath);
}
} else {
fprintf(stderr, "Error getting file attributes: %s\n",
error.localizedDescription.UTF8String);
}
}
}
void XSLogRedirectNSLog(void) {
if (logFileHandle) {
int fd = [logFileHandle fileDescriptor];
if (fd != -1) {
//
if (dup2(fd, STDERR_FILENO) == -1) {
fprintf(stderr, "Error redirecting stderr to log file.\n");
}
} else {
fprintf(stderr, "Error: logFileHandle has an invalid file descriptor.\n");
}
} else {
fprintf(stderr, "Error: logFileHandle is not initialized. Cannot redirect stderr.\n");
}
}
void XSLogMessage(NSString *format, ...) {
va_list args;
va_start(args, format);
NSString *message = [[NSString alloc] initWithFormat:format arguments:args];
va_end(args);
dispatch_async(logQueue, ^{
//
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
dateFormatter.dateFormat = @"yyyy-MM-dd HH:mm:ss.SSS";
NSString *timestamp = [dateFormatter stringFromDate:[NSDate date]];
//
NSString *logString =
[NSString stringWithFormat:@"%@ %@\n", timestamp, message];
//
NSData *data = [logString dataUsingEncoding:NSUTF8StringEncoding];
if (logFileHandle) {
@try {
[logFileHandle writeData:data];
//
logCount++;
// kLogCheckFrequency
if (logCount >= kLogCheckFrequency) {
logCount = 0; //
checkAndRollLogFile(kLogFilePath);
}
} @catch (NSException *exception) {
fprintf(stderr, "Error writing to log file: %s\n",
exception.reason.UTF8String);
}
}
// 便
fprintf(stderr, "%s", [logString UTF8String]);
});
}

View File

@ -16,6 +16,9 @@
#import <Foundation/Foundation.h> #import <Foundation/Foundation.h>
@interface FloatingWindow () { @interface FloatingWindow () {
NSMutableArray *loadTimestamps;
NSMutableArray *showTimestamps;
NSTimer *updateTimer;
} }
@end @end
@ -38,7 +41,7 @@
action:@selector(detectPan:)]; action:@selector(detectPan:)];
[self addGestureRecognizer:panRecognizer]; [self addGestureRecognizer:panRecognizer];
self.backgroundColor = RGB(193, 41, 48); // RGB(85, 172, 119); self.backgroundColor = [UIColor grayColor]; //
self.layer.cornerRadius = 10; self.layer.cornerRadius = 10;
self.clipsToBounds = YES; self.clipsToBounds = YES;
@ -46,12 +49,145 @@
[self updateInfo]; [self updateInfo];
self.http = [[XSHttpHelper alloc] init]; self.http = [[XSHttpHelper alloc] init];
[[MyEventBus sharedInstance] registerSubscriber:self]; [[MyEventBus sharedInstance] registerSubscriber:self];
loadTimestamps = [[NSMutableArray alloc] init];
showTimestamps = [[NSMutableArray alloc] init];
[self startUpdatingCounts]; //
} }
return self; return self;
} }
- (void)dealloc { - (void)dealloc {
[[MyEventBus sharedInstance] unregisterSubscriber:self]; [[MyEventBus sharedInstance] unregisterSubscriber:self];
[self stopUpdatingCounts]; //
}
//
- (void)startUpdatingCounts {
updateTimer = [NSTimer scheduledTimerWithTimeInterval:5.0
target:self
selector:@selector(updateCounts)
userInfo:nil
repeats:YES];
[[NSRunLoop mainRunLoop] addTimer:updateTimer forMode:NSRunLoopCommonModes];
}
//
- (void)stopUpdatingCounts {
if ([updateTimer isValid]) {
[updateTimer invalidate];
updateTimer = nil;
}
}
//
- (void)updateCounts {
NSString *loadDir = @"/User/Documents/ad/load";
NSString *showDir = @"/User/Documents/ad/show";
NSInteger loadCount = [self countAndCleanFilesInDirectory:loadDir];
NSInteger showCount = [self countAndCleanFilesInDirectory:showDir];
dispatch_async(dispatch_get_main_queue(), ^{
self.infoLabel.text = [NSString stringWithFormat:@"S:%@ / L:%@", @(showCount), @(loadCount)];
[self updateBackgroundColorByShowCount:showCount];
});
}
//
- (NSInteger)countAndCleanFilesInDirectory:(NSString *)directoryPath {
NSFileManager *fileManager = [NSFileManager defaultManager];
NSArray *files = [fileManager contentsOfDirectoryAtPath:directoryPath error:nil];
NSDate *oneHourAgo = [NSDate dateWithTimeIntervalSinceNow:-3600];
NSInteger count = 0;
for (NSString *file in files) {
NSString *filePath = [directoryPath stringByAppendingPathComponent:file];
NSDictionary *attributes = [fileManager attributesOfItemAtPath:filePath error:nil];
NSDate *modificationDate = attributes[NSFileModificationDate];
if ([modificationDate compare:oneHourAgo] == NSOrderedDescending) {
count++;
} else {
[fileManager removeItemAtPath:filePath error:nil]; //
}
}
return count;
}
//
- (void)cleanExpiredTimestamps:(NSMutableArray *)timestamps {
NSDate *now = [NSDate date];
NSTimeInterval oneHourAgo = [now timeIntervalSince1970] - 3600; // 3600 = 1
NSPredicate *predicate = [NSPredicate predicateWithBlock:^BOOL(NSDate *timestamp, NSDictionary *bindings) {
return [timestamp timeIntervalSince1970] > oneHourAgo;
}];
NSArray *validTimestamps = [timestamps filteredArrayUsingPredicate:predicate];
[timestamps removeAllObjects];
[timestamps addObjectsFromArray:validTimestamps];
}
//
- (void)updateBackgroundColorByShowCount:(NSInteger)showCount {
UIColor *color;
if (showCount < 80) {
// #07A6E4
color = [UIColor colorWithRed:7/255.0 green:166/255.0 blue:228/255.0 alpha:1.0];
} else if (showCount < 160) {
// #D92727
color = [UIColor colorWithRed:217/255.0 green:39/255.0 blue:39/255.0 alpha:1.0];
} else if (showCount < 240) {
// #EF811C
color = [UIColor colorWithRed:239/255.0 green:129/255.0 blue:28/255.0 alpha:1.0];
} else {
// 绿 #08C951
color = [UIColor colorWithRed:8/255.0 green:201/255.0 blue:81/255.0 alpha:1.0];
}
dispatch_async(dispatch_get_main_queue(), ^{
self.backgroundColor = color;
});
}
// onEventLoad
- (void)onEventLoad:(id)data {
@synchronized(loadTimestamps) {
[loadTimestamps addObject:[NSDate date]];
[self cleanExpiredTimestamps:loadTimestamps];
NSInteger loadCount = loadTimestamps.count;
NSInteger showCount = showTimestamps.count;
dispatch_async(dispatch_get_main_queue(), ^{
self.infoLabel.text = [NSString stringWithFormat:@"S:%@ / L:%@", @(showCount), @(loadCount)];
});
NSLog(@"Load event: total in last hour = %ld", (long)loadCount);
}
}
// onEventShow
- (void)onEventShow:(id)data {
@synchronized(showTimestamps) {
[showTimestamps addObject:[NSDate date]];
[self cleanExpiredTimestamps:showTimestamps];
NSInteger showCount = showTimestamps.count;
NSInteger loadCount = loadTimestamps.count;
dispatch_async(dispatch_get_main_queue(), ^{
self.infoLabel.text = [NSString stringWithFormat:@"S:%@ / L:%@", @(showCount), @(loadCount)];
});
// show
[self updateBackgroundColorByShowCount:showCount];
NSLog(@"Show event: total in last hour = %ld", (long)showCount);
}
} }
- (void)setupUI { - (void)setupUI {
@ -130,48 +266,6 @@
self.deviceTypeLabel.text = @"unknow"; self.deviceTypeLabel.text = @"unknow";
} }
- (void)onEventUpdateInfo:(id)data {
__weak typeof(self) weakSelf = self;
if (data) {
dispatch_async(dispatch_get_main_queue(), ^{
NSDictionary *dic = data;
int loadNum = 0;
int showNum = 0;
int r = 25;
int g = 118;
int b = 210;
NSNumber *load = dic[@"loadCount"];
if (load && ![load isEqual:[NSNull null]]) {
loadNum = [load intValue];
}
NSNumber *show = dic[@"showCount"];
if (show && ![show isEqual:[NSNull null]]) {
showNum = [show intValue];
}
NSNumber *color_r = dic[@"color_r"];
if (color_r && ![color_r isEqual:[NSNull null]]) {
r = [color_r intValue];
}
NSNumber *color_g = dic[@"color_g"];
if (color_g && ![color_g isEqual:[NSNull null]]) {
g = [color_g intValue];
}
NSNumber *color_b = dic[@"color_b"];
if (color_b && ![color_b isEqual:[NSNull null]]) {
b = [color_b intValue];
}
self.backgroundColor = RGB(r, g, b); // RGB(85, 172, 119);
self.infoLabel.text = [NSString stringWithFormat:@"S:%@ / L:%@", @(showNum), @(loadNum)];
});
}
}
- (void)onEventUpdateStatus:(id)data { - (void)onEventUpdateStatus:(id)data {
__weak typeof(self) weakSelf = self; __weak typeof(self) weakSelf = self;

View File

@ -23,4 +23,8 @@
+(instancetype)sharedInstance; +(instancetype)sharedInstance;
- (BOOL)isHeartbeatActive;
- (void)restartHeartbeat;
- (void)stopHeartbeat;
@end @end

View File

@ -93,6 +93,22 @@
dispatch_resume(_timer); dispatch_resume(_timer);
} }
- (BOOL)isHeartbeatActive {
//
return _timer != nil;
}
- (void)restartHeartbeat {
//
[self stopHeartbeat];
[self start];
}
- (void)stopHeartbeat {
//
[self stop];
}
- (void) checkxxx { - (void) checkxxx {
NSDate *last = [[XSPhoneConfig sharedInstance] GetLastOverTime]; NSDate *last = [[XSPhoneConfig sharedInstance] GetLastOverTime];
NSDate *date2 = [NSDate date]; NSDate *date2 = [NSDate date];
@ -108,35 +124,23 @@
} }
- (void) ping { - (void)ping {
@try { @try {
if (!self->iphone || !self->http) return; if (!self->iphone || !self->http) return;
NSString *server = self->iphone.ServerURL; NSString *server = self->iphone.MainServerURL;
if (!server.length) { if (!server.length) {
NSLog(@"Invalid server URL"); NSLog(@"Invalid server URL");
return; return;
} }
NSString *url = [NSString stringWithFormat:@"%@/ios/top_selection/heartbeat", server]; NSString *url = [NSString stringWithFormat:@"%@/ios/top_selection/heartbeat", server];
if (!url) {
NSLog(@"Invalid URL for heartbeat");
return;
}
/** dispatch_async(self->_workQueue, ^{
{
"deviceId": "string",
"ip": "string",
"appId": "string",
"apps": [
"string"
],
"name": "string",
"message": "string",
"status": "string",
"life": true
}
*/
//self.status = [[XSConsole sharedInstance] status];
//self.appId = [[XSJsGlobalContext sharedInstance] get:@"ad_appid"];
@synchronized (self) {
if ([self.status isEqualToString:@"运行中"]) { if ([self.status isEqualToString:@"运行中"]) {
self->lastStop = [NSDate date]; self->lastStop = [NSDate date];
} }
@ -146,53 +150,31 @@
NSTimeInterval elapsed = [curRunTime timeIntervalSinceDate:self->lastStop]; NSTimeInterval elapsed = [curRunTime timeIntervalSinceDate:self->lastStop];
if (elapsed > 60 * 10 && !myadTaskManualStop) { if (elapsed > 60 * 10 && !myadTaskManualStop) {
self->lastStop = [NSDate date]; self->lastStop = [NSDate date];
dispatch_async(_workQueue, ^{ dispatch_async(self->_workQueue, ^{
[[MyAdTask2Mangger sharedInstance] start]; [[MyAdTask2Mangger sharedInstance] start];
}); });
} }
} });
self.name = self->iphone.IPhoneName ?: @"";
self.deviceId = self->iphone.DeviceId ?: @"";
self.ip = [[XSPhoneInfo sharedInstance] IPAddress] ?: @"";
self.remoteIp = [[XSPhoneInfo sharedInstance] remoteIp] ?: @"";
self.diskSize = [[XSPhoneInfo sharedInstance] IPhoneStatus] ?: @"";
self.message = @"251202-nt-02";
self.name = self->iphone.IPhoneName;
self.deviceId = self->iphone.DeviceId;
self.ip = [[XSPhoneInfo sharedInstance] IPAddress];
self.remoteIp = [[XSPhoneInfo sharedInstance] remoteIp];
self.diskSize = [[XSPhoneInfo sharedInstance] IPhoneStatus];
self.message = @"251106-nt";
//
NSDictionary *heartbeatData = [self constructHeartbeatData]; NSDictionary *heartbeatData = [self constructHeartbeatData];
if (!heartbeatData) { if (!heartbeatData) {
NSLog(@"Failed to construct heartbeat data"); NSLog(@"Failed to construct heartbeat data");
return; return;
} }
/*
pushInfo(1,
[XSHelper dic2Json:dic],
^(NSString *data) {
if (data) {
NSLog(@"XS- log: %@", data);
[[XSPhoneConfig sharedInstance] SetLastOverTime: [NSDate date]];
} else {
NSLog(@"XS- heart beat error");
//[self checkxxx];
}
},^(NSError *err) {
NSLog(@"XS- %@", err);
//[self checkxxx];
});
*/
//
[self sendHeartbeat:heartbeatData toURL:url]; [self sendHeartbeat:heartbeatData toURL:url];
//
// [self checkAndPerformTasks];
} @catch (NSException *exception) { } @catch (NSException *exception) {
NSLog(@"XS- app run man ping error: %@", exception); NSLog(@"XS- app run man ping error: %@", exception);
} @finally { } @finally {
NSLog(@"XS- ping end"); NSLog(@"XS- ping end");
} }
} }
- (void)sendHeartbeat:(NSDictionary *)data toURL:(NSString *)url { - (void)sendHeartbeat:(NSDictionary *)data toURL:(NSString *)url {
@ -202,7 +184,7 @@
NSLog(@"Heartbeat success: %@", json); NSLog(@"Heartbeat success: %@", json);
NSDictionary *dic = [XSHelper json2Dictionary:json]; NSDictionary *dic = [XSHelper json2Dictionary:json];
NSDictionary *json_data = dic[@"data"]; NSDictionary *json_data = dic[@"data"];
[[MyEventBus sharedInstance] postEvent:@"UpdateInfo" withObject:json_data]; // [[MyEventBus sharedInstance] postEvent:@"UpdateInfo" withObject:json_data];
} else { } else {
NSLog(@"Empty heartbeat response"); NSLog(@"Empty heartbeat response");
} }

View File

@ -47,10 +47,10 @@
} }
- (NSString *)cmdUrl { - (NSString *)cmdUrl {
return [NSString stringWithFormat:@"%@%@", _config.ServerURL, CMD]; return [NSString stringWithFormat:@"%@%@", _config.MainServerURL, CMD];
} }
- (NSString *)cmdResUrl { - (NSString *)cmdResUrl {
return [NSString stringWithFormat:@"%@%@", _config.ServerURL, CMD_RES]; return [NSString stringWithFormat:@"%@%@", _config.MainServerURL, CMD_RES];
} }
- (void) start { - (void) start {
@ -113,54 +113,60 @@
} }
- (void) executeTask: (NSDictionary*)dic { - (void)executeTask:(NSDictionary *)dic {
if ([dic objectForKey:@"cmd"]) { if (!dic || ![dic objectForKey:@"cmd"]) {
NSString *cmd = dic[@"cmd"]; NSLog(@"Invalid task dictionary");
NSString *taskId = dic[@"taskId"]; return;
if ([cmd isEqual:@"EDIT_NAME"]) { }
[self executeEditName:taskId data:dic[@"cmdData"]]; NSString *cmd = dic[@"cmd"];
return; NSString *taskId = dic[@"taskId"];
} if (!cmd || !taskId) {
if ([cmd isEqual:@"UPLOAD_APPS"]) { NSLog(@"Missing command or taskId");
[self executeUploadApps:taskId data:dic[@"cmdData"]]; return;
return; }
} if ([cmd isEqual:@"EDIT_NAME"]) {
if ([cmd isEqual:@"START"]) { [self executeEditName:taskId data:dic[@"cmdData"]];
[self executeStart:taskId data:dic[@"cmdData"]]; return;
return; }
} if ([cmd isEqual:@"UPLOAD_APPS"]) {
if ([cmd isEqual:@"STOP"]) { [self executeUploadApps:taskId data:dic[@"cmdData"]];
[self executeStop:taskId data:dic[@"cmdData"]]; return;
return; }
} if ([cmd isEqual:@"START"]) {
if ([cmd isEqual:@"SCREENSHOT"]) { [self executeStart:taskId data:dic[@"cmdData"]];
[self executeScreenshot:taskId data:dic[@"cmdData"]]; return;
return; }
} if ([cmd isEqual:@"STOP"]) {
if ([cmd isEqual:@"UNLOCK"]) { [self executeStop:taskId data:dic[@"cmdData"]];
[self executeUnlock:taskId data:dic[@"cmdData"]]; return;
return; }
} if ([cmd isEqual:@"SCREENSHOT"]) {
if ([cmd isEqual:@"RESTART_SYSTEM"]) { [self executeScreenshot:taskId data:dic[@"cmdData"]];
[self executeRestart:taskId data:dic[@"cmdData"]]; return;
return; }
} if ([cmd isEqual:@"UNLOCK"]) {
if ([cmd isEqual:@"RESTART"]) { [self executeUnlock:taskId data:dic[@"cmdData"]];
[self executeReboot:taskId data:dic[@"cmdData"]]; return;
return; }
} if ([cmd isEqual:@"RESTART_SYSTEM"]) {
if ([cmd isEqual:@"TOUCH"]) { [self executeRestart:taskId data:dic[@"cmdData"]];
[self executeTouch:taskId data:dic[@"cmdData"]]; return;
return; }
} if ([cmd isEqual:@"RESTART"]) {
if ([cmd isEqual:@"KEY"]) { [self executeReboot:taskId data:dic[@"cmdData"]];
[self executeKey:taskId data:dic[@"cmdData"]]; return;
return; }
} if ([cmd isEqual:@"TOUCH"]) {
if ([cmd isEqual:@"UPDATE_KEY"]) { [self executeTouch:taskId data:dic[@"cmdData"]];
[self executeUpdateKey:taskId data:dic[@"cmdData"]]; return;
return; }
} if ([cmd isEqual:@"KEY"]) {
[self executeKey:taskId data:dic[@"cmdData"]];
return;
}
if ([cmd isEqual:@"UPDATE_KEY"]) {
[self executeUpdateKey:taskId data:dic[@"cmdData"]];
return;
} }
} }

View File

@ -14,8 +14,6 @@
#import "XSPhoneConfig.h" #import "XSPhoneConfig.h"
#import "XSPhoneInfo.h" #import "XSPhoneInfo.h"
void pushAdTaskLog(AdTaskLogData *data) { void pushAdTaskLog(AdTaskLogData *data) {
NSDictionary *dic = @{ NSDictionary *dic = @{
@"taskId": data->taskId, @"taskId": data->taskId,
@ -88,31 +86,69 @@ BOOL needAdContinue(NSString *appid, NSString *idfa, NSNumber *maxEcpm) {
return [dic[@"data"] isEqual:@(true)]; return [dic[@"data"] isEqual:@(true)];
} }
void getChangeInfoWithRetry(NSString *idfa, ChangeDataSaveCallback callback, error_callback errorCallback, int retryCount) {
if (retryCount <= 0) {
NSLog(@"getChangeInfo failed after maximum retries");
if (errorCallback) {
errorCallback([NSError errorWithDomain:@"getChangeInfo" code:-1 userInfo:@{NSLocalizedDescriptionKey: @"Maximum retry attempts reached"}]);
}
return;
}
void getChangeInfo(NSString *idfa, ChangeDataSaveCallback callback, error_callback errorCallback) {
XSPhoneConfig *config = [XSPhoneConfig sharedInstance]; XSPhoneConfig *config = [XSPhoneConfig sharedInstance];
NSString *url = [config GetFullServerURL:[NSString stringWithFormat:@"ios/top_selection/get_change_data?id=%@&idfa=%@", [config IPhoneName], idfa ?: @""]]; NSString *url = [config GetFullServerURL:@"ios/top_selection/get_change_data_json"];
XSHttpHelper *http = [[XSHttpHelper alloc] init]; XSHttpHelper *http = [[XSHttpHelper alloc] init];
[http doGET:url withCallback:^(NSData *jsonData) { NSDictionary *dic = @{
NSDictionary *data = [NSJSONSerialization JSONObjectWithData:jsonData options:0 error:nil]; @"packageName": [config PackageName],
@"washParam": @([config WashParam]),
};
NSString *json = [XSHelper dic2Json:dic];
NSLog(@"getChangeInfo: Attempting request, retries left: %d", retryCount);
[http doPOST:url json:json withCallback:^(NSData *jsonData) {
NSError *jsonError = nil;
NSDictionary *data = [NSJSONSerialization JSONObjectWithData:jsonData options:0 error:&jsonError];
if (jsonError) {
NSLog(@"getChangeInfo: JSON parsing error: %@, retrying...", jsonError);
//
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
getChangeInfoWithRetry(idfa, callback, errorCallback, retryCount - 1);
});
return;
}
if (data && [data objectForKey:@"data"]) { if (data && [data objectForKey:@"data"]) {
NSDictionary *_data = data[@"data"]; NSDictionary *_data = data[@"data"];
if(_data && ![_data isEqual:[NSNull null]]) { if (_data && ![_data isEqual:[NSNull null]]) {
NSLog(@"getChangeInfo: Successfully received data");
callback(_data); callback(_data);
} else {
NSLog(@"getChangeInfo: Invalid data received, retrying...");
//
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
getChangeInfoWithRetry(idfa, callback, errorCallback, retryCount - 1);
});
} }
} else { } else {
if(errorCallback) { NSLog(@"getChangeInfo: No data received, retrying...");
errorCallback(nil); //
} dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
getChangeInfoWithRetry(idfa, callback, errorCallback, retryCount - 1);
});
} }
} withError:^(NSError *err) { } withError:^(NSError *err) {
NSLog(@"XS- log- get data: %@", err); NSLog(@"getChangeInfo error: %@, retrying... (%d retries left)", err, retryCount - 1);
if(errorCallback) { //
errorCallback(err); dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
} getChangeInfoWithRetry(idfa, callback, errorCallback, retryCount - 1);
});
}]; }];
}
// 3
void getChangeInfo(NSString *idfa, ChangeDataSaveCallback callback, error_callback errorCallback) {
getChangeInfoWithRetry(idfa, callback, errorCallback, 3);
} }
void _newgetChangeInfo(NSString *idfa, ChangeDataSaveCallback callback, error_callback errorCallback) { void _newgetChangeInfo(NSString *idfa, ChangeDataSaveCallback callback, error_callback errorCallback) {
@ -143,63 +179,111 @@ void _newgetChangeInfo(NSString *idfa, ChangeDataSaveCallback callback, error_ca
errorCallback(err); errorCallback(err);
} }
}]; }];
}
static dispatch_queue_t XSFileIOQueue() {
static dispatch_queue_t q;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
q = dispatch_queue_create("com.xs.fileio.queue", DISPATCH_QUEUE_SERIAL);
});
return q;
}
static id XSFilterJSONValue(id obj) {
if (obj == [NSNull null]) return nil;
if ([obj isKindOfClass:[NSDictionary class]]) {
NSMutableDictionary *md = [NSMutableDictionary dictionary];
[(NSDictionary *)obj enumerateKeysAndObjectsUsingBlock:^(id key, id value, BOOL *stop) {
if (![key isKindOfClass:[NSString class]]) return;
id v = XSFilterJSONValue(value);
if (v) md[key] = v;
}];
return md;
}
if ([obj isKindOfClass:[NSArray class]]) {
NSMutableArray *ma = [NSMutableArray array];
for (id v in (NSArray *)obj) {
id nv = XSFilterJSONValue(v);
[ma addObject:nv ?: [NSNull null]];
}
return ma;
}
//
if ([obj isKindOfClass:[NSString class]] ||
[obj isKindOfClass:[NSNumber class]]) {
return obj;
}
//
return [obj description];
} }
BOOL saveChangeDataFile(NSDictionary *data) { BOOL saveChangeDataFile(NSDictionary *data) {
if (!data || ![data isKindOfClass:[NSDictionary class]]) { if (!data || ![data isKindOfClass:[NSDictionary class]]) {
NSLog(@"Invalid data input"); NSLog(@"[saveChangeDataFile] Invalid data input: %@", data);
return NO; return NO;
} }
@try { __block BOOL result = NO;
NSString *bundleId = @"org.xyzshell.NotNil"; __block NSError *writeError = nil;
NSString *plistPath = [NSString stringWithFormat:@"/var/mobile/Library/Preferences/%@.plist", bundleId];
// 使线 dispatch_sync(XSFileIOQueue(), ^{
@synchronized(NSFileManager.defaultManager) { @try {
NSMutableDictionary *tempDic = [NSMutableDictionary new]; NSString *jsonPath = @"/var/mobile/Documents/changeapp.json";
NSString *dirPath = [jsonPath stringByDeletingLastPathComponent];
// NSError *dirErr = nil;
[data enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) { if (![[NSFileManager defaultManager] fileExistsAtPath:dirPath]) {
if (![key isKindOfClass:[NSString class]]) return; [[NSFileManager defaultManager] createDirectoryAtPath:dirPath
withIntermediateDirectories:YES
if (obj == [NSNull null]) { attributes:@{NSFileProtectionKey: NSFileProtectionNone}
tempDic[key] = nil; error:&dirErr];
} else if ([obj isKindOfClass:[NSDictionary class]]) { if (dirErr) {
NSMutableDictionary *newDic = [NSMutableDictionary new]; NSLog(@"[saveChangeDataFile] Failed to create directory %@, error: %@", dirPath, dirErr);
[(NSDictionary *)obj enumerateKeysAndObjectsUsingBlock:^(id key1, id obj1, BOOL *stop1) { return;
if (![key1 isKindOfClass:[NSString class]]) return;
newDic[key1] = (obj1 == [NSNull null]) ? nil : obj1;
}];
tempDic[key] = [newDic copy];
} else {
tempDic[key] = obj;
}
}];
//
NSError *error;
NSString *dirPath = [plistPath stringByDeletingLastPathComponent];
if (![NSFileManager.defaultManager fileExistsAtPath:dirPath]) {
if (![NSFileManager.defaultManager createDirectoryAtPath:dirPath
withIntermediateDirectories:YES
attributes:nil
error:&error]) {
NSLog(@"Failed to create directory: %@", error);
return NO;
} }
} }
// NSDictionary *filtered = XSFilterJSONValue(data);
BOOL y = [tempDic writeToFile:plistPath atomically:YES]; if (!filtered || ![NSJSONSerialization isValidJSONObject:filtered]) {
NSLog(@"XS- save change file: %@", @(y)); NSLog(@"[saveChangeDataFile] JSON object invalid after filtering: %@", filtered);
return y; return;
}
NSError *jsonError = nil;
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:filtered
options:0
error:&jsonError];
if (jsonError || !jsonData) {
NSLog(@"[saveChangeDataFile] Error serializing to JSON: %@", jsonError);
return;
}
NSURL *fileURL = [NSURL fileURLWithPath:jsonPath];
result = [jsonData writeToURL:fileURL
options:NSDataWritingAtomic
error:&writeError];
NSString *idfa = data[@"idfa"];
NSLog(@"XS- save change file: %@; idfa:%@; path:%@",
@(result), idfa, jsonPath);
/*
if (!result) {
struct rlimit limit;
getrlimit(RLIMIT_NOFILE, &limit);
NSLog(@"soft limit: %llu, hard limit: %llu", limit.rlim_cur, limit.rlim_max);
}
*/
} @catch (NSException *exception) {
NSLog(@"[saveChangeDataFile] Exception: %@", exception);
result = NO;
} }
} @catch (NSException *exception) { });
NSLog(@"Error saving change data: %@", exception);
return NO; if (writeError) {
NSLog(@"[saveChangeDataFile] Write error: %@", writeError);
} }
return result;
} }
AdLoadInfo getAdLoadInfo(NSDictionary *request) { AdLoadInfo getAdLoadInfo(NSDictionary *request) {
@ -331,7 +415,6 @@ void logMessage(NSString *message) {
} }
} }
void uncaughtExceptionHandler(NSException *exception) { void uncaughtExceptionHandler(NSException *exception) {
NSArray *callStack = [exception callStackSymbols]; NSArray *callStack = [exception callStackSymbols];
NSString *reason = [exception reason]; NSString *reason = [exception reason];
@ -348,6 +431,7 @@ void uncaughtExceptionHandler(NSException *exception) {
} }
void signalHandler(int signal) { void signalHandler(int signal) {
/*
NSMutableString *crashLog = [NSMutableString string]; NSMutableString *crashLog = [NSMutableString string];
[crashLog appendFormat:@"Signal %d was raised.\n", signal]; [crashLog appendFormat:@"Signal %d was raised.\n", signal];
@ -361,11 +445,19 @@ void signalHandler(int signal) {
free(strs); free(strs);
NSLog(@"Crash: %@", crashLog); NSLog(@"SpringBoard crash:%@", crashLog);
logMessage(crashLog); */
const char *signalName = strsignal(signal);
write(STDERR_FILENO, "Signal received: ", 17);
write(STDERR_FILENO, signalName, strlen(signalName));
write(STDERR_FILENO, "\n", 1);
// 线
//
_exit(signal);
// //
pushIphoneLog(crashLog); // pushIphoneLog(crashLog);
} }
void registerSignalHandler(void) { void registerSignalHandler(void) {

View File

@ -29,8 +29,12 @@ BOOL myadTaskManualStop = NO;
NSString *dataId; NSString *dataId;
NSString *remoteIp; NSString *remoteIp;
NSString *country; NSString *country;
dispatch_source_t _appendCheckTimer; //
} }
@property (nonatomic, assign) NSTimeInterval lastAppSwitchTime; //
@end @end
@implementation MyAdTask2Mangger @implementation MyAdTask2Mangger
@ -55,6 +59,7 @@ BOOL myadTaskManualStop = NO;
self->screen_w = device_screen_width; self->screen_w = device_screen_width;
self->screen_h = device_screen_height; self->screen_h = device_screen_height;
self->adAfter = 1000; self->adAfter = 1000;
self.lastAppSwitchTime = 0; // 0
return self; return self;
} }
return nil; return nil;
@ -104,7 +109,7 @@ BOOL myadTaskManualStop = NO;
__weak typeof(self) weakSelf = self; __weak typeof(self) weakSelf = self;
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(beforeSec * NSEC_PER_SEC)), dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(beforeSec * NSEC_PER_SEC)),
self.manQueue, ^{ self.manQueue, ^{
[weakSelf touchAppTask:0];
}); });
} }
return close; return close;
@ -115,7 +120,15 @@ BOOL myadTaskManualStop = NO;
} }
- (void)setRemoteInfo { - (void)setRemoteInfo {
if (self->country != nil && ![self->country isEqual:@""]) {
NSLog(@"Country info already set, skipping remote info update.");
return; //
}
NSString *url = @"https://ipapi.co/json/"; NSString *url = @"https://ipapi.co/json/";
if (!url) {
NSLog(@"Invalid URL for remote info");
return;
}
XSHttpHelper *http = [[XSHttpHelper alloc] init]; XSHttpHelper *http = [[XSHttpHelper alloc] init];
__weak typeof(self) weakSelf = self; __weak typeof(self) weakSelf = self;
[http doGET:url withCallback:^(NSData *data) { [http doGET:url withCallback:^(NSData *data) {
@ -132,6 +145,10 @@ BOOL myadTaskManualStop = NO;
} }
NSString *isoCode = dic[@"country_code"]; NSString *isoCode = dic[@"country_code"];
NSString *ip = dic[@"ip"]; NSString *ip = dic[@"ip"];
if (!isoCode || !ip) {
NSLog(@"Invalid data received for remote info");
return;
}
__strong typeof(weakSelf) strongSelf = weakSelf; __strong typeof(weakSelf) strongSelf = weakSelf;
if (!strongSelf) return; if (!strongSelf) return;
@ -191,55 +208,76 @@ BOOL myadTaskManualStop = NO;
}]; }];
} }
- (BOOL)onEnd:(NSDictionary *)dic { // append
NSNumber *maxEcpm = dic[@"max_ecpm"]; - (void)checkAppendFile {
int sec = self->adAfter / 1000; NSString *appendDirPath = @"/var/mobile/Documents/ad/append";
__weak typeof(self) weakSelf = self; NSFileManager *fileManager = [NSFileManager defaultManager];
if([maxEcpm doubleValue] <= 0.0) { BOOL isDir = NO;
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, sec * NSEC_PER_SEC), self.manQueue, ^{ if ([fileManager fileExistsAtPath:appendDirPath isDirectory:&isDir] && isDir) {
@autoreleasepool { NSArray *files = [fileManager contentsOfDirectoryAtPath:appendDirPath error:nil];
[weakSelf startApp]; if (files.count > 0) {
BOOL allDeleted = YES;
for (NSString *file in files) {
NSString *filePath = [appendDirPath stringByAppendingPathComponent:file];
NSError *error = nil;
[fileManager removeItemAtPath:filePath error:&error];
if (error) {
NSLog(@"Failed to delete file: %@, error: %@", filePath, error);
allDeleted = NO;
}
}
if (allDeleted) {
NSLog(@"append directory has files, deleted all, calling onEnd");
[self onEnd:nil];
} }
});
return NO;
}
BOOL res = needAdContinue(self->taskAppId, self->_lastIdfa, maxEcpm);
if(res) {
return YES;
}
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, sec * NSEC_PER_SEC), self.manQueue, ^{
@autoreleasepool {
[weakSelf startApp];
} }
}); }
}
- (BOOL)onEnd:(NSDictionary *)dic {
@autoreleasepool {
if (self->taskAppId) {
[self appKill:self->taskAppId];
}
[self startApp];
}
return NO; return NO;
} }
- (void)startApp { - (void)startApp {
@autoreleasepool { @autoreleasepool {
if(!self->running){ if (!self->running) {
return; return;
} }
self->lastRun = [NSDate date]; self->lastRun = [NSDate date];
if (self->country == nil || [self->country isEqual:NULL] || [self->country isEqual:@""]) {
[self setRemoteInfo];
self->lastGetCountry = [NSDate date];
} else {
NSDate *curRunTime = [NSDate date];
NSTimeInterval elapsed = [curRunTime timeIntervalSinceDate:self->lastGetCountry];
if (elapsed >= 300) {
[self setRemoteInfo];
self->lastGetCountry = [NSDate date];
}
}
NSDate *startTime = [NSDate date];
NSLog(@"getChangeInfo started at: %@", startTime);
__weak typeof(self) weakSelf = self; __weak typeof(self) weakSelf = self;
getChangeInfo(self->_lastIdfa, ^(NSDictionary *dic) { getChangeInfo(self->_lastIdfa ?: @"", ^(NSDictionary *dic) {
if (!dic) {
NSLog(@"getChangeInfo returned nil dictionary");
return;
}
NSDate *endTime = [NSDate date];
NSTimeInterval duration = [endTime timeIntervalSinceDate:startTime];
NSLog(@"getChangeInfo completed at: %@, duration: %.2f seconds", endTime, duration);
dispatch_async(weakSelf.manQueue, ^{ dispatch_async(weakSelf.manQueue, ^{
[weakSelf onChangeInfo:dic]; [weakSelf onChangeInfo:dic];
}); });
}, ^(NSError *err) { }, ^(NSError *err) {
NSDate *endTime = [NSDate date];
NSTimeInterval duration = [endTime timeIntervalSinceDate:startTime];
NSLog(@"getChangeInfo completed at: %@, duration: %.2f seconds", endTime, duration);
NSLog(@"XS- startTask NSError is null, %@", err); NSLog(@"XS- startTask NSError is null, %@", err);
[weakSelf showStatus:[NSString stringWithFormat:@"getChangeInfo error after 5s restart: %@", err.description]];
// App
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(5 * NSEC_PER_SEC)), weakSelf.manQueue, ^{
__strong typeof(weakSelf) strongSelf = weakSelf;
if (strongSelf && strongSelf->running) { //
[strongSelf startApp];
}
});
}); });
} }
} }
@ -250,17 +288,38 @@ BOOL myadTaskManualStop = NO;
[[IPhoneHertbeat sharedInstance] setStatus:@"运行中"]; [[IPhoneHertbeat sharedInstance] setStatus:@"运行中"];
[self startApp]; [self startApp];
__weak typeof(self) weakSelf = self; __weak typeof(self) weakSelf = self;
// Timer
if (!_timer) { if (_timer) {
_timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, self.manQueue); dispatch_source_cancel(_timer);
dispatch_source_set_timer(_timer, dispatch_time(DISPATCH_TIME_NOW, 0), 10 * NSEC_PER_SEC, 1 * NSEC_PER_SEC); _timer = nil;
dispatch_source_set_event_handler(_timer, ^{
@autoreleasepool {
[weakSelf proc];
}
});
dispatch_resume(_timer);
} }
// 使 dispatch_source timer
_timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, self.manQueue);
dispatch_source_set_timer(_timer, dispatch_time(DISPATCH_TIME_NOW, 0), 10 * NSEC_PER_SEC, 1 * NSEC_PER_SEC);
dispatch_source_set_event_handler(_timer, ^{
@autoreleasepool {
[weakSelf proc];
//
if (![[IPhoneHertbeat sharedInstance] isHeartbeatActive]) {
NSLog(@"Heartbeat inactive, restarting...");
[[IPhoneHertbeat sharedInstance] restartHeartbeat];
}
}
});
dispatch_resume(_timer);
// append
if (_appendCheckTimer) {
dispatch_source_cancel(_appendCheckTimer);
_appendCheckTimer = nil;
}
_appendCheckTimer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, self.manQueue);
dispatch_source_set_timer(_appendCheckTimer, dispatch_time(DISPATCH_TIME_NOW, 0), 1 * NSEC_PER_SEC, 0);
dispatch_source_set_event_handler(_appendCheckTimer, ^{
[weakSelf checkAppendFile];
});
dispatch_resume(_appendCheckTimer);
[[MyEventBus sharedInstance] postEvent:@"UpdateRunStatus" withObject:@(YES)]; [[MyEventBus sharedInstance] postEvent:@"UpdateRunStatus" withObject:@(YES)];
} }
@ -272,25 +331,25 @@ BOOL myadTaskManualStop = NO;
NSLog(@"XS- MyAdTaskManager proc"); NSLog(@"XS- MyAdTaskManager proc");
NSDate* curRunTime = [NSDate date]; NSDate* curRunTime = [NSDate date];
NSTimeInterval elapsed = [curRunTime timeIntervalSinceDate:self->lastRun]; NSTimeInterval elapsed = [curRunTime timeIntervalSinceDate:self->lastRun];
BOOL washParam = [[XSPhoneConfig sharedInstance] WashParam];
if (elapsed >= 80) {
//[self onStop];
[self startApp];
if (elapsed >= 100) { }
[self start]; if (!washParam) {
} else { NSString* appId = [ self frontMostAppId];
NSString* appId = [self frontMostAppId];
if (![appId isEqual:self->taskAppId]) { if (![appId isEqual: self->taskAppId]) {
//
[self appKill:appId]; [self appKill:appId];
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), self.manQueue, ^{
// : strong使 [self appRun:self->taskAppId];
__weak typeof(self) weakSelf = self; self.lastAppSwitchTime = [NSDate timeIntervalSinceReferenceDate]; //
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 1 * NSEC_PER_SEC), self.manQueue, ^{
__strong typeof(weakSelf) strongSelf = weakSelf;
if (!strongSelf) return;
[strongSelf appRun:strongSelf->taskAppId];
}); });
} }
} }
} }
- (NSString *)toggle { - (NSString *)toggle {
@ -310,9 +369,50 @@ BOOL myadTaskManualStop = NO;
dispatch_source_cancel(_timer); dispatch_source_cancel(_timer);
_timer = nil; _timer = nil;
} }
// append
if (_appendCheckTimer) {
dispatch_source_cancel(_appendCheckTimer);
_appendCheckTimer = nil;
}
[[IPhoneHertbeat sharedInstance] stopHeartbeat]; //
[[MyEventBus sharedInstance] postEvent:@"UpdateRunStatus" withObject:@(NO)]; [[MyEventBus sharedInstance] postEvent:@"UpdateRunStatus" withObject:@(NO)];
} }
- (NSString *)getSystemInfo {
void *buffer = NULL;
NSString *result = nil;
// sysctl mib
// 0x100000006LL int: {6, 1}
// 321 (0x1), 326 (0x6)
int mib[2];
mib[0] = 6; // CTL_HW
mib[1] = 1; // HW_MACHINE
size_t size = 100;
//
// #import <sys/sysctl.h>
sysctl(mib, 2, NULL, &size, NULL, 0);
//
buffer = malloc(size);
if (buffer != NULL) {
//
sysctl(mib, 2, buffer, &size, NULL, 0);
// NSString
result = [NSString stringWithUTF8String:(const char *)buffer];
//
free(buffer);
}
return result;
}
- (void)onChangeInfo:(NSDictionary *)dic { - (void)onChangeInfo:(NSDictionary *)dic {
NSString* t_idfa = [self getStr:@"idfa" dic:dic]; NSString* t_idfa = [self getStr:@"idfa" dic:dic];
if (![XSHelper strIsEmpty:t_idfa]) { if (![XSHelper strIsEmpty:t_idfa]) {
@ -347,36 +447,27 @@ BOOL myadTaskManualStop = NO;
return; return;
} }
NSDictionary *workerInfo = dic[@"workerInfo"];
if(workerInfo && ![workerInfo isEqual:[NSNull null]]) {
} else {
NSLog(@"XS- startTask workerInfo is null");
return;
}
int t_workType = [self getInt:@"workType" dic:workerInfo];
if (t_workType > -99) {
self->workType = t_workType;
} else {
NSLog(@"XS- startTask workType is null");
}
__weak typeof(self) weakSelf = self; __weak typeof(self) weakSelf = self;
[self restart:^{ [self restart:^{
__strong typeof(weakSelf) strongSelf = weakSelf; __strong typeof(weakSelf) strongSelf = weakSelf;
if (!strongSelf) return; if (!strongSelf) return;
saveChangeDataFile(dic); void (^saveBlock)(void) = ^{
strongSelf->running = YES; if (saveChangeDataFile(dic)) {
//
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 1 * NSEC_PER_SEC), strongSelf->running = YES;
strongSelf.manQueue, ^{ dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 0.1 * NSEC_PER_SEC),
__strong typeof(weakSelf) strongSelf2 = weakSelf; strongSelf.manQueue, ^{
if (!strongSelf2) return; __strong typeof(weakSelf) strongSelf2 = weakSelf;
if (!strongSelf2) return;
[strongSelf2 appRun:strongSelf2->taskAppId]; [strongSelf2 appRun:strongSelf2->taskAppId];
}); });
} else {
NSLog(@"XS- saveChangeDataFile failed");
}
};
saveBlock();
}]; }];
} }
@ -404,45 +495,38 @@ BOOL myadTaskManualStop = NO;
tempBfaceDictKey = [[NSMutableDictionary alloc] init]; tempBfaceDictKey = [[NSMutableDictionary alloc] init];
} }
NSString *serverUrl = [[XSPhoneConfig sharedInstance] ServerURL]; NSString *serverUrl = [[XSPhoneConfig sharedInstance] ServerURL];
BOOL washParam = [[XSPhoneConfig sharedInstance] WashParam];
[tempBfaceDictKey setValue:@"http://127.0.0.1:6000" forKey:@"adbrush_local_url"];
[tempBfaceDictKey setValue:serverUrl forKey:@"adbrush_base_url"]; [tempBfaceDictKey setValue:serverUrl forKey:@"adbrush_base_url"];
__weak typeof(self) weakSelf = self; [tempBfaceDictKey setValue:@(washParam) forKey:@"washParam"];
getLowEcpm(^(NSNumber *lowEcpm) { // [tempBfaceDictKey setValue:lowEcpm forKey:@"adbrush_ecpm"];
__strong typeof(weakSelf) strongSelf = weakSelf; if(self->linkId) {
if (!strongSelf) return; [tempBfaceDictKey setValue:self->linkId forKey:@"linkId"];
} else {
NSString *linkId = [[NSUUID UUID] UUIDString];
[tempBfaceDictKey setValue:linkId forKey:@"linkId"];
}
BOOL washParam = strongSelf->workType == 0 ? YES : NO; if(self->dataId) {
[tempBfaceDictKey setValue:@(washParam) forKey:@"washParam"]; [tempBfaceDictKey setValue:self->dataId forKey:@"dataId"];
[tempBfaceDictKey setValue:lowEcpm forKey:@"adbrush_ecpm"]; } else {
if(strongSelf->linkId) { [tempBfaceDictKey setValue:@"0" forKey:@"dataId"];
[tempBfaceDictKey setValue:strongSelf->linkId forKey:@"linkId"]; }
} else { if(self->remoteIp) {
NSString *linkId = [[NSUUID UUID] UUIDString]; [tempBfaceDictKey setValue:self->remoteIp forKey:@"remoteIp"];
[tempBfaceDictKey setValue:linkId forKey:@"linkId"]; }
} uint16_t udp_port = [XUDPServer sharedInstance].udp_port;
[tempBfaceDictKey setValue:@(udp_port) forKey:@"udp_port"];
[tempBfaceDictKey setValue:[self getSystemInfo] forKey:@"device_model"];
if(strongSelf->dataId) { NSLog(@"XS- resetApp 1");
[tempBfaceDictKey setValue:strongSelf->dataId forKey:@"dataId"]; NSMutableDictionary *tempAppInfo = [[NSMutableDictionary alloc] init];
} else { [tempAppInfo setValue:tempBfaceDictKey forKey:@"bfaceDictKey"];
NSString *dataId = @"0";
[tempBfaceDictKey setValue:dataId forKey:@"dataId"];
}
if(strongSelf->remoteIp) {
[tempBfaceDictKey setValue:strongSelf->remoteIp forKey:@"remoteIp"];
}
uint16_t udp_port = [XUDPServer sharedInstance].udp_port;
[tempBfaceDictKey setValue:@(udp_port) forKey:@"udp_port"];
NSLog(@"XS- resetApp 1"); XSClearAll(appId);
NSMutableDictionary *tempAppInfo = [[NSMutableDictionary alloc] init];
[tempAppInfo setValue:tempBfaceDictKey forKey:@"bfaceDictKey"];
XSClearAll(appId); XSSaveAppInfo(tempAppInfo, appInfoPath);
callback();
XSSaveAppInfo(tempAppInfo, appInfoPath);
callback();
});
} }
- (NSString *)frontMostAppId { - (NSString *)frontMostAppId {
@ -461,99 +545,38 @@ BOOL myadTaskManualStop = NO;
}); });
} }
- (void)tap:(int)i x:(int)x y:(int)y {
}
- (void)restart:(OnEndCallback)callback { - (void)restart:(OnEndCallback)callback {
__weak typeof(self) weakSelf = self; @synchronized (self) {
dispatch_async(self.manQueue, ^{ __weak typeof(self) weakSelf = self;
@try { dispatch_async(self.manQueue, ^{
__strong typeof(weakSelf) strongSelf = weakSelf; @try {
if (!strongSelf) return; __strong typeof(weakSelf) strongSelf = weakSelf;
if (!strongSelf) return;
[weakSelf appKill:@"com.apple.AppStore"]; [weakSelf appKill:@"com.apple.AppStore"];
[weakSelf appKill:@"com.apple.mobilesafari"]; [weakSelf appKill:@"com.apple.mobilesafari"];
if (strongSelf->taskAppId && ![strongSelf->taskAppId isEqual:[NSNull null]] && [strongSelf->taskAppId length] > 0) { if (strongSelf->taskAppId && ![strongSelf->taskAppId isEqual:[NSNull null]] && [strongSelf->taskAppId length] > 0) {
[weakSelf appKill:strongSelf->taskAppId]; [weakSelf appKill:strongSelf->taskAppId];
[weakSelf unlock];
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 1 * NSEC_PER_SEC),
strongSelf.manQueue, ^{
[weakSelf unlock]; [weakSelf unlock];
[weakSelf resetApp:strongSelf->taskAppId callback:callback]; dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.1 * NSEC_PER_SEC)), strongSelf.manQueue, ^{
}); [weakSelf unlock];
[weakSelf resetApp:strongSelf->taskAppId callback:callback];
});
}
} @catch (NSException *exception) {
NSLog(@"Error in restart: %@", exception);
} }
} @catch (NSException *exception) { });
NSLog(@"Error in restart: %@", exception); }
}
});
} }
- (void)rndTouchApp { - (void)rndTouchApp {
int times = [XSHelper random:2 and:4]; int times = [XSHelper random:2 and:4];
[self _rndTouchAppRecursive:0 totalTimes:times];
} }
- (void)_rndTouchAppRecursive:(int)currentIndex totalTimes:(int)times {
if (currentIndex >= times) {
return;
}
int x = [XSHelper random:40 and:screen_w - 20];
int y = [XSHelper random:50 and:screen_h - 240];
NSString* appId = [self frontMostAppId];
if ([appId isEqual:self->taskAppId]) {
[self tap:1 x:x y:y];
__weak typeof(self) weakSelf = self;
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.002 * NSEC_PER_SEC)),
self.manQueue, ^{
[weakSelf _rndTouchAppRecursive:currentIndex + 1 totalTimes:times];
});
}
}
- (void)touchAppTask:(int)beforeTouch {
__weak typeof(self) weakSelf = self;
double delaySec = beforeTouch;
void (^touchBlock)(void) = ^{
[weakSelf rndTouchApp];
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 2 * NSEC_PER_SEC),
weakSelf.manQueue, ^{
__strong typeof(weakSelf) strongSelf = weakSelf;
if (!strongSelf) return;
int x = [XSHelper random:40 and:strongSelf->screen_w - 20];
int y = [XSHelper random:50 and:strongSelf->screen_h - 240];
[strongSelf tap:1 x:x y:y];
NSString* appId = [strongSelf frontMostAppId];
if (![appId isEqual:strongSelf->taskAppId]) {
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 1 * NSEC_PER_SEC),
strongSelf.manQueue, ^{
__strong typeof(weakSelf) strongSelf2 = weakSelf;
if (!strongSelf2) return;
[strongSelf2 appRun:strongSelf2->taskAppId];
});
} else {
[strongSelf appRun:strongSelf->taskAppId];
}
});
};
if (delaySec > 0) {
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delaySec * NSEC_PER_SEC)),
self.manQueue, touchBlock);
} else {
touchBlock();
}
}
- (NSString*)getStr:(NSString *)key dic:(NSDictionary*)dic { - (NSString*)getStr:(NSString *)key dic:(NSDictionary*)dic {
NSLog(@"getStr: %@", key); NSLog(@"getStr: %@", key);

View File

@ -35,34 +35,21 @@ void startSimpleServer(void) {
// //
dispatch_async(dispatch_get_main_queue(), ^{ dispatch_async(dispatch_get_main_queue(), ^{
[[IPhoneHertbeat sharedInstance] start]; [[IPhoneHertbeat sharedInstance] start];
[[IosSystemCmd sharedInstance] start]; // [[IosSystemCmd sharedInstance] start];
}); });
// //
dispatch_async(serverQueue, ^{ dispatch_async(serverQueue, ^{
@autoreleasepool { @autoreleasepool {
// ID
//
pushIphoneLog(@"on start simple server!!!");
//
pushIphoneLog(@"on start simple server -ok");
// //
// MessagePortServer *server = [[MessagePortServer alloc] init]; // MessagePortServer *server = [[MessagePortServer alloc] init];
// [server startServer]; // [server startServer];
XUDPServer *udpserver = [XUDPServer sharedInstance]; XUDPServer *udpserver = [XUDPServer sharedInstance];
[udpserver start]; [udpserver start];
// // NSRunLoopGCDAsyncUdpSocket
NSRunLoop *runLoop = [NSRunLoop currentRunLoop]; // NSRunLoop *runLoop = [NSRunLoop currentRunLoop];
// [runLoop addPort:[NSPort port] forMode:NSDefaultRunLoopMode];
// // [runLoop run];
[runLoop addPort:[NSPort port] forMode:NSDefaultRunLoopMode];
//
[runLoop run];
} }
}); });
}); });

View File

@ -9,6 +9,7 @@
#import "XSHelper.h" #import "XSHelper.h"
#import "XSHackIos.h" #import "XSHackIos.h"
#import "MyAdTask2.h" #import "MyAdTask2.h"
#import "MyEventBus.h"
#import "UDPHandler.h" #import "UDPHandler.h"
@ -68,10 +69,12 @@
return [XSHelper dic2Json:resData]; return [XSHelper dic2Json:resData];
} }
else if([XSHelper isMatch:@"^/adtask/show" test:path]) { else if([XSHelper isMatch:@"^/adtask/show" test:path]) {
MyAdTask2Mangger *ad = [MyAdTask2Mangger sharedInstance];
NSDictionary *rq = dic[@"body"]; [[MyEventBus sharedInstance] postEvent:@"Show" withObject:nil];
int close = [ad onShow:rq]; return [XSHelper dic2Json:resData];
[resData setValue:@(close) forKey:@"close"]; }
else if([XSHelper isMatch:@"^/adtask/load" test:path]) {
[[MyEventBus sharedInstance] postEvent:@"Load" withObject:nil];
return [XSHelper dic2Json:resData]; return [XSHelper dic2Json:resData];
} }
else if([XSHelper isMatch:@"^/adtask/end" test:path]) { else if([XSHelper isMatch:@"^/adtask/end" test:path]) {

View File

@ -22,42 +22,25 @@
/** /**
*/ */
SBApplication* XSGetFrontMostApplication(void) SBApplication* XSGetFrontMostApplication(void) {
{
//TODO: might cause problem here. Both _accessibilityFrontMostApplication failed or front most application springboard will cause app be nil.
__block id app = nil; __block id app = nil;
NSLog(@"XS- getFrontMostApplication"); NSLog(@"XS- getFrontMostApplication");
dispatch_semaphore_t semaphore = dispatch_semaphore_create(0); dispatch_semaphore_t semaphore = dispatch_semaphore_create(0);
dispatch_sync(dispatch_get_main_queue(), ^{ dispatch_async(dispatch_get_main_queue(), ^{
@try{ @try {
SpringBoard *springboard = (SpringBoard *)[UIApplication sharedApplication]; SpringBoard *springboard = (SpringBoard *)[UIApplication sharedApplication];
//SpringBoard *springboard = (SpringBoard*)[%c(SpringBoard) sharedApplication];
if ([springboard respondsToSelector:@selector(_accessibilityFrontMostApplication)]) { if ([springboard respondsToSelector:@selector(_accessibilityFrontMostApplication)]) {
app = [springboard performSelector:@selector(_accessibilityFrontMostApplication)]; app = [springboard _accessibilityFrontMostApplication];
NSLog(@"XS- Simulated home button press, %@", app);
} }
// app = [springboard _accessibilityFrontMostApplication]; } @catch (NSException *exception) {
//NSLog(@"com.zjx.springboard: app: %@, id: %@", app, [app displayIdentifier]); NSLog(@"XS- Debug: %@", exception.reason);
}
@catch (NSException *exception) {
NSLog(@"XS-: Debug: %@", exception.reason);
} }
dispatch_semaphore_signal(semaphore); dispatch_semaphore_signal(semaphore);
}); });
// 5
dispatch_time_t timeout = dispatch_time(DISPATCH_TIME_NOW, 5 * NSEC_PER_SEC);
// 5 if (dispatch_semaphore_wait(semaphore, dispatch_time(DISPATCH_TIME_NOW, 5 * NSEC_PER_SEC)) != 0) {
long result = dispatch_semaphore_wait(semaphore, timeout); NSLog(@"XSGetFrontMostApplication timeout");
if (result == 0) {
//
NSLog(@"XSGetFrontMostApplication end");
} else {
//
NSLog(@"XSGetFrontMostApplication 等待超时");
} }
return app; return app;
@ -189,9 +172,27 @@ int kill2(NSString *appexe) {
} }
int XSKillAppByName(NSString *pkgName){ int XSKillAppByName(NSString *pkgName) {
NSString* appexe = XSGetAppExecutable(pkgName); NSString *appexe = XSGetAppExecutable(pkgName);
return kill2(appexe); if (!appexe) {
NSLog(@"App executable not found for package: %@", pkgName);
return -1;
}
// NSString *cmd = [NSString stringWithFormat:@"/usr/bin/killall -9 %@", appexe];
const char *cmdStr = [appexe UTF8String];
// char *argv[] = {"/usr/bin/killall", "-9", (char *)app, NULL};
char *appStr = strdup(cmdStr);
// int r = c(appStr, NULL, NULL);
char *argv[] = {
"/usr/bin/killall",
"-9",
appStr,
NULL
};
int r = XSRuncmd(argv); // waitpid
free(appStr);
return r;
} }
@ -690,45 +691,31 @@ void XSCleanSafari(void) {
void XSCleanKeychain(void) { void XSCleanKeychain(void) {
NSFileManager* man = [NSFileManager defaultManager]; NSFileManager* man = [NSFileManager defaultManager];
if ([man fileExistsAtPath:@"/var/Keychains/keychain-2.db"]) { if ([man fileExistsAtPath:@"/var/Keychains/keychain-2.db"]) {
/*
char *cpCmd = "/usr/bin/cp";
if ([man fileExistsAtPath:@"/bin/cp"]) {
cpCmd = "/bin/cp";
}
char *cmds[] = {
cpCmd,
"/var/Keychains/keychain-2.db",
"/tmp/",
NULL
};
*/
// XSRuncmd(cmds);
XSSystem("cp /var/Keychains/keychain-2.db /tmp/"); XSSystem("cp /var/Keychains/keychain-2.db /tmp/");
sqlite3* ppDb; sqlite3* ppDb = NULL;
char cmd[256]; char cmd[256];
if (0 == sqlite3_open("/tmp/keychain-2.db", &ppDb)) { int rc = sqlite3_open("/tmp/keychain-2.db", &ppDb);
if (rc == SQLITE_OK && ppDb) {
strcpy(cmd, "DELETE FROM cert WHERE agrp<>'apple' and agrp not like '%apple%' and agrp <> 'ichat' and agrp <>'lockdown-identities'"); strcpy(cmd, "DELETE FROM cert WHERE agrp<>'apple' and agrp not like '%apple%' and agrp <> 'ichat' and agrp <>'lockdown-identities'");
sqlite3_exec(ppDb, cmd, 0, 0, 0); sqlite3_exec(ppDb, cmd, 0, 0, 0);
strcpy(cmd, "DELETE FROM keys WHERE agrp<>'apple' and agrp not like '%apple%' and agrp <> 'ichat' and agrp <>'lockdown-identities'"); strcpy(cmd, "DELETE FROM keys WHERE agrp<>'apple' and agrp not like '%apple%' and agrp <> 'ichat' and agrp <>'lockdown-identities'");
sqlite3_exec(ppDb, cmd, 0, 0, 0); sqlite3_exec(ppDb, cmd, 0, 0, 0);
strcpy(cmd, "DELETE FROM inet WHERE agrp<>'apple' and agrp not like '%apple%' and agrp <> 'ichat' and agrp <>'lockdown-identities'"); strcpy(cmd, "DELETE FROM inet WHERE agrp<>'apple' and agrp not like '%apple%' and agrp <> 'ichat' and agrp <>'lockdown-identities'");
sqlite3_exec(ppDb, cmd, 0, 0, 0); sqlite3_exec(ppDb, cmd, 0, 0, 0);
/*
char *cmds1[] = { // /private/var/tmp/keychain-2.db
cpCmd, sqlite3_close(ppDb);
"/tmp/keychain-2.*", ppDb = NULL;
"/var/Keychains/",
NULL
};
*/
//XSRuncmd(cmds1);
XSSystem("cp /tmp/keychain-2.* /var/Keychains/"); XSSystem("cp /tmp/keychain-2.* /var/Keychains/");
} else {
//
if (ppDb) {
sqlite3_close(ppDb);
ppDb = NULL;
}
NSLog(@"XSCleanKeychain: sqlite3_open failed: %d", rc);
} }
//free(cpCmd);
} }
} }
@ -1178,62 +1165,68 @@ BOOL verifyEntitlement(NSString *entitlementName) {
} }
pid_t system2(const char * command, int * infp, int * outfp) pid_t system2(const char *command, int *infp, int *outfp) {
{ if (!command || strlen(command) == 0) {
NSLog(@"system2: Invalid command");
return -1;
}
int p_stdin[2]; int p_stdin[2];
int p_stdout[2]; int p_stdout[2];
pid_t pid; pid_t pid;
if (pipe(p_stdin) == -1) if (pipe(p_stdin) == -1) {
NSLog(@"system2: Failed to create stdin pipe: %s", strerror(errno));
return -1; return -1;
}
if (pipe(p_stdout) == -1) { if (pipe(p_stdout) == -1) {
NSLog(@"system2: Failed to create stdout pipe: %s", strerror(errno));
close(p_stdin[0]); close(p_stdin[0]);
close(p_stdin[1]); close(p_stdin[1]);
return -1; return -1;
} }
pid = fork(); posix_spawn_file_actions_t actions;
posix_spawn_file_actions_init(&actions);
posix_spawn_file_actions_adddup2(&actions, p_stdin[0], STDIN_FILENO);
posix_spawn_file_actions_adddup2(&actions, p_stdout[1], STDOUT_FILENO);
//
posix_spawn_file_actions_addclose(&actions, p_stdin[1]);
posix_spawn_file_actions_addclose(&actions, p_stdout[0]);
if (pid < 0) { char *argv[] = {"/bin/sh", "-c", (char *)command, NULL};
close(p_stdin[0]); int status = posix_spawn(&pid, "/bin/sh", &actions, NULL, argv, environ);
posix_spawn_file_actions_destroy(&actions);
//
close(p_stdin[0]); //
close(p_stdout[1]); //
if (status != 0) {
NSLog(@"system2: posix_spawn failed with status %d", status);
close(p_stdin[1]); close(p_stdin[1]);
close(p_stdout[0]); close(p_stdout[0]);
close(p_stdout[1]); return -1;
return pid;
} else if (pid == 0) {
close(p_stdin[1]);
dup2(p_stdin[0], 0);
close(p_stdout[0]);
dup2(p_stdout[1], 1);
dup2(open("/dev/null", O_RDONLY), 2);
/// Close all other descriptors for the safety sake.
for (int i = 3; i < 4096; ++i)
close(i);
setsid();
execl("/bin/sh", "sh", "-c", command, NULL);
_exit(1);
} }
close(p_stdin[0]); //
close(p_stdout[1]); if (infp) {
*infp = p_stdin[1]; // stdin
if (infp == NULL) {
close(p_stdin[1]);
} else { } else {
*infp = p_stdin[1]; close(p_stdin[1]);
} }
if (outfp == NULL) { if (outfp) {
close(p_stdout[0]); *outfp = p_stdout[0]; // stdout
} else { } else {
*outfp = p_stdout[0]; close(p_stdout[0]);
} }
if (pid > 0) if (pid > 0) {
{ int status = 0;
waitpid(pid, NULL, 0); waitpid(pid, &status, 0);
} }
return pid; return pid;
} }

View File

@ -18,11 +18,15 @@ typedef void (^rt_str_callback)(NSString*);
// @property (nonatomic, strong) NSURLSession *session; // @property (nonatomic, strong) NSURLSession *session;
@property (nonatomic, strong) NSURLSessionDataTask *dataTask; @property (nonatomic, strong) NSURLSessionDataTask *dataTask;
@property (nonatomic, strong) NSURLSessionDataTask *postDataTask; @property (nonatomic, strong) NSURLSessionDataTask *postDataTask;
@property (nonatomic, assign) NSTimeInterval timeoutInterval; // 新增超时属性
- (void) doGET: (NSString*) urlStr withCallback:(request_callback) callback withError: (error_callback) errorCallback; - (void) doGET: (NSString*) urlStr withCallback:(request_callback) callback withError: (error_callback) errorCallback;
- (NSData *) doGET: (NSString*) urlStr; - (NSData *) doGET: (NSString*) urlStr;
- (void) doPOST: (NSString*) urlStr json: (NSString *)json withCallback:(request_callback) callback withError: (error_callback) errorCallback; - (void) doPOST: (NSString*) urlStr json: (NSString *)json withCallback:(request_callback) callback withError: (error_callback) errorCallback;
- (NSData*) doPOST:(NSString *)urlStr json:(NSString *)json; - (NSData*) doPOST:(NSString *)urlStr json:(NSString *)json;
- (void)cancelAllRequests; // 新增取消所有请求方法
- (void)cancelCurrentGETRequest; // 新增取消当前GET请求方法
- (void)cancelCurrentPOSTRequest; // 新增取消当前POST请求方法
- (void)requestNetworkPermissions; - (void)requestNetworkPermissions;
@end @end

View File

@ -55,6 +55,8 @@ didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge
-(instancetype)init { -(instancetype)init {
if (self = [super init]) { if (self = [super init]) {
apikey = [[XSPhoneConfig sharedInstance] ApiKey]; apikey = [[XSPhoneConfig sharedInstance] ApiKey];
self.timeoutInterval = 15.0; // 15
// session
return self; return self;
} }
return nil; return nil;
@ -69,11 +71,16 @@ didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge
NSURL *url = [NSURL URLWithString:urlStr]; NSURL *url = [NSURL URLWithString:urlStr];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url
cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:5]; cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:self.timeoutInterval];
[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"]; [request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
[request setValue:self->apikey forHTTPHeaderField:@"apikey"]; [request setValue:self->apikey forHTTPHeaderField:@"apikey"];
NSURLSession *session = [NSURLSession sessionWithoutSSLValidation];// [NSURLSession sharedSession]; // session
NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];
configuration.timeoutIntervalForRequest = self.timeoutInterval;
configuration.timeoutIntervalForResource = self.timeoutInterval;
NSURLSession *session = [NSURLSession sessionWithConfiguration:configuration delegate:[[SSLBypassDelegate alloc] init] delegateQueue:nil];
self.dataTask = [session dataTaskWithRequest:request self.dataTask = [session dataTaskWithRequest:request
completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) completionHandler:^(NSData *data, NSURLResponse *response, NSError *error)
{ {
@ -92,7 +99,6 @@ didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge
NSLog(@"XS- http get exception error,%@", exception); NSLog(@"XS- http get exception error,%@", exception);
errorCallback(XSErrorFromException(exception)); errorCallback(XSErrorFromException(exception));
} }
} }
- (NSData *) doGET: (NSString*) urlStr { - (NSData *) doGET: (NSString*) urlStr {
@ -104,10 +110,10 @@ didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge
} withError:^(NSError *err) { } withError:^(NSError *err) {
dispatch_semaphore_signal(semaphore); dispatch_semaphore_signal(semaphore);
}]; }];
// 5 // self.timeoutInterval
dispatch_time_t timeout = dispatch_time(DISPATCH_TIME_NOW, 5 * NSEC_PER_SEC); dispatch_time_t timeout = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(self.timeoutInterval * NSEC_PER_SEC));
// 5 //
long result = dispatch_semaphore_wait(semaphore, timeout); long result = dispatch_semaphore_wait(semaphore, timeout);
if (result == 0) { if (result == 0) {
@ -116,6 +122,8 @@ didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge
} else { } else {
// //
NSLog(@"doGET 等待超时"); NSLog(@"doGET 等待超时");
//
[self.dataTask cancel];
} }
return _data; return _data;
} }
@ -124,7 +132,8 @@ didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge
@try { @try {
NSLog(@"XS- doPOST:%@", urlStr); NSLog(@"XS- doPOST:%@", urlStr);
NSURL *url = [NSURL URLWithString:urlStr]; NSURL *url = [NSURL URLWithString:urlStr];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url
cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:self.timeoutInterval]; //
[request setHTTPMethod:@"POST"]; [request setHTTPMethod:@"POST"];
// //
@ -135,7 +144,11 @@ didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge
NSData *bodyData = [XSHelper str2Data:json]; NSData *bodyData = [XSHelper str2Data:json];
[request setHTTPBody:bodyData]; [request setHTTPBody:bodyData];
NSURLSession *session = [NSURLSession sessionWithoutSSLValidation];//[NSURLSession sharedSession]; // session
NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];
configuration.timeoutIntervalForRequest = self.timeoutInterval;
configuration.timeoutIntervalForResource = self.timeoutInterval;
NSURLSession *session = [NSURLSession sessionWithConfiguration:configuration delegate:[[SSLBypassDelegate alloc] init] delegateQueue:nil];
self.postDataTask = [session dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { self.postDataTask = [session dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
if (error) { if (error) {
@ -163,10 +176,10 @@ didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge
} withError:^(NSError *err) { } withError:^(NSError *err) {
dispatch_semaphore_signal(semaphore); dispatch_semaphore_signal(semaphore);
}]; }];
// 5 // self.timeoutInterval
dispatch_time_t timeout = dispatch_time(DISPATCH_TIME_NOW, 5 * NSEC_PER_SEC); dispatch_time_t timeout = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(self.timeoutInterval * NSEC_PER_SEC));
// 5 //
long result = dispatch_semaphore_wait(semaphore, timeout); long result = dispatch_semaphore_wait(semaphore, timeout);
if (result == 0) { if (result == 0) {
@ -175,6 +188,8 @@ didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge
} else { } else {
// //
NSLog(@"do POST 等待超时"); NSLog(@"do POST 等待超时");
//
[self.postDataTask cancel];
} }
return _data; return _data;
} }
@ -203,4 +218,21 @@ didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge
}]; }];
} }
- (void)cancelAllRequests {
[self.dataTask cancel];
[self.postDataTask cancel];
self.dataTask = nil;
self.postDataTask = nil;
}
- (void)cancelCurrentGETRequest {
[self.dataTask cancel];
self.dataTask = nil;
}
- (void)cancelCurrentPOSTRequest {
[self.postDataTask cancel];
self.postDataTask = nil;
}
@end @end

View File

@ -38,6 +38,9 @@
- (void) reLoad; - (void) reLoad;
- (NSString *) PackageName;
- (BOOL) WashParam;
@end @end

View File

@ -197,6 +197,18 @@ static NSString *_configPath = @"/User/OhNoData/config001.plist";
return [self GetMyConfigStrVal:@"IpDevName" defVal:@"IPhone_001"]; return [self GetMyConfigStrVal:@"IpDevName" defVal:@"IPhone_001"];
} }
- (NSString *)PackageName {
return [self GetMyConfigStrVal:@"PackageName" defVal:@"com.example.myapp"];
}
- (BOOL) SetPackageName: (NSString*) name {
return [self SetConfigItem:@"PackageName" Val:name];
}
- (BOOL) WashParam {
return [self GetLongVal:@"WashParam" defVal:0] == 1;
}
- (NSString *)DeviceId { - (NSString *)DeviceId {
NSString *res = [self GetMyConfigStrVal:@"deviceId" defVal:@""]; NSString *res = [self GetMyConfigStrVal:@"deviceId" defVal:@""];
if (res.length == 0) { if (res.length == 0) {
@ -214,9 +226,7 @@ static NSString *_configPath = @"/User/OhNoData/config001.plist";
} }
- (NSString *)MainServerURL { - (NSString *)MainServerURL {
return [self GetMyConfigStrVal:@"ServerURL" defVal:@"http://192.168.40.8:8080"]; return [self GetMyConfigStrVal:@"MainServerURL" defVal:@"http://192.168.40.8:8080"];
//return [self GetMyConfigStrVal:@"MainServerURL" defVal:@"http://172.30.8.111:8100"];
} }
- (NSString *)ServerURL { - (NSString *)ServerURL {

View File

@ -492,7 +492,7 @@
- (void)scheduleRestart { - (void)scheduleRestart {
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(5.0 * NSEC_PER_SEC)), dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(5.0 * NSEC_PER_SEC)),
serverQueue, ^{ self->serverQueue, ^{ // serverQueue
[self start]; [self start];
}); });
} }

69455
a1.log

File diff suppressed because it is too large Load Diff

87
batch_ssh.sh Normal file
View File

@ -0,0 +1,87 @@
#!/bin/bash
# 执行命令
command="dpg -i /User/Downloads/251128-nt-01.deb"
# 直接展开IP命令
sshpass -p alpine ssh -o StrictHostKeyChecking=no -o ConnectTimeout=10 "root@172.25.210.82" "$command" &
sshpass -p alpine ssh -o StrictHostKeyChecking=no -o ConnectTimeout=10 "root@172.25.210.212" "$command" &
sshpass -p alpine ssh -o StrictHostKeyChecking=no -o ConnectTimeout=10 "root@172.25.208.208" "$command" &
sshpass -p alpine ssh -o StrictHostKeyChecking=no -o ConnectTimeout=10 "root@172.25.208.75" "$command" &
sshpass -p alpine ssh -o StrictHostKeyChecking=no -o ConnectTimeout=10 "root@172.25.206.193" "$command" &
sshpass -p alpine ssh -o StrictHostKeyChecking=no -o ConnectTimeout=10 "root@172.25.208.164" "$command" &
sshpass -p alpine ssh -o StrictHostKeyChecking=no -o ConnectTimeout=10 "root@172.25.201.158" "$command" &
sshpass -p alpine ssh -o StrictHostKeyChecking=no -o ConnectTimeout=10 "root@172.25.206.181" "$command" &
sshpass -p alpine ssh -o StrictHostKeyChecking=no -o ConnectTimeout=10 "root@172.25.208.80" "$command" &
sshpass -p alpine ssh -o StrictHostKeyChecking=no -o ConnectTimeout=10 "root@172.25.208.251" "$command" &
sshpass -p alpine ssh -o StrictHostKeyChecking=no -o ConnectTimeout=10 "root@172.25.206.73" "$command" &
sshpass -p alpine ssh -o StrictHostKeyChecking=no -o ConnectTimeout=10 "root@172.25.201.245" "$command" &
sshpass -p alpine ssh -o StrictHostKeyChecking=no -o ConnectTimeout=10 "root@172.25.201.242" "$command" &
sshpass -p alpine ssh -o StrictHostKeyChecking=no -o ConnectTimeout=10 "root@172.25.210.142" "$command" &
sshpass -p alpine ssh -o StrictHostKeyChecking=no -o ConnectTimeout=10 "root@172.25.210.126" "$command" &
sshpass -p alpine ssh -o StrictHostKeyChecking=no -o ConnectTimeout=10 "root@172.25.208.132" "$command" &
sshpass -p alpine ssh -o StrictHostKeyChecking=no -o ConnectTimeout=10 "root@172.25.206.192" "$command" &
sshpass -p alpine ssh -o StrictHostKeyChecking=no -o ConnectTimeout=10 "root@172.25.206.197" "$command" &
sshpass -p alpine ssh -o StrictHostKeyChecking=no -o ConnectTimeout=10 "root@172.25.201.80" "$command" &
sshpass -p alpine ssh -o StrictHostKeyChecking=no -o ConnectTimeout=10 "root@172.25.206.118" "$command" &
sshpass -p alpine ssh -o StrictHostKeyChecking=no -o ConnectTimeout=10 "root@172.25.210.253" "$command" &
sshpass -p alpine ssh -o StrictHostKeyChecking=no -o ConnectTimeout=10 "root@172.25.206.216" "$command" &
sshpass -p alpine ssh -o StrictHostKeyChecking=no -o ConnectTimeout=10 "root@172.25.210.177" "$command" &
sshpass -p alpine ssh -o StrictHostKeyChecking=no -o ConnectTimeout=10 "root@172.25.210.218" "$command" &
sshpass -p alpine ssh -o StrictHostKeyChecking=no -o ConnectTimeout=10 "root@172.25.201.235" "$command" &
sshpass -p alpine ssh -o StrictHostKeyChecking=no -o ConnectTimeout=10 "root@172.25.210.196" "$command" &
sshpass -p alpine ssh -o StrictHostKeyChecking=no -o ConnectTimeout=10 "root@172.25.206.202" "$command" &
sshpass -p alpine ssh -o StrictHostKeyChecking=no -o ConnectTimeout=10 "root@172.25.201.134" "$command" &
sshpass -p alpine ssh -o StrictHostKeyChecking=no -o ConnectTimeout=10 "root@172.25.206.222" "$command" &
sshpass -p alpine ssh -o StrictHostKeyChecking=no -o ConnectTimeout=10 "root@172.25.201.225" "$command" &
sshpass -p alpine ssh -o StrictHostKeyChecking=no -o ConnectTimeout=10 "root@172.25.208.241" "$command" &
sshpass -p alpine ssh -o StrictHostKeyChecking=no -o ConnectTimeout=10 "root@172.25.206.148" "$command" &
sshpass -p alpine ssh -o StrictHostKeyChecking=no -o ConnectTimeout=10 "root@172.25.210.227" "$command" &
sshpass -p alpine ssh -o StrictHostKeyChecking=no -o ConnectTimeout=10 "root@172.25.210.139" "$command" &
sshpass -p alpine ssh -o StrictHostKeyChecking=no -o ConnectTimeout=10 "root@172.25.208.104" "$command" &
sshpass -p alpine ssh -o StrictHostKeyChecking=no -o ConnectTimeout=10 "root@172.25.201.71" "$command" &
sshpass -p alpine ssh -o StrictHostKeyChecking=no -o ConnectTimeout=10 "root@172.25.210.244" "$command" &
sshpass -p alpine ssh -o StrictHostKeyChecking=no -o ConnectTimeout=10 "root@172.25.201.102" "$command" &
sshpass -p alpine ssh -o StrictHostKeyChecking=no -o ConnectTimeout=10 "root@172.25.208.166" "$command" &
sshpass -p alpine ssh -o StrictHostKeyChecking=no -o ConnectTimeout=10 "root@172.25.210.221" "$command" &
sshpass -p alpine ssh -o StrictHostKeyChecking=no -o ConnectTimeout=10 "root@172.25.206.161" "$command" &
sshpass -p alpine ssh -o StrictHostKeyChecking=no -o ConnectTimeout=10 "root@172.25.208.117" "$command" &
sshpass -p alpine ssh -o StrictHostKeyChecking=no -o ConnectTimeout=10 "root@172.25.210.224" "$command" &
sshpass -p alpine ssh -o StrictHostKeyChecking=no -o ConnectTimeout=10 "root@172.25.206.94" "$command" &
sshpass -p alpine ssh -o StrictHostKeyChecking=no -o ConnectTimeout=10 "root@172.25.208.235" "$command" &
sshpass -p alpine ssh -o StrictHostKeyChecking=no -o ConnectTimeout=10 "root@172.25.201.172" "$command" &
sshpass -p alpine ssh -o StrictHostKeyChecking=no -o ConnectTimeout=10 "root@172.25.208.88" "$command" &
sshpass -p alpine ssh -o StrictHostKeyChecking=no -o ConnectTimeout=10 "root@172.25.210.189" "$command" &
sshpass -p alpine ssh -o StrictHostKeyChecking=no -o ConnectTimeout=10 "root@172.25.201.135" "$command" &
sshpass -p alpine ssh -o StrictHostKeyChecking=no -o ConnectTimeout=10 "root@172.25.206.117" "$command" &
sshpass -p alpine ssh -o StrictHostKeyChecking=no -o ConnectTimeout=10 "root@172.25.201.195" "$command" &
sshpass -p alpine ssh -o StrictHostKeyChecking=no -o ConnectTimeout=10 "root@172.25.206.236" "$command" &
sshpass -p alpine ssh -o StrictHostKeyChecking=no -o ConnectTimeout=10 "root@172.25.208.77" "$command" &
sshpass -p alpine ssh -o StrictHostKeyChecking=no -o ConnectTimeout=10 "root@172.25.206.135" "$command" &
sshpass -p alpine ssh -o StrictHostKeyChecking=no -o ConnectTimeout=10 "root@172.25.210.90" "$command" &
sshpass -p alpine ssh -o StrictHostKeyChecking=no -o ConnectTimeout=10 "root@172.25.208.136" "$command" &
sshpass -p alpine ssh -o StrictHostKeyChecking=no -o ConnectTimeout=10 "root@172.25.206.184" "$command" &
sshpass -p alpine ssh -o StrictHostKeyChecking=no -o ConnectTimeout=10 "root@172.25.208.79" "$command" &
sshpass -p alpine ssh -o StrictHostKeyChecking=no -o ConnectTimeout=10 "root@172.25.210.96" "$command" &
sshpass -p alpine ssh -o StrictHostKeyChecking=no -o ConnectTimeout=10 "root@172.25.201.138" "$command" &
sshpass -p alpine ssh -o StrictHostKeyChecking=no -o ConnectTimeout=10 "root@172.25.208.212" "$command" &
sshpass -p alpine ssh -o StrictHostKeyChecking=no -o ConnectTimeout=10 "root@172.25.206.105" "$command" &
sshpass -p alpine ssh -o StrictHostKeyChecking=no -o ConnectTimeout=10 "root@172.25.210.110" "$command" &
sshpass -p alpine ssh -o StrictHostKeyChecking=no -o ConnectTimeout=10 "root@172.25.206.249" "$command" &
sshpass -p alpine ssh -o StrictHostKeyChecking=no -o ConnectTimeout=10 "root@172.25.210.248" "$command" &
sshpass -p alpine ssh -o StrictHostKeyChecking=no -o ConnectTimeout=10 "root@172.25.210.211" "$command" &
sshpass -p alpine ssh -o StrictHostKeyChecking=no -o ConnectTimeout=10 "root@172.25.201.92" "$command" &
sshpass -p alpine ssh -o StrictHostKeyChecking=no -o ConnectTimeout=10 "root@172.25.201.150" "$command" &
sshpass -p alpine ssh -o StrictHostKeyChecking=no -o ConnectTimeout=10 "root@172.25.201.227" "$command" &
sshpass -p alpine ssh -o StrictHostKeyChecking=no -o ConnectTimeout=10 "root@172.25.206.186" "$command" &
sshpass -p alpine ssh -o StrictHostKeyChecking=no -o ConnectTimeout=10 "root@172.25.208.81" "$command" &
sshpass -p alpine ssh -o StrictHostKeyChecking=no -o ConnectTimeout=10 "root@172.25.201.247" "$command" &
sshpass -p alpine ssh -o StrictHostKeyChecking=no -o ConnectTimeout=10 "root@172.25.208.182" "$command" &
sshpass -p alpine ssh -o StrictHostKeyChecking=no -o ConnectTimeout=10 "root@172.25.201.216" "$command" &
sshpass -p alpine ssh -o StrictHostKeyChecking=no -o ConnectTimeout=10 "root@172.25.208.120" "$command" &
sshpass -p alpine ssh -o StrictHostKeyChecking=no -o ConnectTimeout=10 "root@172.25.201.88" "$command" &
sshpass -p alpine ssh -o StrictHostKeyChecking=no -o ConnectTimeout=10 "root@172.25.201.202" "$command" &
sshpass -p alpine ssh -o StrictHostKeyChecking=no -o ConnectTimeout=10 "root@172.25.208.250" "$command" &
wait # 等待所有后台进程完成
echo "All commands executed"

41
execute_command.py Normal file
View File

@ -0,0 +1,41 @@
import paramiko
# 设置SSH连接参数
port = 22
username = 'root'
password = 'alpine'
def execute_command(hostname: str, command: str):
# 创建SSH客户端
client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 连接SSH服务端
client.connect(hostname, port, username, password)
# 执行命令
stdin, stdout, stderr = client.exec_command(command)
output = stdout.read().decode('utf-8')
error = stderr.read().decode('utf-8')
print(f"主机 {hostname} 执行命令: {command}")
if output:
print("输出:", output)
if error:
print("错误:", error)
# 关闭连接
client.close()
if __name__ == "__main__":
ips1 = []
with open("./ips.txt", 'r') as f:
ips1 = [i.strip() for i in f.readlines()]
command = 'ls -l' # 替换为实际要执行的命令
for hostname in ips1:
try:
print(hostname)
execute_command(hostname, command)
except Exception as e:
print(e)

View File

@ -14,7 +14,7 @@ TWEAK_NAME = OhNo
OhNo_FRAMEWORKS = CoreLocation CFNetwork CoreTelephony Security OhNo_FRAMEWORKS = CoreLocation CFNetwork CoreTelephony Security
OhNo_FILES = Tweak.x $(wildcard server/*.m) $(wildcard server/Core/*.m) OhNo_FILES = Tweak.x XSLog.m XHookSettingsManager.m
OhNo_CFLAGS = -Wno-error -Wno-module-import-in-extern-c -fobjc-arc OhNo_CFLAGS = -Wno-error -Wno-module-import-in-extern-c -fobjc-arc

View File

@ -1,28 +0,0 @@
#import <Metal/Metal.h>
#import <objc/runtime.h>
@interface CustomMTLDevice : NSObject <MTLDevice>
@property (nonatomic, strong) id<MTLDevice> originalDevice;
@property (nonatomic, strong) NSString *customName;
- (instancetype)initWithOriginalDevice:(id<MTLDevice>)device customName:(NSString *)name;
@end
@implementation CustomMTLDevice
- (instancetype)initWithOriginalDevice:(id<MTLDevice>)device customName:(NSString *)name {
if (self = [super init]) {
_originalDevice = device;
_customName = name;
}
return self;
}
- (NSString *)name {
return self.customName ?: [self.originalDevice name];
}
- (id)forwardingTargetForSelector:(SEL)aSelector {
return self.originalDevice;
}
@end

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,70 @@
//
// XHookSettingsManager.h
// 配置管理器 - 头文件
//
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
@interface XHookSettingsManager : NSObject
@property (nonatomic, assign, readonly) BOOL isLoaded;
// 单例
+ (instancetype)sharedManager;
// 加载配置
- (BOOL)loadSettingsFromPath:(NSString *)path;
- (void)cleanup;
// 设备信息
@property (nonatomic, strong, readonly) NSUUID *idfa;
@property (nonatomic, strong, readonly) NSUUID *idfv;
@property (nonatomic, copy, readonly) NSString *deviceName;
@property (nonatomic, copy, readonly) NSString *osVersion;
@property (nonatomic, copy, readonly) NSString *productStr;
@property (nonatomic, copy, readonly) NSString *hwModel;
@property (nonatomic, assign, readonly) NSUInteger trackingStatus;
// 系统信息
@property (nonatomic, assign, readonly) unsigned long long physicalMemory;
@property (nonatomic, assign, readonly) NSUInteger cpuCore;
@property (nonatomic, assign, readonly) double systemUptimeOffset;
@property (nonatomic, assign, readonly) NSInteger kernBootTimeOffset;
// 电池信息
@property (nonatomic, assign, readonly) UIDeviceBatteryState batteryState;
@property (nonatomic, assign, readonly) float batteryLevel;
// 屏幕信息
@property (nonatomic, assign, readonly) CGFloat screenBrightness;
@property (nonatomic, assign, readonly) CGFloat screenScale;
@property (nonatomic, strong, readonly) NSDictionary *screenBounds;
@property (nonatomic, strong, readonly) NSDictionary *safeAreaInsets;
// 磁盘信息
@property (nonatomic, assign, readonly) unsigned long long diskSize;
@property (nonatomic, assign, readonly) unsigned long long diskFreeSize;
// 音频
@property (nonatomic, assign, readonly) float outputVolume;
// 网络信息
@property (nonatomic, copy, readonly) NSString *userAgent;
@property (nonatomic, strong, readonly) NSDictionary *networkInterfacesInfo;
@property (nonatomic, strong, readonly) NSDictionary *simInfo;
// 本地化
@property (nonatomic, copy, readonly) NSString *locale;
@property (nonatomic, copy, readonly) NSString *timeZone;
// 应用列表
@property (nonatomic, strong, readonly) NSArray *apps;
- (BOOL)shouldHookApp:(NSString *)bundleIdentifier;
@end
// 便捷宏
#define XHookSettings [XHookSettingsManager sharedManager]

View File

@ -0,0 +1,232 @@
//
// XHookSettingsManager.m
// -
//
#import "XHookSettingsManager.h"
@implementation XHookSettingsManager
+ (instancetype)sharedManager {
static XHookSettingsManager *manager = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
manager = [[XHookSettingsManager alloc] init];
});
return manager;
}
- (instancetype)init {
self = [super init];
if (self) {
[self resetToDefaults];
}
return self;
}
- (void)resetToDefaults {
_isLoaded = NO;
//
_idfa = nil;
_idfv = nil;
_deviceName = nil;
_osVersion = nil;
_productStr = @"iPhone14,2";
_hwModel = nil;
_trackingStatus = 3; //
//
_physicalMemory = 0;
_cpuCore = 0;
_systemUptimeOffset = -1.0;
_kernBootTimeOffset = 0;
//
_batteryState = UIDeviceBatteryStateUnknown;
_batteryLevel = -1.0f;
//
_screenBrightness = -1.0;
_screenScale = -1.0;
_screenBounds = nil;
_safeAreaInsets = nil;
//
_diskSize = 0;
_diskFreeSize = 0;
//
_outputVolume = -1.0f;
//
_userAgent = nil;
_networkInterfacesInfo = nil;
_simInfo = nil;
//
_locale = nil;
_timeZone = nil;
//
_apps = nil;
}
#pragma mark -
- (NSString *)parseString:(id)value defaultValue:(NSString *)defaultValue {
if ([value isKindOfClass:[NSString class]]) {
return value;
}
return defaultValue;
}
- (NSInteger)parseInteger:(id)value defaultValue:(NSInteger)defaultValue {
if ([value isKindOfClass:[NSString class]]) {
return [value integerValue];
} else if ([value isKindOfClass:[NSNumber class]]) {
return [value integerValue];
}
return defaultValue;
}
- (float)parseFloat:(id)value defaultValue:(float)defaultValue {
if ([value isKindOfClass:[NSString class]]) {
return [value floatValue];
} else if ([value isKindOfClass:[NSNumber class]]) {
return [value floatValue];
}
return defaultValue;
}
- (double)parseDouble:(id)value defaultValue:(double)defaultValue {
if ([value isKindOfClass:[NSString class]]) {
return [value doubleValue];
} else if ([value isKindOfClass:[NSNumber class]]) {
return [value doubleValue];
}
return defaultValue;
}
- (unsigned long long)parseULL:(id)value defaultValue:(unsigned long long)defaultValue {
if ([value isKindOfClass:[NSString class]]) {
return [value longLongValue];
} else if ([value isKindOfClass:[NSNumber class]]) {
return [value unsignedLongLongValue];
}
return defaultValue;
}
- (NSUUID *)parseUUID:(id)value {
if ([value isKindOfClass:[NSString class]]) {
return [[NSUUID alloc] initWithUUIDString:value];
}
return nil;
}
- (NSDictionary *)parseDictionary:(id)value {
if ([value isKindOfClass:[NSDictionary class]]) {
return value;
}
return nil;
}
- (NSArray *)parseArray:(id)value {
if ([value isKindOfClass:[NSArray class]]) {
return value;
}
return nil;
}
#pragma mark -
- (BOOL)loadSettingsFromPath:(NSString *)path {
@try {
NSFileManager *fileManager = [NSFileManager defaultManager];
if (![fileManager fileExistsAtPath:path]) {
return NO;
}
NSData *jsonData = [NSData dataWithContentsOfFile:path];
if (!jsonData) {
return NO;
}
NSError *error = nil;
NSDictionary *settings = [NSJSONSerialization JSONObjectWithData:jsonData options:kNilOptions error:&error];
if (error || !settings || ![settings isKindOfClass:[NSDictionary class]]) {
NSLog(@"XHookSettingsManager: Error parsing JSON: %@", error);
return NO;
}
//
[self parseSettings:settings];
_isLoaded = YES;
return YES;
} @catch (NSException *exception) {
NSLog(@"XHookSettingsManager: Exception loading settings: %@", exception);
return NO;
}
}
- (void)parseSettings:(NSDictionary *)settings {
//
_idfa = [self parseUUID:settings[@"idfa"]];
_idfv = [self parseUUID:settings[@"idfv"]];
_deviceName = [self parseString:settings[@"deviceName"] defaultValue:nil];
_osVersion = [self parseString:settings[@"osVersion"] defaultValue:nil];
_productStr = [self parseString:settings[@"productStr"] defaultValue:@"iPhone14,2"];
_hwModel = [self parseString:settings[@"hwModel"] defaultValue:nil];
_trackingStatus = [self parseInteger:settings[@"trackingStatus"] defaultValue:3];
//
_physicalMemory = [self parseULL:settings[@"physicalMemory"] defaultValue:0];
_cpuCore = [self parseInteger:settings[@"cpuCore"] defaultValue:0];
_systemUptimeOffset = [self parseDouble:settings[@"systemUptime"] defaultValue:-1.0];
_kernBootTimeOffset = [self parseInteger:settings[@"kernBootTime"] defaultValue:0];
//
NSInteger batteryStateVal = [self parseInteger:settings[@"batteryState"] defaultValue:-1];
_batteryState = (batteryStateVal >= 0) ? (UIDeviceBatteryState)batteryStateVal : UIDeviceBatteryStateUnknown;
_batteryLevel = [self parseFloat:settings[@"batteryLevel"] defaultValue:-1.0f];
//
_screenBrightness = [self parseDouble:settings[@"screenBrightness"] defaultValue:-1.0];
_screenScale = [self parseDouble:settings[@"screenScale"] defaultValue:-1.0];
_screenBounds = [self parseDictionary:settings[@"screenBounds"]];
_safeAreaInsets = [self parseDictionary:settings[@"safeAreaInsets"]];
//
_diskSize = [self parseULL:settings[@"diskSize"] defaultValue:0];
_diskFreeSize = [self parseULL:settings[@"diskFreeSize"] defaultValue:0];
//
_outputVolume = [self parseFloat:settings[@"outputVolume"] defaultValue:-1.0f];
//
_userAgent = [self parseString:settings[@"userAgent"] defaultValue:nil];
_networkInterfacesInfo = [self parseDictionary:settings[@"networkInterfacesInfo"]];
_simInfo = [self parseDictionary:settings[@"simInfo"]];
//
_locale = [self parseString:settings[@"locale"] defaultValue:nil];
_timeZone = [self parseString:settings[@"timeZone"] defaultValue:nil];
//
_apps = [self parseArray:settings[@"apps"]];
}
- (void)cleanup {
[self resetToDefaults];
}
#pragma mark -
- (BOOL)shouldHookApp:(NSString *)bundleIdentifier {
if (!bundleIdentifier || !_apps) return NO;
return [_apps containsObject:bundleIdentifier];
}
@end

22
ios-change-info/XSLog.h Normal file
View File

@ -0,0 +1,22 @@
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
/// @param logFileName 日志文件名
/// @param maxFileSize 日志文件最大大小(字节),超过此大小将创建新文件
void XSLogSetupLogWithFileName(NSString *logFileName, unsigned long long maxFileSize);
/// @param logFilePath 日志文件路径
/// @param maxFileSize 日志文件最大大小(字节),超过此大小将创建新文件
void XSLogSetupLogWithFilePath(NSString *logFilePath, unsigned long long maxFileSize);
void XSLogMessage(NSString *format, ...) __attribute__((format(NSString, 1, 2)));
void XSLogRedirectNSLog(void);
// 定义一个宏方便替换NSLog
#define XSLog(format, ...) XSLogMessage((format), ##__VA_ARGS__)
NS_ASSUME_NONNULL_END

162
ios-change-info/XSLog.m Normal file
View File

@ -0,0 +1,162 @@
#import "XSLog.h"
static NSString *kLogFilePath = @"app.log";
static unsigned long long kMaxFileSize = 10 * 1024 * 1024; // 10 MB
static NSFileHandle *logFileHandle;
static dispatch_queue_t logQueue;
static int logCount = 0; //
static const int kLogCheckFrequency = 100; // 100
//
static void setupLogFileHandle(NSString *logFilePath);
static void checkAndRollLogFile(NSString *logFilePath);
static NSString *getLogFilePath(NSString *logFileName);
void XSLogSetupLogWithFilePath(NSString *logFilePath,
unsigned long long maxFileSize) {
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
kLogFilePath = logFilePath;
kMaxFileSize = maxFileSize;
logQueue = dispatch_queue_create("com.yourcompany.app.logQueue",
DISPATCH_QUEUE_SERIAL);
//
setupLogFileHandle(logFilePath);
});
}
void XSLogSetupLogWithFileName(NSString *logFileName,
unsigned long long maxFileSize) {
kLogFilePath = getLogFilePath(logFileName);
XSLogSetupLogWithFilePath(kLogFilePath,maxFileSize);
}
static NSString *getLogFilePath(NSString *logFileName) {
// Documents
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
NSUserDomainMask, YES);
NSString *documentsDirectory = [paths firstObject];
NSString *logFilePath =
[documentsDirectory stringByAppendingPathComponent:logFileName];
return logFilePath;
}
static void setupLogFileHandle(NSString *logFilePath) {
//
checkAndRollLogFile(logFilePath);
//
if (logFileHandle) {
[logFileHandle closeFile];
logFileHandle = nil;
}
//
logFileHandle = [NSFileHandle fileHandleForWritingAtPath:logFilePath];
if (!logFileHandle) {
//
[[NSFileManager defaultManager] createFileAtPath:logFilePath
contents:nil
attributes:nil];
logFileHandle = [NSFileHandle fileHandleForWritingAtPath:logFilePath];
}
if (logFileHandle) {
//
[logFileHandle seekToEndOfFile];
} else {
fprintf(stderr, "Error: Could not open log file for writing.\n");
}
}
static void checkAndRollLogFile(NSString *logFilePath) {
NSFileManager *fileManager = [NSFileManager defaultManager];
if ([fileManager fileExistsAtPath:logFilePath]) {
NSError *error = nil;
NSDictionary *fileAttributes =
[fileManager attributesOfItemAtPath:logFilePath error:&error];
if (fileAttributes) {
unsigned long long fileSize = [fileAttributes fileSize];
if (fileSize > kMaxFileSize) {
//
NSString *backupFilePath =
[logFilePath stringByAppendingString:@".bak"];
[fileManager removeItemAtPath:backupFilePath
error:nil]; //
[fileManager moveItemAtPath:logFilePath
toPath:backupFilePath
error:&error]; //
if (error) {
fprintf(stderr, "Error rolling log file: %s\n",
error.localizedDescription.UTF8String);
}
//
[fileManager createFileAtPath:logFilePath contents:nil attributes:nil];
//
setupLogFileHandle(kLogFilePath);
}
} else {
fprintf(stderr, "Error getting file attributes: %s\n",
error.localizedDescription.UTF8String);
}
}
}
void XSLogRedirectNSLog(void) {
if (logFileHandle) {
int fd = [logFileHandle fileDescriptor];
if (fd != -1) {
//
if (dup2(fd, STDERR_FILENO) == -1) {
fprintf(stderr, "Error redirecting stderr to log file.\n");
}
} else {
fprintf(stderr, "Error: logFileHandle has an invalid file descriptor.\n");
}
} else {
fprintf(stderr, "Error: logFileHandle is not initialized. Cannot redirect stderr.\n");
}
}
void XSLogMessage(NSString *format, ...) {
va_list args;
va_start(args, format);
NSString *message = [[NSString alloc] initWithFormat:format arguments:args];
va_end(args);
dispatch_async(logQueue, ^{
//
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
dateFormatter.dateFormat = @"yyyy-MM-dd HH:mm:ss.SSS";
NSString *timestamp = [dateFormatter stringFromDate:[NSDate date]];
//
NSString *logString =
[NSString stringWithFormat:@"%@ %@\n", timestamp, message];
//
NSData *data = [logString dataUsingEncoding:NSUTF8StringEncoding];
if (logFileHandle) {
@try {
[logFileHandle writeData:data];
//
logCount++;
// kLogCheckFrequency
if (logCount >= kLogCheckFrequency) {
logCount = 0; //
checkAndRollLogFile(kLogFilePath);
}
} @catch (NSException *exception) {
fprintf(stderr, "Error writing to log file: %s\n",
exception.reason.UTF8String);
}
}
// 便
fprintf(stderr, "%s", [logString UTF8String]);
});
}

30
ips.txt
View File

@ -1,10 +1,20 @@
192.168.1.15 172.30.8.124
192.168.1.19 172.29.109.24
192.168.1.18 172.30.8.125
192.168.1.20 172.29.109.32
192.168.1.11 172.29.109.11
192.168.1.21 172.29.109.16
192.168.1.14 172.29.108.16
192.168.1.16 172.29.109.31
192.168.1.13 172.29.109.14
192.168.1.17 172.29.109.33
172.29.109.21
172.29.109.27
172.29.109.28
172.29.108.19
172.29.109.20
172.29.109.12
172.29.109.19
172.25.201.136
172.29.109.13
172.29.109.15

22
local_file.txt Normal file
View File

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>IpDevName</key>
<string>ImagePixel</string>
<key>MainServerURL</key>
<string>http://192.168.40.8:8080</string>
<key>PackageName</key>
<string>com.imagePixelFactory.imagePixelFactory</string>
<key>ServerURL</key>
<string>https://nks-api.i.explore-sun.com</string>
<key>WashParam</key>
<false/>
<key>deviceId</key>
<string>8DCA89B4-6D3F-4FAA-8388-61758B11B555</string>
<key>lastReboot</key>
<integer>1761185614</integer>
<key>senderId</key>
<integer>4294968678</integer>
</dict>
</plist>

62
modify_config.py Normal file
View File

@ -0,0 +1,62 @@
import paramiko
import os
import plistlib
# 设置SSH连接参数
# hostname = '172.30.104.18'
port = 22
username = 'root'
password = 'alpine'
# packagename = 'com.funny.prank.call'
def moveRemote(hostname:str, name:str,pkg:str, serverurl:str, wash:bool=False):
# 创建SSH传输通道
transport = paramiko.Transport((hostname, port))
transport.set_keepalive(5)
# 连接SSH服务端以用户名和密码进行认证
transport.connect(username=username, password=password)
# 创建SFTP客户端
sftp = paramiko.SFTPClient.from_transport(transport)
# 上传本地文件到远程主机
local_path = 'local_file.txt'
remote_path = '/User/OhNoData/config001.plist'
# sftp.put(local_path, remote_path)
sftp.get(remote_path, local_path)
with open(local_path, 'rb') as fp:
configPlist = plistlib.load(fp)
configPlist['IpDevName'] = name
configPlist['ServerURL'] = serverurl
configPlist['PackageName'] = pkg
configPlist['WashParam'] = wash
configPlist['MainServerURL'] = "http://192.168.40.8:8080"
with open(local_path, 'wb') as fp:
plistlib.dump(configPlist, fp)
print(configPlist)
# 上传本地文件到远程主机
sftp.put(local_path, remote_path)
# 关闭SFTP连接
sftp.close()
# 关闭SSH传输通道
transport.close()
if __name__ == "__main__":
ips1 = []
with open("./ips.txt", 'r') as f:
ips1 = [i.strip() for i in f.readlines()]
for it in ips1:
try:
print(it)
moveRemote(it,"ImagePixel", 'com.imagePixelFactory.imagePixelFactory', "https://nks-api.i.explore-sun.com", False)
except Exception as e:
print(e)

42
myssh.sh Normal file
View File

@ -0,0 +1,42 @@
#!/bin/bash
# 函数复制文件到所有IP机器
# 用法: copy_to_ips <source_file> <destination_path>
copy_to_ips() {
local source_file=$1
local dest_path=$2
while IFS= read -r ip; do
ip=$(echo "$ip" | tr -d '\r') # 移除DOS换行符
if [ -n "$ip" ]; then
echo "Copying $source_file to $ip:$dest_path"
sshpass -p alpine scp -o StrictHostKeyChecking=no "$source_file" "root@$ip:$dest_path"
fi
done < ips.txt
}
# 函数在所有IP机器上执行命令
# 用法: execute_on_ips <command>
execute_on_ips() {
local command=$1
if [ ! -f ips.txt ]; then
echo "Error: ips.txt not found"
return 1
fi
echo "Total lines in ips.txt: $(wc -l < ips.txt)"
while IFS= read -r ip; do
ip=$(echo "$ip" | tr -d '\r') # 移除DOS换行符
echo "Read IP: '$ip'"
if [ -n "$ip" ]; then
echo "Processing IP: $ip"
echo "Executing on $ip: $command"
sshpass -p alpine ssh -o StrictHostKeyChecking=no -o ConnectTimeout=10 "root@$ip" "$command" || echo "Failed to execute on $ip"
else
echo "Skipping empty line"
fi
done < ips.txt
echo "Finished processing all IPs"
}
# 示例用法(可注释掉)
# copy_to_ips ./251128-nt-01.deb /User/Downlodas
execute_on_ips "killall -9 SpringBoard"

BIN
packages/20251110-nt.deb Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
packages/251125-06.deb Normal file

Binary file not shown.

BIN
packages/251127-nt-01.deb Normal file

Binary file not shown.

BIN
packages/251128-nt-01.deb Normal file

Binary file not shown.

BIN
packages/251128-nt-02.deb Normal file

Binary file not shown.

BIN
packages/251201-nt-01.deb Normal file

Binary file not shown.

BIN
packages/251202-nt-01.deb Normal file

Binary file not shown.

BIN
packages/test.deb Normal file

Binary file not shown.

9
reinstall.sh Executable file
View File

@ -0,0 +1,9 @@
rm ./packages/test.deb
make clean
make
make package
mv ./packages/com.xyzshell.ios*.deb ./packages/test.deb
echo "Rebuild finished."
sshpass -p alpine pscp -l root -A -h ./ips.txt ./packages/test.deb /User/Downloads/
sshpass -p alpine pssh -l root -A -ih ./ips.txt "dpkg -i /User/Downloads/test.deb"
sshpass -p alpine pssh -l root -A -ih ./ips.txt "killall -9 SpringBoard"

23
testudp.py Normal file
View File

@ -0,0 +1,23 @@
import socket
data = """
{
"url": "/start",
}
""".encode('utf-8')
with open('./ips.txt', 'r') as f:
for ip in f.readlines():
print(ip.strip())
try:
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.settimeout(5)
# 发送数据:
s.sendto(data, (ip.strip(), 6001))
# 接收数据:
print(s.recv(1024).decode('utf-8'))
s.close()
except Exception as e:
print(e)

42
upload_file.py Normal file
View File

@ -0,0 +1,42 @@
import paramiko
# 设置SSH连接参数
port = 22
username = 'root'
password = 'alpine'
def upload_file(hostname: str, local_path: str, remote_path: str):
# 创建SSH传输通道
transport = paramiko.Transport((hostname, port))
transport.set_keepalive(5)
# 连接SSH服务端以用户名和密码进行认证
transport.connect(username=username, password=password)
# 创建SFTP客户端
sftp = paramiko.SFTPClient.from_transport(transport)
# 上传本地文件到远程主机
sftp.put(local_path, remote_path)
print(f"文件 {local_path} 已上传到 {hostname}:{remote_path}")
# 关闭SFTP连接
sftp.close()
# 关闭SSH传输通道
transport.close()
if __name__ == "__main__":
ips1 = []
with open("./ips.txt", 'r') as f:
ips1 = [i.strip() for i in f.readlines()]
local_path = 'local_file.txt' # 本地文件路径
remote_path = '/remote/path/to/file.txt' # 远程文件路径
for hostname in ips1:
try:
print(hostname)
upload_file(hostname, local_path, remote_path)
except Exception as e:
print(e)