Compare commits
No commits in common. "lux-main-new-api" and "lux-main-12-notouch" have entirely different histories.
lux-main-n
...
lux-main-1
@ -6,5 +6,5 @@ Author: XYZShell
|
||||
Section: Utilities
|
||||
Tag: role::developer
|
||||
Architecture: iphoneos-arm
|
||||
Version: 0.0.7-10-117+debug
|
||||
Installed-Size: 1700
|
||||
Version: 0.0.7-10-68+debug
|
||||
Installed-Size: 1624
|
||||
|
||||
Binary file not shown.
Binary file not shown.
@ -1 +1 @@
|
||||
./packages/com.xyzshell.ioscontrol_0.0.7-10-117+debug_iphoneos-arm.deb
|
||||
./packages/com.xyzshell.ioscontrol_0.0.7-10-68+debug_iphoneos-arm.deb
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Binary file not shown.
@ -2,192 +2,184 @@
|
||||
triple: 'arm64-apple-darwin'
|
||||
binary-path: '/Users/mac/workspaces/projects/ios-change/old-ios-hook/.theos/obj/debug/arm64/OhNo.dylib'
|
||||
relocations:
|
||||
- { offset: 0x51, size: 0x8, addend: 0x0, symName: '__logos_meta_orig$XHooks$ATTrackingManager$trackingAuthorizationStatus', symObjAddr: 0x1EEA0, symBinAddr: 0x121B0, symSize: 0x0 }
|
||||
- { offset: 0xE9, size: 0x8, addend: 0x0, symName: '__logos_meta_orig$XHooks$ATTrackingManager$requestTrackingAuthorizationWithCompletionHandler$', symObjAddr: 0x1EEA8, symBinAddr: 0x121B8, symSize: 0x0 }
|
||||
- { offset: 0x183, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$ASIdentifierManager$advertisingIdentifier', symObjAddr: 0x1EEB0, symBinAddr: 0x121C0, symSize: 0x0 }
|
||||
- { offset: 0x218, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$ASIdentifierManager$isAdvertisingTrackingEnabled', symObjAddr: 0x1EEB8, symBinAddr: 0x121C8, symSize: 0x0 }
|
||||
- { offset: 0x254, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$UIDevice$identifierForVendor', symObjAddr: 0x1EEC0, symBinAddr: 0x121D0, symSize: 0x0 }
|
||||
- { offset: 0x441, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$UIDevice$name', symObjAddr: 0x1EEC8, symBinAddr: 0x121D8, symSize: 0x0 }
|
||||
- { offset: 0x46B, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$UIDevice$model', symObjAddr: 0x1EED0, symBinAddr: 0x121E0, symSize: 0x0 }
|
||||
- { offset: 0x480, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$UIDevice$localizedModel', symObjAddr: 0x1EED8, symBinAddr: 0x121E8, symSize: 0x0 }
|
||||
- { offset: 0x495, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$UIDevice$systemName', symObjAddr: 0x1EEE0, symBinAddr: 0x121F0, symSize: 0x0 }
|
||||
- { offset: 0x4AA, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$UIDevice$systemVersion', symObjAddr: 0x1EEE8, symBinAddr: 0x121F8, symSize: 0x0 }
|
||||
- { offset: 0x4BF, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$UIDevice$batteryState', symObjAddr: 0x1EEF0, symBinAddr: 0x12200, symSize: 0x0 }
|
||||
- { offset: 0x4E9, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$UIDevice$batteryLevel', symObjAddr: 0x1EEF8, symBinAddr: 0x12208, symSize: 0x0 }
|
||||
- { offset: 0x513, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$UIDevice$orientation', symObjAddr: 0x1EF00, symBinAddr: 0x12210, symSize: 0x0 }
|
||||
- { offset: 0x53D, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$NSProcessInfo$systemUptime', symObjAddr: 0x1EF08, symBinAddr: 0x12218, symSize: 0x0 }
|
||||
- { offset: 0x709, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$NSProcessInfo$physicalMemory', symObjAddr: 0x1EF10, symBinAddr: 0x12220, symSize: 0x0 }
|
||||
- { offset: 0x733, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$NSProcessInfo$processorCount', symObjAddr: 0x1EF18, symBinAddr: 0x12228, symSize: 0x0 }
|
||||
- { offset: 0x75D, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$NSProcessInfo$operatingSystemVersion', symObjAddr: 0x1EF20, symBinAddr: 0x12230, symSize: 0x0 }
|
||||
- { offset: 0x787, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$UIWindow$safeAreaInsets', symObjAddr: 0x1EF28, symBinAddr: 0x12238, 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$XHooks$UIScreen$bounds', symObjAddr: 0x1EF38, symBinAddr: 0x12248, symSize: 0x0 }
|
||||
- { offset: 0x250E, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$UIScreen$scale', symObjAddr: 0x1EF40, symBinAddr: 0x12250, symSize: 0x0 }
|
||||
- { offset: 0x2523, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$UIScreen$nativeBounds', symObjAddr: 0x1EF48, symBinAddr: 0x12258, symSize: 0x0 }
|
||||
- { offset: 0x2538, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$UIScreen$isCaptured', symObjAddr: 0x1EF50, symBinAddr: 0x12260, symSize: 0x0 }
|
||||
- { offset: 0x2562, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$UIScreen$mirroredScreen', symObjAddr: 0x1EF58, symBinAddr: 0x12268, 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$XHooks$UIStatusBarManager$statusBarFrame', symObjAddr: 0x1EF68, symBinAddr: 0x12278, symSize: 0x0 }
|
||||
- { offset: 0x2627, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$AVAudioSession$outputVolume', symObjAddr: 0x1EF70, symBinAddr: 0x12280, symSize: 0x0 }
|
||||
- { offset: 0x299C, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$NSFileManager$attributesOfFileSystemForPath$error$', symObjAddr: 0x1EF78, symBinAddr: 0x12288, symSize: 0x0 }
|
||||
- { offset: 0x2AC6, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$NSFileManager$fileExistsAtPath$', symObjAddr: 0x1EF80, symBinAddr: 0x12290, symSize: 0x0 }
|
||||
- { offset: 0x2AF5, size: 0x8, addend: 0x0, symName: '__logos_meta_orig$XHooks$NSLocale$preferredLanguages', symObjAddr: 0x1EF88, symBinAddr: 0x12298, symSize: 0x0 }
|
||||
- { offset: 0x2B1F, size: 0x8, addend: 0x0, symName: '__logos_meta_orig$XHooks$NSLocale$currentLocale', symObjAddr: 0x1EF90, symBinAddr: 0x122A0, symSize: 0x0 }
|
||||
- { offset: 0x2B5E, size: 0x8, addend: 0x0, symName: '__logos_meta_orig$XHooks$NSLocale$systemLocale', symObjAddr: 0x1EF98, symBinAddr: 0x122A8, symSize: 0x0 }
|
||||
- { offset: 0x2B73, size: 0x8, addend: 0x0, symName: '__logos_meta_orig$XHooks$NSTimeZone$localTimeZone', symObjAddr: 0x1EFA0, symBinAddr: 0x122B0, symSize: 0x0 }
|
||||
- { offset: 0x2BCC, size: 0x8, addend: 0x0, symName: '__logos_meta_orig$XHooks$NSTimeZone$systemTimeZone', symObjAddr: 0x1EFA8, symBinAddr: 0x122B8, symSize: 0x0 }
|
||||
- { offset: 0x2BE1, size: 0x8, addend: 0x0, symName: '__logos_meta_orig$XHooks$NSTimeZone$defaultTimeZone', symObjAddr: 0x1EFB0, symBinAddr: 0x122C0, symSize: 0x0 }
|
||||
- { offset: 0x2BF6, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$NSMutableURLRequest$initWithURL$', symObjAddr: 0x1EFB8, symBinAddr: 0x122C8, symSize: 0x0 }
|
||||
- { offset: 0x2E93, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$NSMutableURLRequest$setValue$forHTTPHeaderField$', symObjAddr: 0x1EFC0, symBinAddr: 0x122D0, symSize: 0x0 }
|
||||
- { offset: 0x2EC8, size: 0x8, addend: 0x0, symName: '__logos_meta_orig$XHooks$NSURLSession$sessionWithConfiguration$', symObjAddr: 0x1EFC8, symBinAddr: 0x122D8, symSize: 0x0 }
|
||||
- { offset: 0x35FC, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$NSURLSession$dataTaskWithRequest$completionHandler$', symObjAddr: 0x1EFD0, symBinAddr: 0x122E0, symSize: 0x0 }
|
||||
- { offset: 0x384E, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$WKWebView$evaluateJavaScript$completionHandler$', symObjAddr: 0x1EFD8, symBinAddr: 0x122E8, symSize: 0x0 }
|
||||
- { offset: 0x54B2, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$WKWebView$setCustomUserAgent$', symObjAddr: 0x1EFE0, symBinAddr: 0x122F0, symSize: 0x0 }
|
||||
- { offset: 0x54DD, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$WKWebView$customUserAgent', symObjAddr: 0x1EFE8, symBinAddr: 0x122F8, symSize: 0x0 }
|
||||
- { offset: 0x5507, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$CTTelephonyNetworkInfo$serviceCurrentRadioAccessTechnology', symObjAddr: 0x1EFF0, symBinAddr: 0x12300, symSize: 0x0 }
|
||||
- { offset: 0x56B7, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$CTTelephonyNetworkInfo$serviceSubscriberCellularProviders', symObjAddr: 0x1EFF8, symBinAddr: 0x12308, symSize: 0x0 }
|
||||
- { offset: 0x56CC, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$CMMotionManager$startGyroUpdatesToQueue$withHandler$', symObjAddr: 0x1F000, symBinAddr: 0x12310, symSize: 0x0 }
|
||||
- { offset: 0x5C18, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$uname', symObjAddr: 0x1F008, symBinAddr: 0x12318, symSize: 0x0 }
|
||||
- { offset: 0x5C9A, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$sysctl', symObjAddr: 0x1F010, symBinAddr: 0x12320, symSize: 0x0 }
|
||||
- { offset: 0x5CF3, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$sysctlbyname', symObjAddr: 0x1F018, symBinAddr: 0x12328, symSize: 0x0 }
|
||||
- { offset: 0x5D2D, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$clock_gettime', symObjAddr: 0x1F020, symBinAddr: 0x12330, symSize: 0x0 }
|
||||
- { offset: 0x5DCD, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$getifaddrs', symObjAddr: 0x1F028, symBinAddr: 0x12338, symSize: 0x0 }
|
||||
- { offset: 0x5EAB, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$SCNetworkReachabilityGetFlags', symObjAddr: 0x1F030, symBinAddr: 0x12340, symSize: 0x0 }
|
||||
- { offset: 0x5F5C, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$UIAccessibilityIsClosedCaptioningEnabled', symObjAddr: 0x1F038, symBinAddr: 0x12348, symSize: 0x0 }
|
||||
- { offset: 0x5F7E, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$UIAccessibilityIsMonoAudioEnabled', symObjAddr: 0x1F040, symBinAddr: 0x12350, symSize: 0x0 }
|
||||
- { offset: 0x6166, size: 0x8, addend: 0x0, symName: _SetupXSLog, symObjAddr: 0x0, symBinAddr: 0x4000, symSize: 0x24 }
|
||||
- { offset: 0x617B, size: 0x8, addend: 0x0, symName: '-[CustomCMGyroData rotationRate]', symObjAddr: 0x24, symBinAddr: 0x4024, symSize: 0x44 }
|
||||
- { offset: 0x61B2, size: 0x8, addend: 0x0, symName: '-[CustomCMGyroData customRotationRate]', symObjAddr: 0x68, symBinAddr: 0x4068, symSize: 0x40 }
|
||||
- { offset: 0x61E9, size: 0x8, addend: 0x0, symName: '-[CustomCMGyroData setCustomRotationRate:]', symObjAddr: 0xA8, symBinAddr: 0x40A8, symSize: 0x40 }
|
||||
- { offset: 0x6228, size: 0x8, addend: 0x0, symName: __logosLocalCtor_e9c95796, symObjAddr: 0xE8, symBinAddr: 0x40E8, symSize: 0xD38 }
|
||||
- { offset: 0x64AB, size: 0x8, addend: 0x0, symName: '__logos_meta_method$XHooks$ATTrackingManager$trackingAuthorizationStatus', symObjAddr: 0xE20, symBinAddr: 0x4E20, symSize: 0x80 }
|
||||
- { offset: 0x6515, size: 0x8, addend: 0x0, symName: '__logos_meta_method$XHooks$ATTrackingManager$requestTrackingAuthorizationWithCompletionHandler$', symObjAddr: 0xEA0, symBinAddr: 0x4EA0, symSize: 0x150 }
|
||||
- { offset: 0x6577, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$ASIdentifierManager$advertisingIdentifier', symObjAddr: 0xFF0, symBinAddr: 0x4FF0, symSize: 0x110 }
|
||||
- { offset: 0x65BB, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$ASIdentifierManager$isAdvertisingTrackingEnabled', symObjAddr: 0x1100, symBinAddr: 0x5100, symSize: 0x70 }
|
||||
- { offset: 0x65FF, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$UIDevice$identifierForVendor', symObjAddr: 0x1170, symBinAddr: 0x5170, symSize: 0x110 }
|
||||
- { offset: 0x6643, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$UIDevice$name', symObjAddr: 0x1280, symBinAddr: 0x5280, symSize: 0x110 }
|
||||
- { offset: 0x6687, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$UIDevice$model', symObjAddr: 0x1390, symBinAddr: 0x5390, symSize: 0x34 }
|
||||
- { offset: 0x66BD, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$UIDevice$localizedModel', symObjAddr: 0x13C4, symBinAddr: 0x53C4, symSize: 0x34 }
|
||||
- { offset: 0x66F3, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$UIDevice$systemName', symObjAddr: 0x13F8, symBinAddr: 0x53F8, symSize: 0x34 }
|
||||
- { offset: 0x6729, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$UIDevice$systemVersion', symObjAddr: 0x142C, symBinAddr: 0x542C, symSize: 0x110 }
|
||||
- { offset: 0x676D, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$UIDevice$batteryState', symObjAddr: 0x153C, symBinAddr: 0x553C, symSize: 0x9C }
|
||||
- { offset: 0x67B1, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$UIDevice$batteryLevel', symObjAddr: 0x15D8, symBinAddr: 0x55D8, symSize: 0xA0 }
|
||||
- { offset: 0x67F5, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$UIDevice$orientation', symObjAddr: 0x1678, symBinAddr: 0x5678, symSize: 0x18 }
|
||||
- { offset: 0x682B, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$NSProcessInfo$systemUptime', symObjAddr: 0x1690, symBinAddr: 0x5690, symSize: 0xA4 }
|
||||
- { offset: 0x687D, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$NSProcessInfo$physicalMemory', symObjAddr: 0x1734, symBinAddr: 0x5734, symSize: 0xA0 }
|
||||
- { offset: 0x68C1, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$NSProcessInfo$processorCount', symObjAddr: 0x17D4, symBinAddr: 0x57D4, symSize: 0xA0 }
|
||||
- { offset: 0x6905, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$NSProcessInfo$operatingSystemVersion', symObjAddr: 0x1874, symBinAddr: 0x5874, symSize: 0x468 }
|
||||
- { offset: 0x6987, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$UIWindow$safeAreaInsets', symObjAddr: 0x1CDC, symBinAddr: 0x5CDC, symSize: 0x170 }
|
||||
- { offset: 0x6A04, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$UIScreen$brightness', symObjAddr: 0x1E4C, symBinAddr: 0x5E4C, symSize: 0xA0 }
|
||||
- { offset: 0x6A48, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$UIScreen$bounds', symObjAddr: 0x1EEC, symBinAddr: 0x5EEC, symSize: 0x174 }
|
||||
- { offset: 0x6AB7, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$UIScreen$scale', symObjAddr: 0x2060, symBinAddr: 0x6060, symSize: 0xA0 }
|
||||
- { offset: 0x6AFB, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$UIScreen$nativeBounds', symObjAddr: 0x2100, symBinAddr: 0x6100, symSize: 0x174 }
|
||||
- { offset: 0x6B6A, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$UIScreen$isCaptured', symObjAddr: 0x2274, symBinAddr: 0x6274, symSize: 0x1C }
|
||||
- { offset: 0x6BA0, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$UIScreen$mirroredScreen', symObjAddr: 0x2290, symBinAddr: 0x6290, symSize: 0x18 }
|
||||
- { offset: 0x6BD6, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$UIScreenMode$size', symObjAddr: 0x22A8, symBinAddr: 0x62A8, symSize: 0x154 }
|
||||
- { offset: 0x6C44, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$UIStatusBarManager$statusBarFrame', symObjAddr: 0x23FC, symBinAddr: 0x63FC, symSize: 0x190 }
|
||||
- { offset: 0x6CB3, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$AVAudioSession$outputVolume', symObjAddr: 0x258C, symBinAddr: 0x658C, symSize: 0xA0 }
|
||||
- { offset: 0x6CFB, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$NSFileManager$attributesOfFileSystemForPath$error$', symObjAddr: 0x262C, symBinAddr: 0x662C, symSize: 0x280 }
|
||||
- { offset: 0x6D9D, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$NSFileManager$fileExistsAtPath$', symObjAddr: 0x28AC, symBinAddr: 0x68AC, symSize: 0x37C }
|
||||
- { offset: 0x6E08, size: 0x8, addend: 0x0, symName: '__logos_meta_method$XHooks$NSLocale$preferredLanguages', symObjAddr: 0x2C28, symBinAddr: 0x6C28, symSize: 0x7C }
|
||||
- { offset: 0x6E41, size: 0x8, addend: 0x0, symName: '__logos_meta_method$XHooks$NSLocale$currentLocale', symObjAddr: 0x2CA4, symBinAddr: 0x6CA4, symSize: 0xD4 }
|
||||
- { offset: 0x6E89, size: 0x8, addend: 0x0, symName: '__logos_meta_method$XHooks$NSLocale$systemLocale', symObjAddr: 0x2D78, symBinAddr: 0x6D78, symSize: 0xD4 }
|
||||
- { offset: 0x6ED1, size: 0x8, addend: 0x0, symName: '__logos_meta_method$XHooks$NSTimeZone$localTimeZone', symObjAddr: 0x2E4C, symBinAddr: 0x6E4C, symSize: 0xD8 }
|
||||
- { offset: 0x6F19, size: 0x8, addend: 0x0, symName: '__logos_meta_method$XHooks$NSTimeZone$systemTimeZone', symObjAddr: 0x2F24, symBinAddr: 0x6F24, symSize: 0xD8 }
|
||||
- { offset: 0x6F61, size: 0x8, addend: 0x0, symName: '__logos_meta_method$XHooks$NSTimeZone$defaultTimeZone', symObjAddr: 0x2FFC, symBinAddr: 0x6FFC, symSize: 0xD8 }
|
||||
- { offset: 0x6FA9, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$NSMutableURLRequest$initWithURL$', symObjAddr: 0x30D4, symBinAddr: 0x70D4, symSize: 0x13C }
|
||||
- { offset: 0x7006, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$NSMutableURLRequest$setValue$forHTTPHeaderField$', symObjAddr: 0x3210, symBinAddr: 0x7210, symSize: 0x13C }
|
||||
- { offset: 0x707D, size: 0x8, addend: 0x0, symName: '__logos_meta_method$XHooks$NSURLSession$sessionWithConfiguration$', symObjAddr: 0x334C, symBinAddr: 0x734C, symSize: 0x160 }
|
||||
- { offset: 0x70D4, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$NSURLSession$dataTaskWithRequest$completionHandler$', symObjAddr: 0x34AC, symBinAddr: 0x74AC, symSize: 0x134 }
|
||||
- { offset: 0x7149, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$WKWebView$evaluateJavaScript$completionHandler$', symObjAddr: 0x35E0, symBinAddr: 0x75E0, symSize: 0x100 }
|
||||
- { offset: 0x71AB, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$WKWebView$setCustomUserAgent$', symObjAddr: 0x36E0, symBinAddr: 0x76E0, symSize: 0xEC }
|
||||
- { offset: 0x71FE, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$WKWebView$customUserAgent', symObjAddr: 0x37CC, symBinAddr: 0x77CC, symSize: 0x110 }
|
||||
- { offset: 0x7246, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$CTTelephonyNetworkInfo$serviceCurrentRadioAccessTechnology', symObjAddr: 0x38DC, symBinAddr: 0x78DC, symSize: 0x3AC }
|
||||
- { offset: 0x72ED, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$CTTelephonyNetworkInfo$serviceSubscriberCellularProviders', symObjAddr: 0x3C88, symBinAddr: 0x7C88, symSize: 0x6C8 }
|
||||
- { offset: 0x7394, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$CMMotionManager$startGyroUpdatesToQueue$withHandler$', symObjAddr: 0x4350, symBinAddr: 0x8350, symSize: 0x150 }
|
||||
- { offset: 0x73F6, size: 0x8, addend: 0x0, symName: '__logos_function$XHooks$uname', symObjAddr: 0x44A0, symBinAddr: 0x84A0, symSize: 0xFC }
|
||||
- { offset: 0x745C, size: 0x8, addend: 0x0, symName: '__logos_function$XHooks$sysctl', symObjAddr: 0x459C, symBinAddr: 0x859C, symSize: 0x350 }
|
||||
- { offset: 0x7559, size: 0x8, addend: 0x0, symName: '__logos_function$XHooks$sysctlbyname', symObjAddr: 0x48EC, symBinAddr: 0x88EC, symSize: 0x2B4 }
|
||||
- { offset: 0x768F, size: 0x8, addend: 0x0, symName: '__logos_function$XHooks$clock_gettime', symObjAddr: 0x4BA0, symBinAddr: 0x8BA0, symSize: 0x50 }
|
||||
- { offset: 0x76D7, size: 0x8, addend: 0x0, symName: '__logos_function$XHooks$getifaddrs', symObjAddr: 0x4BF0, symBinAddr: 0x8BF0, symSize: 0x614 }
|
||||
- { offset: 0x7857, size: 0x8, addend: 0x0, symName: '__logos_function$XHooks$SCNetworkReachabilityGetFlags', symObjAddr: 0x5204, symBinAddr: 0x9204, symSize: 0x78 }
|
||||
- { offset: 0x789F, size: 0x8, addend: 0x0, symName: __logosLocalDtor_2e2d985c, symObjAddr: 0x527C, symBinAddr: 0x927C, symSize: 0x64 }
|
||||
- { offset: 0x78E3, size: 0x8, addend: 0x0, symName: '____logos_meta_method$XHooks$ATTrackingManager$requestTrackingAuthorizationWithCompletionHandler$_block_invoke', symObjAddr: 0x52E0, symBinAddr: 0x92E0, symSize: 0x50 }
|
||||
- { offset: 0x792D, size: 0x8, addend: 0x0, symName: ___copy_helper_block_e8_32b, symObjAddr: 0x5330, symBinAddr: 0x9330, symSize: 0x38 }
|
||||
- { offset: 0x7951, size: 0x8, addend: 0x0, symName: ___destroy_helper_block_e8_32s, symObjAddr: 0x5368, symBinAddr: 0x9368, symSize: 0x2C }
|
||||
- { offset: 0x796D, size: 0x8, addend: 0x0, symName: _UIEdgeInsetsMake, symObjAddr: 0x5394, symBinAddr: 0x9394, symSize: 0x4C }
|
||||
- { offset: 0x79CD, size: 0x8, addend: 0x0, symName: _CGRectMake, symObjAddr: 0x53E0, symBinAddr: 0x93E0, symSize: 0x4C }
|
||||
- { offset: 0x7A33, size: 0x8, addend: 0x0, symName: _CGSizeMake, symObjAddr: 0x542C, symBinAddr: 0x942C, symSize: 0x2C }
|
||||
- { offset: 0x7A7B, size: 0x8, addend: 0x0, symName: '____logos_method$XHooks$NSFileManager$fileExistsAtPath$_block_invoke', symObjAddr: 0x5458, symBinAddr: 0x9458, symSize: 0x9C }
|
||||
- { offset: 0x7B05, size: 0x8, addend: 0x0, symName: ___copy_helper_block_e8_32s, symObjAddr: 0x54F4, symBinAddr: 0x94F4, symSize: 0x38 }
|
||||
- { offset: 0x7B29, size: 0x8, addend: 0x0, symName: '____logos_method$XHooks$CMMotionManager$startGyroUpdatesToQueue$withHandler$_block_invoke', symObjAddr: 0x552C, symBinAddr: 0x952C, symSize: 0x10C }
|
||||
- { offset: 0x7BAF, size: 0x8, addend: 0x0, symName: _randomRadiansPerSecond, symObjAddr: 0x5638, symBinAddr: 0x9638, symSize: 0x44 }
|
||||
- { offset: 0x7BD9, size: 0x8, addend: 0x0, symName: _modifyInterfaceIP, symObjAddr: 0x567C, symBinAddr: 0x967C, symSize: 0x140 }
|
||||
- { offset: 0x7C6C, size: 0x8, addend: 0x0, symName: _createInterface, symObjAddr: 0x57BC, symBinAddr: 0x97BC, symSize: 0x3C8 }
|
||||
- { offset: 0x7D15, size: 0x8, addend: 0x0, symName: '__logos_function$XHooks$UIAccessibilityIsClosedCaptioningEnabled', symObjAddr: 0x5B84, symBinAddr: 0x9B84, symSize: 0xC }
|
||||
- { offset: 0x7D2F, size: 0x8, addend: 0x0, symName: '__logos_function$XHooks$UIAccessibilityIsMonoAudioEnabled', symObjAddr: 0x5B90, symBinAddr: 0x9B90, symSize: 0xC }
|
||||
- { offset: 0x7D49, size: 0x8, addend: 0x0, symName: ___GLOBAL_init_65535, symObjAddr: 0x5D6C, symBinAddr: 0x9B9C, symSize: 0x28 }
|
||||
- { offset: 0x7FCF, size: 0x8, addend: 0x0, symName: _XSLogSetupLogWithFilePath, symObjAddr: 0x0, symBinAddr: 0x9BC4, symSize: 0x100 }
|
||||
- { offset: 0x7FE8, size: 0x8, addend: 0x0, symName: _kLogFilePath, symObjAddr: 0xE38, symBinAddr: 0x12198, symSize: 0x0 }
|
||||
- { offset: 0x804F, size: 0x8, addend: 0x0, symName: _XSLogSetupLogWithFilePath, symObjAddr: 0x0, symBinAddr: 0x9BC4, symSize: 0x100 }
|
||||
- { offset: 0x8070, size: 0x8, addend: 0x0, symName: _XSLogSetupLogWithFilePath.onceToken, symObjAddr: 0x3DE8, symBinAddr: 0x12358, symSize: 0x0 }
|
||||
- { offset: 0x8115, size: 0x8, addend: 0x0, symName: _logFileHandle, symObjAddr: 0x3DF8, symBinAddr: 0x12368, symSize: 0x0 }
|
||||
- { offset: 0x8195, size: 0x8, addend: 0x0, symName: _logQueue, symObjAddr: 0x3DF0, symBinAddr: 0x12360, symSize: 0x0 }
|
||||
- { offset: 0x81BA, size: 0x8, addend: 0x0, symName: _kMaxFileSize, symObjAddr: 0xE40, symBinAddr: 0x121A0, symSize: 0x0 }
|
||||
- { offset: 0x81CF, size: 0x8, addend: 0x0, symName: _logCount, symObjAddr: 0x3E00, symBinAddr: 0x12370, symSize: 0x0 }
|
||||
- { offset: 0x82ED, size: 0x8, addend: 0x0, symName: ___XSLogSetupLogWithFilePath_block_invoke, symObjAddr: 0x100, symBinAddr: 0x9CC4, symSize: 0x84 }
|
||||
- { offset: 0x8337, size: 0x8, addend: 0x0, symName: _setupLogFileHandle, symObjAddr: 0x184, symBinAddr: 0x9D48, symSize: 0x180 }
|
||||
- { offset: 0x835B, size: 0x8, addend: 0x0, symName: _XSLogSetupLogWithFileName, symObjAddr: 0x368, symBinAddr: 0x9EC8, symSize: 0x94 }
|
||||
- { offset: 0x838D, size: 0x8, addend: 0x0, symName: _getLogFilePath, symObjAddr: 0x3FC, symBinAddr: 0x9F5C, symSize: 0xEC }
|
||||
- { offset: 0x83DF, size: 0x8, addend: 0x0, symName: _XSLogRedirectNSLog, symObjAddr: 0x4E8, symBinAddr: 0xA048, symSize: 0xC0 }
|
||||
- { offset: 0x8411, size: 0x8, addend: 0x0, symName: _XSLogMessage, symObjAddr: 0x5A8, symBinAddr: 0xA108, symSize: 0xFC }
|
||||
- { offset: 0x8452, size: 0x8, addend: 0x0, symName: ___XSLogMessage_block_invoke, symObjAddr: 0x6A4, symBinAddr: 0xA204, symSize: 0x2CC }
|
||||
- { offset: 0x84DE, size: 0x8, addend: 0x0, symName: _checkAndRollLogFile, symObjAddr: 0x970, symBinAddr: 0xA4D0, symSize: 0x298 }
|
||||
- { offset: 0x8CEF, size: 0x8, addend: 0x0, symName: '+[XHookSettingsManager sharedManager]', symObjAddr: 0x0, symBinAddr: 0xA768, symSize: 0x7C }
|
||||
- { offset: 0x8CFC, size: 0x8, addend: 0x0, symName: '+[XHookSettingsManager sharedManager]', symObjAddr: 0x0, symBinAddr: 0xA768, symSize: 0x7C }
|
||||
- { offset: 0x8D25, size: 0x8, addend: 0x0, symName: _sharedManager.manager, symObjAddr: 0x6DA8, symBinAddr: 0x12378, symSize: 0x0 }
|
||||
- { offset: 0x8D3A, size: 0x8, addend: 0x0, symName: _sharedManager.onceToken, symObjAddr: 0x6DB0, symBinAddr: 0x12380, symSize: 0x0 }
|
||||
- { offset: 0x9246, size: 0x8, addend: 0x0, symName: '___37+[XHookSettingsManager sharedManager]_block_invoke', symObjAddr: 0x7C, symBinAddr: 0xA7E4, symSize: 0x54 }
|
||||
- { offset: 0x926E, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager init]', symObjAddr: 0xD0, symBinAddr: 0xA838, symSize: 0xB0 }
|
||||
- { offset: 0x92A4, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager resetToDefaults]', symObjAddr: 0x180, symBinAddr: 0xA8E8, symSize: 0x184 }
|
||||
- { offset: 0x92D6, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager parseString:defaultValue:]', symObjAddr: 0x304, symBinAddr: 0xAA6C, symSize: 0xD8 }
|
||||
- { offset: 0x9328, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager parseInteger:defaultValue:]', symObjAddr: 0x3DC, symBinAddr: 0xAB44, symSize: 0x100 }
|
||||
- { offset: 0x937A, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager parseFloat:defaultValue:]', symObjAddr: 0x4DC, symBinAddr: 0xAC44, symSize: 0x100 }
|
||||
- { offset: 0x93CC, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager parseDouble:defaultValue:]', symObjAddr: 0x5DC, symBinAddr: 0xAD44, symSize: 0x100 }
|
||||
- { offset: 0x941E, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager parseULL:defaultValue:]', symObjAddr: 0x6DC, symBinAddr: 0xAE44, symSize: 0x100 }
|
||||
- { offset: 0x9470, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager parseUUID:]', symObjAddr: 0x7DC, symBinAddr: 0xAF44, symSize: 0xAC }
|
||||
- { offset: 0x94B4, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager parseDictionary:]', symObjAddr: 0x888, symBinAddr: 0xAFF0, symSize: 0xA4 }
|
||||
- { offset: 0x94F8, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager parseArray:]', symObjAddr: 0x92C, symBinAddr: 0xB094, symSize: 0xA4 }
|
||||
- { offset: 0x953C, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager loadSettingsFromPath:]', symObjAddr: 0x9D0, symBinAddr: 0xB138, symSize: 0x300 }
|
||||
- { offset: 0x95DD, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager parseSettings:]', symObjAddr: 0xCD0, symBinAddr: 0xB438, symSize: 0xAB4 }
|
||||
- { offset: 0x962B, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager cleanup]', symObjAddr: 0x1784, symBinAddr: 0xBEEC, symSize: 0x2C }
|
||||
- { offset: 0x965D, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager shouldHookApp:]', symObjAddr: 0x17B0, symBinAddr: 0xBF18, symSize: 0xA8 }
|
||||
- { offset: 0x96A1, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager isLoaded]', symObjAddr: 0x1858, symBinAddr: 0xBFC0, symSize: 0x20 }
|
||||
- { offset: 0x96D7, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager idfa]', symObjAddr: 0x1878, symBinAddr: 0xBFE0, symSize: 0x1C }
|
||||
- { offset: 0x970D, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager idfv]', symObjAddr: 0x1894, symBinAddr: 0xBFFC, symSize: 0x1C }
|
||||
- { offset: 0x9743, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager deviceName]', symObjAddr: 0x18B0, symBinAddr: 0xC018, symSize: 0x1C }
|
||||
- { offset: 0x9779, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager osVersion]', symObjAddr: 0x18CC, symBinAddr: 0xC034, symSize: 0x1C }
|
||||
- { offset: 0x97AF, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager productStr]', symObjAddr: 0x18E8, symBinAddr: 0xC050, symSize: 0x1C }
|
||||
- { offset: 0x97E5, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager hwModel]', symObjAddr: 0x1904, symBinAddr: 0xC06C, symSize: 0x1C }
|
||||
- { offset: 0x981B, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager trackingStatus]', symObjAddr: 0x1920, symBinAddr: 0xC088, symSize: 0x1C }
|
||||
- { offset: 0x9851, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager physicalMemory]', symObjAddr: 0x193C, symBinAddr: 0xC0A4, symSize: 0x1C }
|
||||
- { offset: 0x9887, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager cpuCore]', symObjAddr: 0x1958, symBinAddr: 0xC0C0, symSize: 0x1C }
|
||||
- { offset: 0x98BD, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager systemUptimeOffset]', symObjAddr: 0x1974, symBinAddr: 0xC0DC, symSize: 0x1C }
|
||||
- { offset: 0x98F3, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager kernBootTimeOffset]', symObjAddr: 0x1990, symBinAddr: 0xC0F8, symSize: 0x1C }
|
||||
- { offset: 0x9929, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager batteryState]', symObjAddr: 0x19AC, symBinAddr: 0xC114, symSize: 0x1C }
|
||||
- { offset: 0x995F, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager batteryLevel]', symObjAddr: 0x19C8, symBinAddr: 0xC130, symSize: 0x1C }
|
||||
- { offset: 0x9995, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager screenBrightness]', symObjAddr: 0x19E4, symBinAddr: 0xC14C, symSize: 0x1C }
|
||||
- { offset: 0x99CB, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager screenScale]', symObjAddr: 0x1A00, symBinAddr: 0xC168, symSize: 0x1C }
|
||||
- { offset: 0x9A01, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager screenBounds]', symObjAddr: 0x1A1C, symBinAddr: 0xC184, symSize: 0x1C }
|
||||
- { offset: 0x9A37, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager safeAreaInsets]', symObjAddr: 0x1A38, symBinAddr: 0xC1A0, symSize: 0x1C }
|
||||
- { offset: 0x9A6D, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager diskSize]', symObjAddr: 0x1A54, symBinAddr: 0xC1BC, symSize: 0x1C }
|
||||
- { 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 }
|
||||
- { offset: 0x7D, size: 0x8, addend: 0x0, symName: _settings, symBinAddr: 0x11DF8, symSize: 0x0 }
|
||||
- { offset: 0xF0, size: 0x8, addend: 0x0, symName: '__logos_meta_orig$ohno$ATTrackingManager$trackingAuthorizationStatus', symObjAddr: 0x26D20, symBinAddr: 0x11C50, symSize: 0x0 }
|
||||
- { offset: 0x163, size: 0x8, addend: 0x0, symName: '__logos_meta_orig$ohno$ATTrackingManager$requestTrackingAuthorizationWithCompletionHandler$', symObjAddr: 0x26D28, symBinAddr: 0x11C58, symSize: 0x0 }
|
||||
- { offset: 0x1FD, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$ASIdentifierManager$advertisingIdentifier', symObjAddr: 0x26D30, symBinAddr: 0x11C60, symSize: 0x0 }
|
||||
- { offset: 0x27B, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$ASIdentifierManager$isAdvertisingTrackingEnabled', symObjAddr: 0x26D38, symBinAddr: 0x11C68, symSize: 0x0 }
|
||||
- { offset: 0x2B7, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$UIDevice$identifierForVendor', symObjAddr: 0x26D40, symBinAddr: 0x11C70, symSize: 0x0 }
|
||||
- { offset: 0x492, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$UIDevice$name', symObjAddr: 0x26D48, symBinAddr: 0x11C78, symSize: 0x0 }
|
||||
- { offset: 0x4BC, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$UIDevice$model', symObjAddr: 0x26D50, symBinAddr: 0x11C80, symSize: 0x0 }
|
||||
- { offset: 0x4D1, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$UIDevice$localizedModel', symObjAddr: 0x26D58, symBinAddr: 0x11C88, symSize: 0x0 }
|
||||
- { offset: 0x4E6, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$UIDevice$systemName', symObjAddr: 0x26D60, symBinAddr: 0x11C90, symSize: 0x0 }
|
||||
- { offset: 0x4FB, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$UIDevice$systemVersion', symObjAddr: 0x26D68, symBinAddr: 0x11C98, symSize: 0x0 }
|
||||
- { offset: 0x510, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$UIDevice$batteryState', symObjAddr: 0x26D70, symBinAddr: 0x11CA0, symSize: 0x0 }
|
||||
- { offset: 0x53A, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$UIDevice$batteryLevel', symObjAddr: 0x26D78, symBinAddr: 0x11CA8, symSize: 0x0 }
|
||||
- { offset: 0x564, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$UIDevice$orientation', symObjAddr: 0x26D80, symBinAddr: 0x11CB0, symSize: 0x0 }
|
||||
- { offset: 0x58E, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$NSProcessInfo$systemUptime', symObjAddr: 0x26D88, symBinAddr: 0x11CB8, symSize: 0x0 }
|
||||
- { offset: 0x738, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$NSProcessInfo$physicalMemory', symObjAddr: 0x26D90, symBinAddr: 0x11CC0, symSize: 0x0 }
|
||||
- { offset: 0x762, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$NSProcessInfo$processorCount', symObjAddr: 0x26D98, symBinAddr: 0x11CC8, symSize: 0x0 }
|
||||
- { offset: 0x78C, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$NSProcessInfo$operatingSystemVersion', symObjAddr: 0x26DA0, symBinAddr: 0x11CD0, symSize: 0x0 }
|
||||
- { offset: 0x7B6, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$UIWindow$safeAreaInsets', symObjAddr: 0x26DA8, symBinAddr: 0x11CD8, symSize: 0x0 }
|
||||
- { offset: 0x24E4, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$UIScreen$brightness', symObjAddr: 0x26DB0, symBinAddr: 0x11CE0, symSize: 0x0 }
|
||||
- { offset: 0x2513, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$UIScreen$bounds', symObjAddr: 0x26DB8, symBinAddr: 0x11CE8, symSize: 0x0 }
|
||||
- { offset: 0x253D, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$UIScreen$scale', symObjAddr: 0x26DC0, symBinAddr: 0x11CF0, symSize: 0x0 }
|
||||
- { offset: 0x2552, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$UIScreen$nativeBounds', symObjAddr: 0x26DC8, symBinAddr: 0x11CF8, symSize: 0x0 }
|
||||
- { offset: 0x2567, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$UIScreen$isCaptured', symObjAddr: 0x26DD0, symBinAddr: 0x11D00, symSize: 0x0 }
|
||||
- { offset: 0x2591, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$UIScreen$mirroredScreen', symObjAddr: 0x26DD8, symBinAddr: 0x11D08, symSize: 0x0 }
|
||||
- { offset: 0x25BB, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$AVAudioSession$outputVolume', symObjAddr: 0x26DE0, symBinAddr: 0x11D10, symSize: 0x0 }
|
||||
- { offset: 0x25F5, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$UIScreenMode$size', symObjAddr: 0x26DE8, symBinAddr: 0x11D18, symSize: 0x0 }
|
||||
- { offset: 0x2624, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$NSFileManager$attributesOfFileSystemForPath$error$', symObjAddr: 0x26DF0, symBinAddr: 0x11D20, symSize: 0x0 }
|
||||
- { offset: 0x274E, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$NSFileManager$fileExistsAtPath$', symObjAddr: 0x26DF8, symBinAddr: 0x11D28, symSize: 0x0 }
|
||||
- { offset: 0x277D, size: 0x8, addend: 0x0, symName: '__logos_meta_orig$ohno$NSLocale$preferredLanguages', symObjAddr: 0x26E00, symBinAddr: 0x11D30, symSize: 0x0 }
|
||||
- { offset: 0x27A7, size: 0x8, addend: 0x0, symName: '__logos_meta_orig$ohno$NSLocale$currentLocale', symObjAddr: 0x26E08, symBinAddr: 0x11D38, symSize: 0x0 }
|
||||
- { offset: 0x27E6, size: 0x8, addend: 0x0, symName: '__logos_meta_orig$ohno$NSLocale$systemLocale', symObjAddr: 0x26E10, symBinAddr: 0x11D40, symSize: 0x0 }
|
||||
- { offset: 0x27FB, size: 0x8, addend: 0x0, symName: '__logos_meta_orig$ohno$NSTimeZone$localTimeZone', symObjAddr: 0x26E18, symBinAddr: 0x11D48, symSize: 0x0 }
|
||||
- { offset: 0x2854, size: 0x8, addend: 0x0, symName: '__logos_meta_orig$ohno$NSTimeZone$systemTimeZone', symObjAddr: 0x26E20, symBinAddr: 0x11D50, symSize: 0x0 }
|
||||
- { offset: 0x2869, size: 0x8, addend: 0x0, symName: '__logos_meta_orig$ohno$NSTimeZone$defaultTimeZone', symObjAddr: 0x26E28, symBinAddr: 0x11D58, symSize: 0x0 }
|
||||
- { offset: 0x287E, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$UIStatusBarManager$statusBarFrame', symObjAddr: 0x26E30, symBinAddr: 0x11D60, symSize: 0x0 }
|
||||
- { offset: 0x28EA, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$NSMutableURLRequest$initWithURL$', symObjAddr: 0x26E38, symBinAddr: 0x11D68, symSize: 0x0 }
|
||||
- { offset: 0x2B87, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$NSMutableURLRequest$setValue$forHTTPHeaderField$', symObjAddr: 0x26E40, symBinAddr: 0x11D70, symSize: 0x0 }
|
||||
- { offset: 0x2BBC, size: 0x8, addend: 0x0, symName: '__logos_meta_orig$ohno$NSURLSession$sessionWithConfiguration$', symObjAddr: 0x26E48, symBinAddr: 0x11D78, symSize: 0x0 }
|
||||
- { offset: 0x32F0, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$NSURLSession$dataTaskWithRequest$completionHandler$', symObjAddr: 0x26E50, symBinAddr: 0x11D80, symSize: 0x0 }
|
||||
- { offset: 0x3542, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$WKWebView$evaluateJavaScript$completionHandler$', symObjAddr: 0x26E58, symBinAddr: 0x11D88, symSize: 0x0 }
|
||||
- { offset: 0x51A6, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$WKWebView$setCustomUserAgent$', symObjAddr: 0x26E60, symBinAddr: 0x11D90, symSize: 0x0 }
|
||||
- { offset: 0x51D1, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$WKWebView$customUserAgent', symObjAddr: 0x26E68, symBinAddr: 0x11D98, symSize: 0x0 }
|
||||
- { offset: 0x51FB, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$CTTelephonyNetworkInfo$serviceCurrentRadioAccessTechnology', symObjAddr: 0x26E70, symBinAddr: 0x11DA0, symSize: 0x0 }
|
||||
- { offset: 0x53AB, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$CTTelephonyNetworkInfo$serviceSubscriberCellularProviders', symObjAddr: 0x26E78, symBinAddr: 0x11DA8, symSize: 0x0 }
|
||||
- { offset: 0x53C0, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$CMMotionManager$startGyroUpdatesToQueue$withHandler$', symObjAddr: 0x26E80, symBinAddr: 0x11DB0, symSize: 0x0 }
|
||||
- { offset: 0x590C, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$uname', symObjAddr: 0x26E88, symBinAddr: 0x11DB8, symSize: 0x0 }
|
||||
- { offset: 0x598E, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$sysctl', symObjAddr: 0x26E90, symBinAddr: 0x11DC0, symSize: 0x0 }
|
||||
- { offset: 0x59E7, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$sysctlbyname', symObjAddr: 0x26E98, symBinAddr: 0x11DC8, symSize: 0x0 }
|
||||
- { offset: 0x5A21, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$clock_gettime', symObjAddr: 0x26EA0, symBinAddr: 0x11DD0, symSize: 0x0 }
|
||||
- { offset: 0x5AC1, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$getifaddrs', symObjAddr: 0x26EA8, symBinAddr: 0x11DD8, symSize: 0x0 }
|
||||
- { offset: 0x5B9F, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$SCNetworkReachabilityGetFlags', symObjAddr: 0x26EB0, symBinAddr: 0x11DE0, symSize: 0x0 }
|
||||
- { offset: 0x5C50, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$UIAccessibilityIsClosedCaptioningEnabled', symObjAddr: 0x26EB8, symBinAddr: 0x11DE8, symSize: 0x0 }
|
||||
- { offset: 0x5C72, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$UIAccessibilityIsMonoAudioEnabled', symObjAddr: 0x26EC0, symBinAddr: 0x11DF0, symSize: 0x0 }
|
||||
- { offset: 0x5E40, size: 0x8, addend: 0x0, symName: _str2uuid, symObjAddr: 0x0, symBinAddr: 0x4000, symSize: 0x64 }
|
||||
- { offset: 0x5E68, size: 0x8, addend: 0x0, symName: _str2int, symObjAddr: 0x64, symBinAddr: 0x4064, symSize: 0x58 }
|
||||
- { offset: 0x5E90, size: 0x8, addend: 0x0, symName: _str2float, symObjAddr: 0xBC, symBinAddr: 0x40BC, symSize: 0x54 }
|
||||
- { offset: 0x5EB8, size: 0x8, addend: 0x0, symName: _str2double, symObjAddr: 0x110, symBinAddr: 0x4110, symSize: 0x54 }
|
||||
- { offset: 0x5EE0, size: 0x8, addend: 0x0, symName: _str2ull, symObjAddr: 0x164, symBinAddr: 0x4164, symSize: 0x58 }
|
||||
- { offset: 0x5F08, size: 0x8, addend: 0x0, symName: _tryGetVal, symObjAddr: 0x1BC, symBinAddr: 0x41BC, symSize: 0x190 }
|
||||
- { offset: 0x5F62, size: 0x8, addend: 0x0, symName: _str2chars, symObjAddr: 0x34C, symBinAddr: 0x434C, symSize: 0x6C }
|
||||
- { offset: 0x5F98, size: 0x8, addend: 0x0, symName: '-[CustomCMGyroData rotationRate]', symObjAddr: 0x3B8, symBinAddr: 0x43B8, symSize: 0x44 }
|
||||
- { offset: 0x5FCF, size: 0x8, addend: 0x0, symName: '-[CustomCMGyroData customRotationRate]', symObjAddr: 0x3FC, symBinAddr: 0x43FC, symSize: 0x40 }
|
||||
- { offset: 0x6006, size: 0x8, addend: 0x0, symName: '-[CustomCMGyroData setCustomRotationRate:]', symObjAddr: 0x43C, symBinAddr: 0x443C, symSize: 0x40 }
|
||||
- { offset: 0x6045, size: 0x8, addend: 0x0, symName: __logosLocalCtor_e2ef2056, symObjAddr: 0x47C, symBinAddr: 0x447C, symSize: 0xD0C }
|
||||
- { offset: 0x62E8, size: 0x8, addend: 0x0, symName: '__logos_meta_method$ohno$ATTrackingManager$trackingAuthorizationStatus', symObjAddr: 0x1188, symBinAddr: 0x5188, symSize: 0x130 }
|
||||
- { offset: 0x6349, size: 0x8, addend: 0x0, symName: '__logos_meta_method$ohno$ATTrackingManager$requestTrackingAuthorizationWithCompletionHandler$', symObjAddr: 0x12B8, symBinAddr: 0x52B8, symSize: 0x1BC }
|
||||
- { offset: 0x63B0, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$ASIdentifierManager$advertisingIdentifier', symObjAddr: 0x1474, symBinAddr: 0x5474, symSize: 0x158 }
|
||||
- { offset: 0x63F9, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$ASIdentifierManager$isAdvertisingTrackingEnabled', symObjAddr: 0x15CC, symBinAddr: 0x55CC, symSize: 0xF4 }
|
||||
- { offset: 0x6442, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$UIDevice$identifierForVendor', symObjAddr: 0x16C0, symBinAddr: 0x56C0, symSize: 0x158 }
|
||||
- { offset: 0x648B, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$UIDevice$name', symObjAddr: 0x1818, symBinAddr: 0x5818, symSize: 0x158 }
|
||||
- { offset: 0x64D4, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$UIDevice$model', symObjAddr: 0x1970, symBinAddr: 0x5970, symSize: 0x34 }
|
||||
- { offset: 0x650A, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$UIDevice$localizedModel', symObjAddr: 0x19A4, symBinAddr: 0x59A4, symSize: 0x34 }
|
||||
- { offset: 0x6540, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$UIDevice$systemName', symObjAddr: 0x19D8, symBinAddr: 0x59D8, symSize: 0x34 }
|
||||
- { offset: 0x6576, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$UIDevice$systemVersion', symObjAddr: 0x1A0C, symBinAddr: 0x5A0C, symSize: 0x158 }
|
||||
- { offset: 0x65BF, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$UIDevice$batteryState', symObjAddr: 0x1B64, symBinAddr: 0x5B64, symSize: 0xF0 }
|
||||
- { offset: 0x6608, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$UIDevice$batteryLevel', symObjAddr: 0x1C54, symBinAddr: 0x5C54, symSize: 0xF0 }
|
||||
- { offset: 0x6651, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$UIDevice$orientation', symObjAddr: 0x1D44, symBinAddr: 0x5D44, symSize: 0x18 }
|
||||
- { offset: 0x6687, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$NSProcessInfo$systemUptime', symObjAddr: 0x1D5C, symBinAddr: 0x5D5C, symSize: 0xF0 }
|
||||
- { offset: 0x66D0, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$NSProcessInfo$physicalMemory', symObjAddr: 0x1E4C, symBinAddr: 0x5E4C, symSize: 0x110 }
|
||||
- { offset: 0x6719, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$NSProcessInfo$processorCount', symObjAddr: 0x1F5C, symBinAddr: 0x5F5C, symSize: 0xF0 }
|
||||
- { offset: 0x6766, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$NSProcessInfo$operatingSystemVersion', symObjAddr: 0x204C, symBinAddr: 0x604C, symSize: 0x614 }
|
||||
- { offset: 0x67F4, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$UIWindow$safeAreaInsets', symObjAddr: 0x2660, symBinAddr: 0x6660, symSize: 0x214 }
|
||||
- { offset: 0x6842, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$UIScreen$brightness', symObjAddr: 0x2874, symBinAddr: 0x6874, symSize: 0xF0 }
|
||||
- { offset: 0x688F, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$UIScreen$bounds', symObjAddr: 0x2964, symBinAddr: 0x6964, symSize: 0x12C }
|
||||
- { offset: 0x68DD, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$UIScreen$scale', symObjAddr: 0x2A90, symBinAddr: 0x6A90, symSize: 0xF0 }
|
||||
- { offset: 0x692A, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$UIScreen$nativeBounds', symObjAddr: 0x2B80, symBinAddr: 0x6B80, symSize: 0x12C }
|
||||
- { offset: 0x6978, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$UIScreen$isCaptured', symObjAddr: 0x2CAC, symBinAddr: 0x6CAC, symSize: 0x1C }
|
||||
- { offset: 0x69B1, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$UIScreen$mirroredScreen', symObjAddr: 0x2CC8, symBinAddr: 0x6CC8, symSize: 0x18 }
|
||||
- { offset: 0x69EA, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$AVAudioSession$outputVolume', symObjAddr: 0x2CE0, symBinAddr: 0x6CE0, symSize: 0xF0 }
|
||||
- { offset: 0x6A37, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$UIScreenMode$size', symObjAddr: 0x2DD0, symBinAddr: 0x6DD0, symSize: 0x104 }
|
||||
- { offset: 0x6A85, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$NSFileManager$attributesOfFileSystemForPath$error$', symObjAddr: 0x2ED4, symBinAddr: 0x6ED4, symSize: 0x248 }
|
||||
- { offset: 0x6B09, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$NSFileManager$fileExistsAtPath$', symObjAddr: 0x311C, symBinAddr: 0x711C, symSize: 0x3A0 }
|
||||
- { offset: 0x6B74, size: 0x8, addend: 0x0, symName: '__logos_meta_method$ohno$NSLocale$preferredLanguages', symObjAddr: 0x34BC, symBinAddr: 0x74BC, symSize: 0x88 }
|
||||
- { offset: 0x6BAD, size: 0x8, addend: 0x0, symName: '__logos_meta_method$ohno$NSLocale$currentLocale', symObjAddr: 0x3544, symBinAddr: 0x7544, symSize: 0x138 }
|
||||
- { offset: 0x6BFA, size: 0x8, addend: 0x0, symName: '__logos_meta_method$ohno$NSLocale$systemLocale', symObjAddr: 0x367C, symBinAddr: 0x767C, symSize: 0x138 }
|
||||
- { offset: 0x6C47, size: 0x8, addend: 0x0, symName: '__logos_meta_method$ohno$NSTimeZone$localTimeZone', symObjAddr: 0x37B4, symBinAddr: 0x77B4, symSize: 0x138 }
|
||||
- { offset: 0x6C94, size: 0x8, addend: 0x0, symName: '__logos_meta_method$ohno$NSTimeZone$systemTimeZone', symObjAddr: 0x38EC, symBinAddr: 0x78EC, symSize: 0x138 }
|
||||
- { offset: 0x6CE1, size: 0x8, addend: 0x0, symName: '__logos_meta_method$ohno$NSTimeZone$defaultTimeZone', symObjAddr: 0x3A24, symBinAddr: 0x7A24, symSize: 0x138 }
|
||||
- { offset: 0x6D2E, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$UIStatusBarManager$statusBarFrame', symObjAddr: 0x3B5C, symBinAddr: 0x7B5C, symSize: 0x12C }
|
||||
- { offset: 0x6D7C, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$NSMutableURLRequest$initWithURL$', symObjAddr: 0x3C88, symBinAddr: 0x7C88, symSize: 0x134 }
|
||||
- { offset: 0x6DC4, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$NSMutableURLRequest$setValue$forHTTPHeaderField$', symObjAddr: 0x3DBC, symBinAddr: 0x7DBC, symSize: 0x18C }
|
||||
- { offset: 0x6E2C, size: 0x8, addend: 0x0, symName: '__logos_meta_method$ohno$NSURLSession$sessionWithConfiguration$', symObjAddr: 0x3F48, symBinAddr: 0x7F48, symSize: 0xF4 }
|
||||
- { offset: 0x6E74, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$NSURLSession$dataTaskWithRequest$completionHandler$', symObjAddr: 0x403C, symBinAddr: 0x803C, symSize: 0x134 }
|
||||
- { offset: 0x6EDA, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$WKWebView$evaluateJavaScript$completionHandler$', symObjAddr: 0x4170, symBinAddr: 0x8170, symSize: 0x1F0 }
|
||||
- { offset: 0x6F42, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$WKWebView$setCustomUserAgent$', symObjAddr: 0x4360, symBinAddr: 0x8360, symSize: 0x140 }
|
||||
- { offset: 0x6F9B, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$WKWebView$customUserAgent', symObjAddr: 0x44A0, symBinAddr: 0x84A0, symSize: 0x12C }
|
||||
- { offset: 0x6FE8, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$CTTelephonyNetworkInfo$serviceCurrentRadioAccessTechnology', symObjAddr: 0x45CC, symBinAddr: 0x85CC, symSize: 0x170 }
|
||||
- { offset: 0x703F, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$CTTelephonyNetworkInfo$serviceSubscriberCellularProviders', symObjAddr: 0x473C, symBinAddr: 0x873C, symSize: 0x170 }
|
||||
- { offset: 0x7096, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$CMMotionManager$startGyroUpdatesToQueue$withHandler$', symObjAddr: 0x48AC, symBinAddr: 0x88AC, symSize: 0x150 }
|
||||
- { offset: 0x70F8, size: 0x8, addend: 0x0, symName: '__logos_function$ohno$uname', symObjAddr: 0x49FC, symBinAddr: 0x89FC, symSize: 0x88 }
|
||||
- { offset: 0x7131, size: 0x8, addend: 0x0, symName: '__logos_function$ohno$sysctl', symObjAddr: 0x4A84, symBinAddr: 0x8A84, symSize: 0x410 }
|
||||
- { offset: 0x721E, size: 0x8, addend: 0x0, symName: '__logos_function$ohno$sysctlbyname', symObjAddr: 0x4E94, symBinAddr: 0x8E94, symSize: 0x428 }
|
||||
- { offset: 0x731C, size: 0x8, addend: 0x0, symName: '__logos_function$ohno$clock_gettime', symObjAddr: 0x52BC, symBinAddr: 0x92BC, symSize: 0x5C }
|
||||
- { offset: 0x7364, size: 0x8, addend: 0x0, symName: '__logos_function$ohno$getifaddrs', symObjAddr: 0x5318, symBinAddr: 0x9318, symSize: 0x698 }
|
||||
- { offset: 0x74EA, size: 0x8, addend: 0x0, symName: '__logos_function$ohno$SCNetworkReachabilityGetFlags', symObjAddr: 0x59B0, symBinAddr: 0x99B0, symSize: 0x84 }
|
||||
- { offset: 0x7532, size: 0x8, addend: 0x0, symName: __logosLocalDtor_9db639d6, symObjAddr: 0x5A34, symBinAddr: 0x9A34, symSize: 0x28 }
|
||||
- { offset: 0x7576, size: 0x8, addend: 0x0, symName: '____logos_meta_method$ohno$ATTrackingManager$trackingAuthorizationStatus_block_invoke', symObjAddr: 0x5A5C, symBinAddr: 0x9A5C, symSize: 0x80 }
|
||||
- { offset: 0x75C3, size: 0x8, addend: 0x0, symName: ___copy_helper_block_e8_32r, symObjAddr: 0x5ADC, symBinAddr: 0x9ADC, symSize: 0x38 }
|
||||
- { offset: 0x75E7, size: 0x8, addend: 0x0, symName: ___destroy_helper_block_e8_32r, symObjAddr: 0x5B14, symBinAddr: 0x9B14, symSize: 0x2C }
|
||||
- { offset: 0x7603, size: 0x8, addend: 0x0, symName: '____logos_meta_method$ohno$ATTrackingManager$requestTrackingAuthorizationWithCompletionHandler$_block_invoke', symObjAddr: 0x5B40, symBinAddr: 0x9B40, symSize: 0x80 }
|
||||
- { offset: 0x7650, size: 0x8, addend: 0x0, symName: '____logos_meta_method$ohno$ATTrackingManager$requestTrackingAuthorizationWithCompletionHandler$_block_invoke_2', symObjAddr: 0x5BC0, symBinAddr: 0x9BC0, symSize: 0x58 }
|
||||
- { offset: 0x76A0, size: 0x8, addend: 0x0, symName: ___copy_helper_block_e8_32b40r, symObjAddr: 0x5C18, symBinAddr: 0x9C18, symSize: 0x58 }
|
||||
- { offset: 0x76C4, size: 0x8, addend: 0x0, symName: ___destroy_helper_block_e8_32s40r, symObjAddr: 0x5C70, symBinAddr: 0x9C70, symSize: 0x40 }
|
||||
- { offset: 0x76E0, size: 0x8, addend: 0x0, symName: ___Block_byref_object_copy_, symObjAddr: 0x5CB0, symBinAddr: 0x9CB0, symSize: 0x54 }
|
||||
- { offset: 0x7704, size: 0x8, addend: 0x0, symName: ___Block_byref_object_dispose_, symObjAddr: 0x5D04, symBinAddr: 0x9D04, symSize: 0x2C }
|
||||
- { offset: 0x7720, size: 0x8, addend: 0x0, symName: '____logos_method$ohno$ASIdentifierManager$advertisingIdentifier_block_invoke', symObjAddr: 0x5D30, symBinAddr: 0x9D30, symSize: 0x80 }
|
||||
- { offset: 0x776D, size: 0x8, addend: 0x0, symName: '____logos_method$ohno$ASIdentifierManager$isAdvertisingTrackingEnabled_block_invoke', symObjAddr: 0x5DB0, symBinAddr: 0x9DB0, symSize: 0x9C }
|
||||
- { offset: 0x77D6, size: 0x8, addend: 0x0, symName: '____logos_method$ohno$UIDevice$identifierForVendor_block_invoke', symObjAddr: 0x5E4C, symBinAddr: 0x9E4C, symSize: 0x80 }
|
||||
- { offset: 0x7823, size: 0x8, addend: 0x0, symName: '____logos_method$ohno$UIDevice$name_block_invoke', symObjAddr: 0x5ECC, symBinAddr: 0x9ECC, symSize: 0x64 }
|
||||
- { offset: 0x7870, size: 0x8, addend: 0x0, symName: '____logos_method$ohno$UIDevice$systemVersion_block_invoke', symObjAddr: 0x5F30, symBinAddr: 0x9F30, symSize: 0x64 }
|
||||
- { offset: 0x78BD, size: 0x8, addend: 0x0, symName: '____logos_method$ohno$UIDevice$batteryState_block_invoke', symObjAddr: 0x5F94, symBinAddr: 0x9F94, symSize: 0x70 }
|
||||
- { offset: 0x7926, size: 0x8, addend: 0x0, symName: '____logos_method$ohno$UIDevice$batteryLevel_block_invoke', symObjAddr: 0x6004, symBinAddr: 0xA004, symSize: 0x64 }
|
||||
- { offset: 0x7973, size: 0x8, addend: 0x0, symName: '____logos_method$ohno$NSProcessInfo$systemUptime_block_invoke', symObjAddr: 0x6068, symBinAddr: 0xA068, symSize: 0x88 }
|
||||
- { offset: 0x79DC, size: 0x8, addend: 0x0, symName: '____logos_method$ohno$NSProcessInfo$physicalMemory_block_invoke', symObjAddr: 0x60F0, symBinAddr: 0xA0F0, symSize: 0x74 }
|
||||
- { offset: 0x7A45, size: 0x8, addend: 0x0, symName: '____logos_method$ohno$NSProcessInfo$processorCount_block_invoke', symObjAddr: 0x6164, symBinAddr: 0xA164, symSize: 0x74 }
|
||||
- { offset: 0x7AB3, size: 0x8, addend: 0x0, symName: '____logos_method$ohno$NSProcessInfo$operatingSystemVersion_block_invoke', symObjAddr: 0x61D8, symBinAddr: 0xA1D8, symSize: 0x64 }
|
||||
- { offset: 0x7B04, size: 0x8, addend: 0x0, symName: '____logos_method$ohno$UIWindow$safeAreaInsets_block_invoke', symObjAddr: 0x623C, symBinAddr: 0xA23C, symSize: 0x160 }
|
||||
- { offset: 0x7B81, size: 0x8, addend: 0x0, symName: _UIEdgeInsetsMake, symObjAddr: 0x639C, symBinAddr: 0xA39C, symSize: 0x4C }
|
||||
- { offset: 0x7BE1, size: 0x8, addend: 0x0, symName: '____logos_method$ohno$UIScreen$brightness_block_invoke', symObjAddr: 0x63E8, symBinAddr: 0xA3E8, symSize: 0x78 }
|
||||
- { offset: 0x7C4F, size: 0x8, addend: 0x0, symName: '____logos_method$ohno$UIScreen$bounds_block_invoke', symObjAddr: 0x6460, symBinAddr: 0xA460, symSize: 0x12C }
|
||||
- { offset: 0x7CEB, size: 0x8, addend: 0x0, symName: '____logos_method$ohno$UIScreen$scale_block_invoke', symObjAddr: 0x658C, symBinAddr: 0xA58C, symSize: 0x78 }
|
||||
- { offset: 0x7D59, size: 0x8, addend: 0x0, symName: '____logos_method$ohno$UIScreen$nativeBounds_block_invoke', symObjAddr: 0x6604, symBinAddr: 0xA604, symSize: 0x12C }
|
||||
- { offset: 0x7DF5, size: 0x8, addend: 0x0, symName: '____logos_method$ohno$AVAudioSession$outputVolume_block_invoke', symObjAddr: 0x6730, symBinAddr: 0xA730, symSize: 0x78 }
|
||||
- { offset: 0x7E63, size: 0x8, addend: 0x0, symName: '____logos_method$ohno$UIScreenMode$size_block_invoke', symObjAddr: 0x67A8, symBinAddr: 0xA7A8, symSize: 0x118 }
|
||||
- { offset: 0x7EFE, size: 0x8, addend: 0x0, symName: '____logos_method$ohno$NSFileManager$attributesOfFileSystemForPath$error$_block_invoke', symObjAddr: 0x68C0, symBinAddr: 0xA8C0, symSize: 0xB0 }
|
||||
- { offset: 0x7F66, size: 0x8, addend: 0x0, symName: ___copy_helper_block_e8_32s, symObjAddr: 0x6970, symBinAddr: 0xA970, symSize: 0x38 }
|
||||
- { offset: 0x7F8A, size: 0x8, addend: 0x0, symName: ___destroy_helper_block_e8_32s, symObjAddr: 0x69A8, symBinAddr: 0xA9A8, symSize: 0x2C }
|
||||
- { offset: 0x7FA6, size: 0x8, addend: 0x0, symName: '____logos_method$ohno$NSFileManager$attributesOfFileSystemForPath$error$_block_invoke.252', symObjAddr: 0x69D4, symBinAddr: 0xA9D4, symSize: 0xB0 }
|
||||
- { offset: 0x800E, size: 0x8, addend: 0x0, symName: '____logos_method$ohno$NSFileManager$fileExistsAtPath$_block_invoke', symObjAddr: 0x6A84, symBinAddr: 0xAA84, symSize: 0x9C }
|
||||
- { offset: 0x8098, size: 0x8, addend: 0x0, symName: '____logos_meta_method$ohno$NSLocale$currentLocale_block_invoke', symObjAddr: 0x6B20, symBinAddr: 0xAB20, symSize: 0xB0 }
|
||||
- { offset: 0x8106, size: 0x8, addend: 0x0, symName: '____logos_meta_method$ohno$NSLocale$systemLocale_block_invoke', symObjAddr: 0x6BD0, symBinAddr: 0xABD0, symSize: 0xB0 }
|
||||
- { offset: 0x8174, size: 0x8, addend: 0x0, symName: '____logos_meta_method$ohno$NSTimeZone$localTimeZone_block_invoke', symObjAddr: 0x6C80, symBinAddr: 0xAC80, symSize: 0xB4 }
|
||||
- { offset: 0x81E2, size: 0x8, addend: 0x0, symName: '____logos_meta_method$ohno$NSTimeZone$systemTimeZone_block_invoke', symObjAddr: 0x6D34, symBinAddr: 0xAD34, symSize: 0xB4 }
|
||||
- { offset: 0x8250, size: 0x8, addend: 0x0, symName: '____logos_meta_method$ohno$NSTimeZone$defaultTimeZone_block_invoke', symObjAddr: 0x6DE8, symBinAddr: 0xADE8, symSize: 0xB4 }
|
||||
- { offset: 0x82BE, size: 0x8, addend: 0x0, symName: '____logos_method$ohno$UIStatusBarManager$statusBarFrame_block_invoke', symObjAddr: 0x6E9C, symBinAddr: 0xAE9C, symSize: 0xE0 }
|
||||
- { offset: 0x834A, size: 0x8, addend: 0x0, symName: '____logos_method$ohno$NSMutableURLRequest$initWithURL$_block_invoke', symObjAddr: 0x6F7C, symBinAddr: 0xAF7C, symSize: 0x68 }
|
||||
- { offset: 0x8395, size: 0x8, addend: 0x0, symName: '____logos_method$ohno$NSMutableURLRequest$setValue$forHTTPHeaderField$_block_invoke', symObjAddr: 0x6FE4, symBinAddr: 0xAFE4, symSize: 0x64 }
|
||||
- { offset: 0x83E6, size: 0x8, addend: 0x0, symName: '____logos_meta_method$ohno$NSURLSession$sessionWithConfiguration$_block_invoke', symObjAddr: 0x7048, symBinAddr: 0xB048, symSize: 0xDC }
|
||||
- { offset: 0x8431, size: 0x8, addend: 0x0, symName: '____logos_method$ohno$NSURLSession$dataTaskWithRequest$completionHandler$_block_invoke', symObjAddr: 0x7124, symBinAddr: 0xB124, symSize: 0x68 }
|
||||
- { offset: 0x847C, size: 0x8, addend: 0x0, symName: '____logos_method$ohno$WKWebView$evaluateJavaScript$completionHandler$_block_invoke', symObjAddr: 0x718C, symBinAddr: 0xB18C, symSize: 0x64 }
|
||||
- { offset: 0x84CD, size: 0x8, addend: 0x0, symName: '____logos_method$ohno$WKWebView$setCustomUserAgent$_block_invoke', symObjAddr: 0x71F0, symBinAddr: 0xB1F0, symSize: 0x64 }
|
||||
- { offset: 0x851E, size: 0x8, addend: 0x0, symName: '____logos_method$ohno$WKWebView$customUserAgent_block_invoke', symObjAddr: 0x7254, symBinAddr: 0xB254, symSize: 0x64 }
|
||||
- { offset: 0x856F, size: 0x8, addend: 0x0, symName: '____logos_method$ohno$CTTelephonyNetworkInfo$serviceCurrentRadioAccessTechnology_block_invoke', symObjAddr: 0x72B8, symBinAddr: 0xB2B8, symSize: 0x268 }
|
||||
- { offset: 0x8617, size: 0x8, addend: 0x0, symName: '____logos_method$ohno$CTTelephonyNetworkInfo$serviceSubscriberCellularProviders_block_invoke', symObjAddr: 0x7520, symBinAddr: 0xB520, symSize: 0x36C }
|
||||
- { offset: 0x86BF, size: 0x8, addend: 0x0, symName: '____logos_method$ohno$CMMotionManager$startGyroUpdatesToQueue$withHandler$_block_invoke', symObjAddr: 0x788C, symBinAddr: 0xB88C, symSize: 0x15C }
|
||||
- { offset: 0x8764, size: 0x8, addend: 0x0, symName: ___copy_helper_block_e8_32b, symObjAddr: 0x79E8, symBinAddr: 0xB9E8, symSize: 0x38 }
|
||||
- { offset: 0x8788, size: 0x8, addend: 0x0, symName: _randomRadiansPerSecond, symObjAddr: 0x7A20, symBinAddr: 0xBA20, symSize: 0x44 }
|
||||
- { offset: 0x87B2, size: 0x8, addend: 0x0, symName: '____logos_function$ohno$uname_block_invoke', symObjAddr: 0x7A64, symBinAddr: 0xBA64, symSize: 0xB0 }
|
||||
- { offset: 0x881B, size: 0x8, addend: 0x0, symName: '____logos_function$ohno$sysctl_block_invoke', symObjAddr: 0x7B14, symBinAddr: 0xBB14, symSize: 0x78 }
|
||||
- { offset: 0x8883, size: 0x8, addend: 0x0, symName: '____logos_function$ohno$sysctl_block_invoke_2', symObjAddr: 0x7B8C, symBinAddr: 0xBB8C, symSize: 0x68 }
|
||||
- { offset: 0x88D4, size: 0x8, addend: 0x0, symName: '____logos_function$ohno$sysctlbyname_block_invoke', symObjAddr: 0x7BF4, symBinAddr: 0xBBF4, symSize: 0xC0 }
|
||||
- { offset: 0x893A, size: 0x8, addend: 0x0, symName: '____logos_function$ohno$sysctlbyname_block_invoke_2', symObjAddr: 0x7CB4, symBinAddr: 0xBCB4, symSize: 0xC0 }
|
||||
- { offset: 0x89A0, size: 0x8, addend: 0x0, symName: '____logos_function$ohno$getifaddrs_block_invoke', symObjAddr: 0x7D74, symBinAddr: 0xBD74, symSize: 0x8C }
|
||||
- { offset: 0x89F1, size: 0x8, addend: 0x0, symName: _modifyInterfaceIP, symObjAddr: 0x7E00, symBinAddr: 0xBE00, symSize: 0x16C }
|
||||
- { offset: 0x8A84, size: 0x8, addend: 0x0, symName: _createInterface, symObjAddr: 0x7F6C, symBinAddr: 0xBF6C, symSize: 0x3F4 }
|
||||
- { offset: 0x8B2D, size: 0x8, addend: 0x0, symName: '__logos_function$ohno$UIAccessibilityIsClosedCaptioningEnabled', symObjAddr: 0x8360, symBinAddr: 0xC360, symSize: 0xC }
|
||||
- { offset: 0x8B47, size: 0x8, addend: 0x0, symName: '__logos_function$ohno$UIAccessibilityIsMonoAudioEnabled', symObjAddr: 0x836C, symBinAddr: 0xC36C, symSize: 0xC }
|
||||
- { offset: 0x8B61, size: 0x8, addend: 0x0, symName: _cleanup, symObjAddr: 0x8378, symBinAddr: 0xC378, symSize: 0x38 }
|
||||
- { offset: 0x8B77, size: 0x8, addend: 0x0, symName: ___GLOBAL_init_65535, symObjAddr: 0x8960, symBinAddr: 0xC3B0, symSize: 0x28 }
|
||||
...
|
||||
|
||||
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Binary file not shown.
@ -2,192 +2,184 @@
|
||||
triple: 'arm64e-apple-darwin'
|
||||
binary-path: '/Users/mac/workspaces/projects/ios-change/old-ios-hook/.theos/obj/debug/arm64e/OhNo.dylib'
|
||||
relocations:
|
||||
- { offset: 0x51, size: 0x8, addend: 0x0, symName: '__logos_meta_orig$XHooks$ATTrackingManager$trackingAuthorizationStatus', symObjAddr: 0x1F4A0, symBinAddr: 0x14D00, symSize: 0x0 }
|
||||
- { offset: 0xE9, size: 0x8, addend: 0x0, symName: '__logos_meta_orig$XHooks$ATTrackingManager$requestTrackingAuthorizationWithCompletionHandler$', symObjAddr: 0x1F4A8, symBinAddr: 0x14D08, symSize: 0x0 }
|
||||
- { offset: 0x183, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$ASIdentifierManager$advertisingIdentifier', symObjAddr: 0x1F4B0, symBinAddr: 0x14D10, symSize: 0x0 }
|
||||
- { offset: 0x218, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$ASIdentifierManager$isAdvertisingTrackingEnabled', symObjAddr: 0x1F4B8, symBinAddr: 0x14D18, symSize: 0x0 }
|
||||
- { offset: 0x254, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$UIDevice$identifierForVendor', symObjAddr: 0x1F4C0, symBinAddr: 0x14D20, symSize: 0x0 }
|
||||
- { offset: 0x441, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$UIDevice$name', symObjAddr: 0x1F4C8, symBinAddr: 0x14D28, symSize: 0x0 }
|
||||
- { offset: 0x46B, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$UIDevice$model', symObjAddr: 0x1F4D0, symBinAddr: 0x14D30, symSize: 0x0 }
|
||||
- { offset: 0x480, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$UIDevice$localizedModel', symObjAddr: 0x1F4D8, symBinAddr: 0x14D38, symSize: 0x0 }
|
||||
- { offset: 0x495, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$UIDevice$systemName', symObjAddr: 0x1F4E0, symBinAddr: 0x14D40, symSize: 0x0 }
|
||||
- { offset: 0x4AA, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$UIDevice$systemVersion', symObjAddr: 0x1F4E8, symBinAddr: 0x14D48, symSize: 0x0 }
|
||||
- { offset: 0x4BF, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$UIDevice$batteryState', symObjAddr: 0x1F4F0, symBinAddr: 0x14D50, symSize: 0x0 }
|
||||
- { offset: 0x4E9, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$UIDevice$batteryLevel', symObjAddr: 0x1F4F8, symBinAddr: 0x14D58, symSize: 0x0 }
|
||||
- { offset: 0x513, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$UIDevice$orientation', symObjAddr: 0x1F500, symBinAddr: 0x14D60, symSize: 0x0 }
|
||||
- { offset: 0x53D, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$NSProcessInfo$systemUptime', symObjAddr: 0x1F508, symBinAddr: 0x14D68, symSize: 0x0 }
|
||||
- { offset: 0x709, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$NSProcessInfo$physicalMemory', symObjAddr: 0x1F510, symBinAddr: 0x14D70, symSize: 0x0 }
|
||||
- { offset: 0x733, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$NSProcessInfo$processorCount', symObjAddr: 0x1F518, symBinAddr: 0x14D78, symSize: 0x0 }
|
||||
- { offset: 0x75D, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$NSProcessInfo$operatingSystemVersion', symObjAddr: 0x1F520, symBinAddr: 0x14D80, symSize: 0x0 }
|
||||
- { offset: 0x787, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$UIWindow$safeAreaInsets', symObjAddr: 0x1F528, symBinAddr: 0x14D88, 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$XHooks$UIScreen$bounds', symObjAddr: 0x1F538, symBinAddr: 0x14D98, symSize: 0x0 }
|
||||
- { offset: 0x250E, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$UIScreen$scale', symObjAddr: 0x1F540, symBinAddr: 0x14DA0, symSize: 0x0 }
|
||||
- { offset: 0x2523, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$UIScreen$nativeBounds', symObjAddr: 0x1F548, symBinAddr: 0x14DA8, symSize: 0x0 }
|
||||
- { offset: 0x2538, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$UIScreen$isCaptured', symObjAddr: 0x1F550, symBinAddr: 0x14DB0, symSize: 0x0 }
|
||||
- { offset: 0x2562, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$UIScreen$mirroredScreen', symObjAddr: 0x1F558, symBinAddr: 0x14DB8, 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$XHooks$UIStatusBarManager$statusBarFrame', symObjAddr: 0x1F568, symBinAddr: 0x14DC8, symSize: 0x0 }
|
||||
- { offset: 0x2627, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$AVAudioSession$outputVolume', symObjAddr: 0x1F570, symBinAddr: 0x14DD0, symSize: 0x0 }
|
||||
- { offset: 0x299C, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$NSFileManager$attributesOfFileSystemForPath$error$', symObjAddr: 0x1F578, symBinAddr: 0x14DD8, symSize: 0x0 }
|
||||
- { offset: 0x2AC6, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$NSFileManager$fileExistsAtPath$', symObjAddr: 0x1F580, symBinAddr: 0x14DE0, symSize: 0x0 }
|
||||
- { offset: 0x2AF5, size: 0x8, addend: 0x0, symName: '__logos_meta_orig$XHooks$NSLocale$preferredLanguages', symObjAddr: 0x1F588, symBinAddr: 0x14DE8, symSize: 0x0 }
|
||||
- { offset: 0x2B1F, size: 0x8, addend: 0x0, symName: '__logos_meta_orig$XHooks$NSLocale$currentLocale', symObjAddr: 0x1F590, symBinAddr: 0x14DF0, symSize: 0x0 }
|
||||
- { offset: 0x2B5E, size: 0x8, addend: 0x0, symName: '__logos_meta_orig$XHooks$NSLocale$systemLocale', symObjAddr: 0x1F598, symBinAddr: 0x14DF8, symSize: 0x0 }
|
||||
- { offset: 0x2B73, size: 0x8, addend: 0x0, symName: '__logos_meta_orig$XHooks$NSTimeZone$localTimeZone', symObjAddr: 0x1F5A0, symBinAddr: 0x14E00, symSize: 0x0 }
|
||||
- { offset: 0x2BCC, size: 0x8, addend: 0x0, symName: '__logos_meta_orig$XHooks$NSTimeZone$systemTimeZone', symObjAddr: 0x1F5A8, symBinAddr: 0x14E08, symSize: 0x0 }
|
||||
- { offset: 0x2BE1, size: 0x8, addend: 0x0, symName: '__logos_meta_orig$XHooks$NSTimeZone$defaultTimeZone', symObjAddr: 0x1F5B0, symBinAddr: 0x14E10, symSize: 0x0 }
|
||||
- { offset: 0x2BF6, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$NSMutableURLRequest$initWithURL$', symObjAddr: 0x1F5B8, symBinAddr: 0x14E18, symSize: 0x0 }
|
||||
- { offset: 0x2E93, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$NSMutableURLRequest$setValue$forHTTPHeaderField$', symObjAddr: 0x1F5C0, symBinAddr: 0x14E20, symSize: 0x0 }
|
||||
- { offset: 0x2EC8, size: 0x8, addend: 0x0, symName: '__logos_meta_orig$XHooks$NSURLSession$sessionWithConfiguration$', symObjAddr: 0x1F5C8, symBinAddr: 0x14E28, symSize: 0x0 }
|
||||
- { offset: 0x35FC, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$NSURLSession$dataTaskWithRequest$completionHandler$', symObjAddr: 0x1F5D0, symBinAddr: 0x14E30, symSize: 0x0 }
|
||||
- { offset: 0x384E, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$WKWebView$evaluateJavaScript$completionHandler$', symObjAddr: 0x1F5D8, symBinAddr: 0x14E38, symSize: 0x0 }
|
||||
- { offset: 0x54B2, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$WKWebView$setCustomUserAgent$', symObjAddr: 0x1F5E0, symBinAddr: 0x14E40, symSize: 0x0 }
|
||||
- { offset: 0x54DD, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$WKWebView$customUserAgent', symObjAddr: 0x1F5E8, symBinAddr: 0x14E48, symSize: 0x0 }
|
||||
- { offset: 0x5507, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$CTTelephonyNetworkInfo$serviceCurrentRadioAccessTechnology', symObjAddr: 0x1F5F0, symBinAddr: 0x14E50, symSize: 0x0 }
|
||||
- { offset: 0x56B7, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$CTTelephonyNetworkInfo$serviceSubscriberCellularProviders', symObjAddr: 0x1F5F8, symBinAddr: 0x14E58, symSize: 0x0 }
|
||||
- { offset: 0x56CC, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$CMMotionManager$startGyroUpdatesToQueue$withHandler$', symObjAddr: 0x1F600, symBinAddr: 0x14E60, symSize: 0x0 }
|
||||
- { offset: 0x5C18, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$uname', symObjAddr: 0x1F608, symBinAddr: 0x14E68, symSize: 0x0 }
|
||||
- { offset: 0x5C9A, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$sysctl', symObjAddr: 0x1F610, symBinAddr: 0x14E70, symSize: 0x0 }
|
||||
- { offset: 0x5CF3, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$sysctlbyname', symObjAddr: 0x1F618, symBinAddr: 0x14E78, symSize: 0x0 }
|
||||
- { offset: 0x5D2D, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$clock_gettime', symObjAddr: 0x1F620, symBinAddr: 0x14E80, symSize: 0x0 }
|
||||
- { offset: 0x5DCD, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$getifaddrs', symObjAddr: 0x1F628, symBinAddr: 0x14E88, symSize: 0x0 }
|
||||
- { offset: 0x5EAB, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$SCNetworkReachabilityGetFlags', symObjAddr: 0x1F630, symBinAddr: 0x14E90, symSize: 0x0 }
|
||||
- { offset: 0x5F5C, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$UIAccessibilityIsClosedCaptioningEnabled', symObjAddr: 0x1F638, symBinAddr: 0x14E98, symSize: 0x0 }
|
||||
- { offset: 0x5F7E, size: 0x8, addend: 0x0, symName: '__logos_orig$XHooks$UIAccessibilityIsMonoAudioEnabled', symObjAddr: 0x1F640, symBinAddr: 0x14EA0, symSize: 0x0 }
|
||||
- { offset: 0x6166, size: 0x8, addend: 0x0, symName: _SetupXSLog, symObjAddr: 0x0, symBinAddr: 0x4000, symSize: 0x28 }
|
||||
- { offset: 0x617B, size: 0x8, addend: 0x0, symName: '-[CustomCMGyroData rotationRate]', symObjAddr: 0x28, symBinAddr: 0x4028, symSize: 0x48 }
|
||||
- { offset: 0x61B2, size: 0x8, addend: 0x0, symName: '-[CustomCMGyroData customRotationRate]', symObjAddr: 0x70, symBinAddr: 0x4070, symSize: 0x40 }
|
||||
- { offset: 0x61E9, size: 0x8, addend: 0x0, symName: '-[CustomCMGyroData setCustomRotationRate:]', symObjAddr: 0xB0, symBinAddr: 0x40B0, symSize: 0x40 }
|
||||
- { offset: 0x6228, size: 0x8, addend: 0x0, symName: __logosLocalCtor_e9c95796, symObjAddr: 0xF0, symBinAddr: 0x40F0, symSize: 0x1018 }
|
||||
- { offset: 0x64AB, size: 0x8, addend: 0x0, symName: '__logos_meta_method$XHooks$ATTrackingManager$trackingAuthorizationStatus', symObjAddr: 0x1108, symBinAddr: 0x5108, symSize: 0x84 }
|
||||
- { offset: 0x6515, size: 0x8, addend: 0x0, symName: '__logos_meta_method$XHooks$ATTrackingManager$requestTrackingAuthorizationWithCompletionHandler$', symObjAddr: 0x118C, symBinAddr: 0x518C, symSize: 0x16C }
|
||||
- { offset: 0x6577, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$ASIdentifierManager$advertisingIdentifier', symObjAddr: 0x12F8, symBinAddr: 0x52F8, symSize: 0x124 }
|
||||
- { offset: 0x65BB, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$ASIdentifierManager$isAdvertisingTrackingEnabled', symObjAddr: 0x141C, symBinAddr: 0x541C, symSize: 0x74 }
|
||||
- { offset: 0x65FF, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$UIDevice$identifierForVendor', symObjAddr: 0x1490, symBinAddr: 0x5490, symSize: 0x124 }
|
||||
- { offset: 0x6643, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$UIDevice$name', symObjAddr: 0x15B4, symBinAddr: 0x55B4, symSize: 0x124 }
|
||||
- { offset: 0x6687, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$UIDevice$model', symObjAddr: 0x16D8, symBinAddr: 0x56D8, symSize: 0x38 }
|
||||
- { offset: 0x66BD, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$UIDevice$localizedModel', symObjAddr: 0x1710, symBinAddr: 0x5710, symSize: 0x38 }
|
||||
- { offset: 0x66F3, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$UIDevice$systemName', symObjAddr: 0x1748, symBinAddr: 0x5748, symSize: 0x38 }
|
||||
- { offset: 0x6729, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$UIDevice$systemVersion', symObjAddr: 0x1780, symBinAddr: 0x5780, symSize: 0x124 }
|
||||
- { offset: 0x676D, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$UIDevice$batteryState', symObjAddr: 0x18A4, symBinAddr: 0x58A4, symSize: 0xA0 }
|
||||
- { offset: 0x67B1, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$UIDevice$batteryLevel', symObjAddr: 0x1944, symBinAddr: 0x5944, symSize: 0xA4 }
|
||||
- { offset: 0x67F5, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$UIDevice$orientation', symObjAddr: 0x19E8, symBinAddr: 0x59E8, symSize: 0x18 }
|
||||
- { offset: 0x682B, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$NSProcessInfo$systemUptime', symObjAddr: 0x1A00, symBinAddr: 0x5A00, symSize: 0xA8 }
|
||||
- { offset: 0x687D, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$NSProcessInfo$physicalMemory', symObjAddr: 0x1AA8, symBinAddr: 0x5AA8, symSize: 0xA4 }
|
||||
- { offset: 0x68C1, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$NSProcessInfo$processorCount', symObjAddr: 0x1B4C, symBinAddr: 0x5B4C, symSize: 0xA4 }
|
||||
- { offset: 0x6905, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$NSProcessInfo$operatingSystemVersion', symObjAddr: 0x1BF0, symBinAddr: 0x5BF0, symSize: 0x46C }
|
||||
- { offset: 0x6987, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$UIWindow$safeAreaInsets', symObjAddr: 0x205C, symBinAddr: 0x605C, symSize: 0x174 }
|
||||
- { offset: 0x6A04, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$UIScreen$brightness', symObjAddr: 0x21D0, symBinAddr: 0x61D0, symSize: 0xA4 }
|
||||
- { offset: 0x6A48, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$UIScreen$bounds', symObjAddr: 0x2274, symBinAddr: 0x6274, symSize: 0x178 }
|
||||
- { offset: 0x6AB7, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$UIScreen$scale', symObjAddr: 0x23EC, symBinAddr: 0x63EC, symSize: 0xA4 }
|
||||
- { offset: 0x6AFB, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$UIScreen$nativeBounds', symObjAddr: 0x2490, symBinAddr: 0x6490, symSize: 0x178 }
|
||||
- { offset: 0x6B6A, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$UIScreen$isCaptured', symObjAddr: 0x2608, symBinAddr: 0x6608, symSize: 0x1C }
|
||||
- { offset: 0x6BA0, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$UIScreen$mirroredScreen', symObjAddr: 0x2624, symBinAddr: 0x6624, symSize: 0x18 }
|
||||
- { offset: 0x6BD6, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$UIScreenMode$size', symObjAddr: 0x263C, symBinAddr: 0x663C, symSize: 0x158 }
|
||||
- { offset: 0x6C44, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$UIStatusBarManager$statusBarFrame', symObjAddr: 0x2794, symBinAddr: 0x6794, symSize: 0x194 }
|
||||
- { offset: 0x6CB3, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$AVAudioSession$outputVolume', symObjAddr: 0x2928, symBinAddr: 0x6928, symSize: 0xA4 }
|
||||
- { offset: 0x6CFB, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$NSFileManager$attributesOfFileSystemForPath$error$', symObjAddr: 0x29CC, symBinAddr: 0x69CC, symSize: 0x294 }
|
||||
- { offset: 0x6D9D, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$NSFileManager$fileExistsAtPath$', symObjAddr: 0x2C60, symBinAddr: 0x6C60, symSize: 0x398 }
|
||||
- { offset: 0x6E08, size: 0x8, addend: 0x0, symName: '__logos_meta_method$XHooks$NSLocale$preferredLanguages', symObjAddr: 0x2FF8, symBinAddr: 0x6FF8, symSize: 0x80 }
|
||||
- { offset: 0x6E41, size: 0x8, addend: 0x0, symName: '__logos_meta_method$XHooks$NSLocale$currentLocale', symObjAddr: 0x3078, symBinAddr: 0x7078, symSize: 0xE8 }
|
||||
- { offset: 0x6E89, size: 0x8, addend: 0x0, symName: '__logos_meta_method$XHooks$NSLocale$systemLocale', symObjAddr: 0x3160, symBinAddr: 0x7160, symSize: 0xE8 }
|
||||
- { offset: 0x6ED1, size: 0x8, addend: 0x0, symName: '__logos_meta_method$XHooks$NSTimeZone$localTimeZone', symObjAddr: 0x3248, symBinAddr: 0x7248, symSize: 0xEC }
|
||||
- { offset: 0x6F19, size: 0x8, addend: 0x0, symName: '__logos_meta_method$XHooks$NSTimeZone$systemTimeZone', symObjAddr: 0x3334, symBinAddr: 0x7334, symSize: 0xEC }
|
||||
- { offset: 0x6F61, size: 0x8, addend: 0x0, symName: '__logos_meta_method$XHooks$NSTimeZone$defaultTimeZone', symObjAddr: 0x3420, symBinAddr: 0x7420, symSize: 0xEC }
|
||||
- { offset: 0x6FA9, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$NSMutableURLRequest$initWithURL$', symObjAddr: 0x350C, symBinAddr: 0x750C, symSize: 0x140 }
|
||||
- { offset: 0x7006, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$NSMutableURLRequest$setValue$forHTTPHeaderField$', symObjAddr: 0x364C, symBinAddr: 0x764C, symSize: 0x140 }
|
||||
- { offset: 0x707D, size: 0x8, addend: 0x0, symName: '__logos_meta_method$XHooks$NSURLSession$sessionWithConfiguration$', symObjAddr: 0x378C, symBinAddr: 0x778C, symSize: 0x174 }
|
||||
- { offset: 0x70D4, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$NSURLSession$dataTaskWithRequest$completionHandler$', symObjAddr: 0x3900, symBinAddr: 0x7900, symSize: 0x148 }
|
||||
- { offset: 0x7149, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$WKWebView$evaluateJavaScript$completionHandler$', symObjAddr: 0x3A48, symBinAddr: 0x7A48, symSize: 0x104 }
|
||||
- { offset: 0x71AB, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$WKWebView$setCustomUserAgent$', symObjAddr: 0x3B4C, symBinAddr: 0x7B4C, symSize: 0xF0 }
|
||||
- { offset: 0x71FE, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$WKWebView$customUserAgent', symObjAddr: 0x3C3C, symBinAddr: 0x7C3C, symSize: 0x124 }
|
||||
- { offset: 0x7246, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$CTTelephonyNetworkInfo$serviceCurrentRadioAccessTechnology', symObjAddr: 0x3D60, symBinAddr: 0x7D60, symSize: 0x3C0 }
|
||||
- { offset: 0x72ED, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$CTTelephonyNetworkInfo$serviceSubscriberCellularProviders', symObjAddr: 0x4120, symBinAddr: 0x8120, symSize: 0x6DC }
|
||||
- { offset: 0x7394, size: 0x8, addend: 0x0, symName: '__logos_method$XHooks$CMMotionManager$startGyroUpdatesToQueue$withHandler$', symObjAddr: 0x47FC, symBinAddr: 0x87FC, symSize: 0x16C }
|
||||
- { offset: 0x73F6, size: 0x8, addend: 0x0, symName: '__logos_function$XHooks$uname', symObjAddr: 0x4968, symBinAddr: 0x8968, symSize: 0x100 }
|
||||
- { offset: 0x745C, size: 0x8, addend: 0x0, symName: '__logos_function$XHooks$sysctl', symObjAddr: 0x4A68, symBinAddr: 0x8A68, symSize: 0x354 }
|
||||
- { offset: 0x7559, size: 0x8, addend: 0x0, symName: '__logos_function$XHooks$sysctlbyname', symObjAddr: 0x4DBC, symBinAddr: 0x8DBC, symSize: 0x2B8 }
|
||||
- { offset: 0x768F, size: 0x8, addend: 0x0, symName: '__logos_function$XHooks$clock_gettime', symObjAddr: 0x5074, symBinAddr: 0x9074, symSize: 0x54 }
|
||||
- { offset: 0x76D7, size: 0x8, addend: 0x0, symName: '__logos_function$XHooks$getifaddrs', symObjAddr: 0x50C8, symBinAddr: 0x90C8, symSize: 0x618 }
|
||||
- { offset: 0x7857, size: 0x8, addend: 0x0, symName: '__logos_function$XHooks$SCNetworkReachabilityGetFlags', symObjAddr: 0x56E0, symBinAddr: 0x96E0, symSize: 0x7C }
|
||||
- { offset: 0x789F, size: 0x8, addend: 0x0, symName: __logosLocalDtor_2e2d985c, symObjAddr: 0x575C, symBinAddr: 0x975C, symSize: 0x68 }
|
||||
- { offset: 0x78E3, size: 0x8, addend: 0x0, symName: '____logos_meta_method$XHooks$ATTrackingManager$requestTrackingAuthorizationWithCompletionHandler$_block_invoke', symObjAddr: 0x57C4, symBinAddr: 0x97C4, symSize: 0x58 }
|
||||
- { offset: 0x792D, size: 0x8, addend: 0x0, symName: ___copy_helper_block_e8_32b, symObjAddr: 0x581C, symBinAddr: 0x981C, symSize: 0x3C }
|
||||
- { offset: 0x7951, size: 0x8, addend: 0x0, symName: ___destroy_helper_block_e8_32s, symObjAddr: 0x5858, symBinAddr: 0x9858, symSize: 0x30 }
|
||||
- { offset: 0x796D, size: 0x8, addend: 0x0, symName: _UIEdgeInsetsMake, symObjAddr: 0x5888, symBinAddr: 0x9888, symSize: 0x4C }
|
||||
- { offset: 0x79CD, size: 0x8, addend: 0x0, symName: _CGRectMake, symObjAddr: 0x58D4, symBinAddr: 0x98D4, symSize: 0x4C }
|
||||
- { offset: 0x7A33, size: 0x8, addend: 0x0, symName: _CGSizeMake, symObjAddr: 0x5920, symBinAddr: 0x9920, symSize: 0x2C }
|
||||
- { offset: 0x7A7B, size: 0x8, addend: 0x0, symName: '____logos_method$XHooks$NSFileManager$fileExistsAtPath$_block_invoke', symObjAddr: 0x594C, symBinAddr: 0x994C, symSize: 0xA0 }
|
||||
- { offset: 0x7B05, size: 0x8, addend: 0x0, symName: ___copy_helper_block_e8_32s, symObjAddr: 0x59EC, symBinAddr: 0x99EC, symSize: 0x3C }
|
||||
- { offset: 0x7B29, size: 0x8, addend: 0x0, symName: '____logos_method$XHooks$CMMotionManager$startGyroUpdatesToQueue$withHandler$_block_invoke', symObjAddr: 0x5A28, symBinAddr: 0x9A28, symSize: 0x114 }
|
||||
- { offset: 0x7BAF, size: 0x8, addend: 0x0, symName: _randomRadiansPerSecond, symObjAddr: 0x5B3C, symBinAddr: 0x9B3C, symSize: 0x48 }
|
||||
- { offset: 0x7BD9, size: 0x8, addend: 0x0, symName: _modifyInterfaceIP, symObjAddr: 0x5B84, symBinAddr: 0x9B84, symSize: 0x144 }
|
||||
- { offset: 0x7C6C, size: 0x8, addend: 0x0, symName: _createInterface, symObjAddr: 0x5CC8, symBinAddr: 0x9CC8, symSize: 0x3CC }
|
||||
- { offset: 0x7D15, size: 0x8, addend: 0x0, symName: '__logos_function$XHooks$UIAccessibilityIsClosedCaptioningEnabled', symObjAddr: 0x6094, symBinAddr: 0xA094, symSize: 0xC }
|
||||
- { offset: 0x7D2F, size: 0x8, addend: 0x0, symName: '__logos_function$XHooks$UIAccessibilityIsMonoAudioEnabled', symObjAddr: 0x60A0, symBinAddr: 0xA0A0, symSize: 0xC }
|
||||
- { offset: 0x7D49, size: 0x8, addend: 0x0, symName: ___GLOBAL_init_65535, symObjAddr: 0x6284, symBinAddr: 0xA0AC, symSize: 0x34 }
|
||||
- { offset: 0x7FCF, size: 0x8, addend: 0x0, symName: _XSLogSetupLogWithFilePath, symObjAddr: 0x0, symBinAddr: 0xA0E0, symSize: 0x11C }
|
||||
- { offset: 0x7FE8, size: 0x8, addend: 0x0, symName: _kLogFilePath, symObjAddr: 0xEA8, symBinAddr: 0x14CF0, symSize: 0x0 }
|
||||
- { offset: 0x804F, size: 0x8, addend: 0x0, symName: _XSLogSetupLogWithFilePath, symObjAddr: 0x0, symBinAddr: 0xA0E0, symSize: 0x11C }
|
||||
- { offset: 0x8070, size: 0x8, addend: 0x0, symName: _XSLogSetupLogWithFilePath.onceToken, symObjAddr: 0x3E60, symBinAddr: 0x14EA8, symSize: 0x0 }
|
||||
- { offset: 0x8115, size: 0x8, addend: 0x0, symName: _logFileHandle, symObjAddr: 0x3E70, symBinAddr: 0x14EB8, symSize: 0x0 }
|
||||
- { offset: 0x8195, size: 0x8, addend: 0x0, symName: _logQueue, symObjAddr: 0x3E68, symBinAddr: 0x14EB0, symSize: 0x0 }
|
||||
- { offset: 0x81BA, size: 0x8, addend: 0x0, symName: _kMaxFileSize, symObjAddr: 0xEB0, symBinAddr: 0x14CF8, symSize: 0x0 }
|
||||
- { offset: 0x81CF, size: 0x8, addend: 0x0, symName: _logCount, symObjAddr: 0x3E78, symBinAddr: 0x14EC0, symSize: 0x0 }
|
||||
- { offset: 0x82ED, size: 0x8, addend: 0x0, symName: ___XSLogSetupLogWithFilePath_block_invoke, symObjAddr: 0x11C, symBinAddr: 0xA1FC, symSize: 0x88 }
|
||||
- { offset: 0x8337, size: 0x8, addend: 0x0, symName: _setupLogFileHandle, symObjAddr: 0x1A4, symBinAddr: 0xA284, symSize: 0x184 }
|
||||
- { offset: 0x835B, size: 0x8, addend: 0x0, symName: _XSLogSetupLogWithFileName, symObjAddr: 0x394, symBinAddr: 0xA408, symSize: 0x98 }
|
||||
- { offset: 0x838D, size: 0x8, addend: 0x0, symName: _getLogFilePath, symObjAddr: 0x42C, symBinAddr: 0xA4A0, symSize: 0x100 }
|
||||
- { offset: 0x83DF, size: 0x8, addend: 0x0, symName: _XSLogRedirectNSLog, symObjAddr: 0x52C, symBinAddr: 0xA5A0, symSize: 0xC4 }
|
||||
- { offset: 0x8411, size: 0x8, addend: 0x0, symName: _XSLogMessage, symObjAddr: 0x5F0, symBinAddr: 0xA664, symSize: 0x118 }
|
||||
- { offset: 0x8452, size: 0x8, addend: 0x0, symName: ___XSLogMessage_block_invoke, symObjAddr: 0x708, symBinAddr: 0xA77C, symSize: 0x2D0 }
|
||||
- { offset: 0x84DE, size: 0x8, addend: 0x0, symName: _checkAndRollLogFile, symObjAddr: 0x9D8, symBinAddr: 0xAA4C, symSize: 0x29C }
|
||||
- { offset: 0x8CEF, size: 0x8, addend: 0x0, symName: '+[XHookSettingsManager sharedManager]', symObjAddr: 0x0, symBinAddr: 0xACE8, symSize: 0x90 }
|
||||
- { offset: 0x8CFC, size: 0x8, addend: 0x0, symName: '+[XHookSettingsManager sharedManager]', symObjAddr: 0x0, symBinAddr: 0xACE8, symSize: 0x90 }
|
||||
- { offset: 0x8D25, size: 0x8, addend: 0x0, symName: _sharedManager.manager, symObjAddr: 0x6E40, symBinAddr: 0x14EC8, symSize: 0x0 }
|
||||
- { offset: 0x8D3A, size: 0x8, addend: 0x0, symName: _sharedManager.onceToken, symObjAddr: 0x6E48, symBinAddr: 0x14ED0, symSize: 0x0 }
|
||||
- { offset: 0x9246, size: 0x8, addend: 0x0, symName: '___37+[XHookSettingsManager sharedManager]_block_invoke', symObjAddr: 0x90, symBinAddr: 0xAD78, symSize: 0x58 }
|
||||
- { offset: 0x926E, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager init]', symObjAddr: 0xE8, symBinAddr: 0xADD0, symSize: 0xB4 }
|
||||
- { offset: 0x92A4, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager resetToDefaults]', symObjAddr: 0x19C, symBinAddr: 0xAE84, symSize: 0x188 }
|
||||
- { offset: 0x92D6, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager parseString:defaultValue:]', symObjAddr: 0x324, symBinAddr: 0xB00C, symSize: 0xEC }
|
||||
- { offset: 0x9328, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager parseInteger:defaultValue:]', symObjAddr: 0x410, symBinAddr: 0xB0F8, symSize: 0x104 }
|
||||
- { offset: 0x937A, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager parseFloat:defaultValue:]', symObjAddr: 0x514, symBinAddr: 0xB1FC, symSize: 0x104 }
|
||||
- { offset: 0x93CC, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager parseDouble:defaultValue:]', symObjAddr: 0x618, symBinAddr: 0xB300, symSize: 0x104 }
|
||||
- { offset: 0x941E, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager parseULL:defaultValue:]', symObjAddr: 0x71C, symBinAddr: 0xB404, symSize: 0x104 }
|
||||
- { offset: 0x9470, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager parseUUID:]', symObjAddr: 0x820, symBinAddr: 0xB508, symSize: 0xC0 }
|
||||
- { offset: 0x94B4, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager parseDictionary:]', symObjAddr: 0x8E0, symBinAddr: 0xB5C8, symSize: 0xB8 }
|
||||
- { offset: 0x94F8, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager parseArray:]', symObjAddr: 0x998, symBinAddr: 0xB680, symSize: 0xB8 }
|
||||
- { offset: 0x953C, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager loadSettingsFromPath:]', symObjAddr: 0xA50, symBinAddr: 0xB738, symSize: 0x304 }
|
||||
- { offset: 0x95DD, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager parseSettings:]', symObjAddr: 0xD54, symBinAddr: 0xBA3C, symSize: 0xAB8 }
|
||||
- { offset: 0x962B, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager cleanup]', symObjAddr: 0x180C, symBinAddr: 0xC4F4, symSize: 0x30 }
|
||||
- { offset: 0x965D, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager shouldHookApp:]', symObjAddr: 0x183C, symBinAddr: 0xC524, symSize: 0xAC }
|
||||
- { offset: 0x96A1, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager isLoaded]', symObjAddr: 0x18E8, symBinAddr: 0xC5D0, symSize: 0x20 }
|
||||
- { offset: 0x96D7, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager idfa]', symObjAddr: 0x1908, symBinAddr: 0xC5F0, symSize: 0x1C }
|
||||
- { offset: 0x970D, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager idfv]', symObjAddr: 0x1924, symBinAddr: 0xC60C, symSize: 0x1C }
|
||||
- { offset: 0x9743, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager deviceName]', symObjAddr: 0x1940, symBinAddr: 0xC628, symSize: 0x1C }
|
||||
- { offset: 0x9779, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager osVersion]', symObjAddr: 0x195C, symBinAddr: 0xC644, symSize: 0x1C }
|
||||
- { offset: 0x97AF, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager productStr]', symObjAddr: 0x1978, symBinAddr: 0xC660, symSize: 0x1C }
|
||||
- { offset: 0x97E5, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager hwModel]', symObjAddr: 0x1994, symBinAddr: 0xC67C, symSize: 0x1C }
|
||||
- { offset: 0x981B, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager trackingStatus]', symObjAddr: 0x19B0, symBinAddr: 0xC698, symSize: 0x1C }
|
||||
- { offset: 0x9851, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager physicalMemory]', symObjAddr: 0x19CC, symBinAddr: 0xC6B4, symSize: 0x1C }
|
||||
- { offset: 0x9887, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager cpuCore]', symObjAddr: 0x19E8, symBinAddr: 0xC6D0, symSize: 0x1C }
|
||||
- { offset: 0x98BD, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager systemUptimeOffset]', symObjAddr: 0x1A04, symBinAddr: 0xC6EC, symSize: 0x1C }
|
||||
- { offset: 0x98F3, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager kernBootTimeOffset]', symObjAddr: 0x1A20, symBinAddr: 0xC708, symSize: 0x1C }
|
||||
- { offset: 0x9929, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager batteryState]', symObjAddr: 0x1A3C, symBinAddr: 0xC724, symSize: 0x1C }
|
||||
- { offset: 0x995F, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager batteryLevel]', symObjAddr: 0x1A58, symBinAddr: 0xC740, symSize: 0x1C }
|
||||
- { offset: 0x9995, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager screenBrightness]', symObjAddr: 0x1A74, symBinAddr: 0xC75C, symSize: 0x1C }
|
||||
- { offset: 0x99CB, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager screenScale]', symObjAddr: 0x1A90, symBinAddr: 0xC778, symSize: 0x1C }
|
||||
- { offset: 0x9A01, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager screenBounds]', symObjAddr: 0x1AAC, symBinAddr: 0xC794, symSize: 0x1C }
|
||||
- { offset: 0x9A37, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager safeAreaInsets]', symObjAddr: 0x1AC8, symBinAddr: 0xC7B0, symSize: 0x1C }
|
||||
- { offset: 0x9A6D, size: 0x8, addend: 0x0, symName: '-[XHookSettingsManager diskSize]', symObjAddr: 0x1AE4, symBinAddr: 0xC7CC, symSize: 0x1C }
|
||||
- { 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 }
|
||||
- { offset: 0x7D, size: 0x8, addend: 0x0, symName: _settings, symBinAddr: 0x14610, symSize: 0x0 }
|
||||
- { offset: 0xF0, size: 0x8, addend: 0x0, symName: '__logos_meta_orig$ohno$ATTrackingManager$trackingAuthorizationStatus', symObjAddr: 0x27998, symBinAddr: 0x14468, symSize: 0x0 }
|
||||
- { offset: 0x163, size: 0x8, addend: 0x0, symName: '__logos_meta_orig$ohno$ATTrackingManager$requestTrackingAuthorizationWithCompletionHandler$', symObjAddr: 0x279A0, symBinAddr: 0x14470, symSize: 0x0 }
|
||||
- { offset: 0x1FD, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$ASIdentifierManager$advertisingIdentifier', symObjAddr: 0x279A8, symBinAddr: 0x14478, symSize: 0x0 }
|
||||
- { offset: 0x27B, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$ASIdentifierManager$isAdvertisingTrackingEnabled', symObjAddr: 0x279B0, symBinAddr: 0x14480, symSize: 0x0 }
|
||||
- { offset: 0x2B7, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$UIDevice$identifierForVendor', symObjAddr: 0x279B8, symBinAddr: 0x14488, symSize: 0x0 }
|
||||
- { offset: 0x492, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$UIDevice$name', symObjAddr: 0x279C0, symBinAddr: 0x14490, symSize: 0x0 }
|
||||
- { offset: 0x4BC, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$UIDevice$model', symObjAddr: 0x279C8, symBinAddr: 0x14498, symSize: 0x0 }
|
||||
- { offset: 0x4D1, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$UIDevice$localizedModel', symObjAddr: 0x279D0, symBinAddr: 0x144A0, symSize: 0x0 }
|
||||
- { offset: 0x4E6, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$UIDevice$systemName', symObjAddr: 0x279D8, symBinAddr: 0x144A8, symSize: 0x0 }
|
||||
- { offset: 0x4FB, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$UIDevice$systemVersion', symObjAddr: 0x279E0, symBinAddr: 0x144B0, symSize: 0x0 }
|
||||
- { offset: 0x510, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$UIDevice$batteryState', symObjAddr: 0x279E8, symBinAddr: 0x144B8, symSize: 0x0 }
|
||||
- { offset: 0x53A, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$UIDevice$batteryLevel', symObjAddr: 0x279F0, symBinAddr: 0x144C0, symSize: 0x0 }
|
||||
- { offset: 0x564, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$UIDevice$orientation', symObjAddr: 0x279F8, symBinAddr: 0x144C8, symSize: 0x0 }
|
||||
- { offset: 0x58E, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$NSProcessInfo$systemUptime', symObjAddr: 0x27A00, symBinAddr: 0x144D0, symSize: 0x0 }
|
||||
- { offset: 0x738, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$NSProcessInfo$physicalMemory', symObjAddr: 0x27A08, symBinAddr: 0x144D8, symSize: 0x0 }
|
||||
- { offset: 0x762, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$NSProcessInfo$processorCount', symObjAddr: 0x27A10, symBinAddr: 0x144E0, symSize: 0x0 }
|
||||
- { offset: 0x78C, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$NSProcessInfo$operatingSystemVersion', symObjAddr: 0x27A18, symBinAddr: 0x144E8, symSize: 0x0 }
|
||||
- { offset: 0x7B6, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$UIWindow$safeAreaInsets', symObjAddr: 0x27A20, symBinAddr: 0x144F0, symSize: 0x0 }
|
||||
- { offset: 0x24E4, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$UIScreen$brightness', symObjAddr: 0x27A28, symBinAddr: 0x144F8, symSize: 0x0 }
|
||||
- { offset: 0x2513, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$UIScreen$bounds', symObjAddr: 0x27A30, symBinAddr: 0x14500, symSize: 0x0 }
|
||||
- { offset: 0x253D, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$UIScreen$scale', symObjAddr: 0x27A38, symBinAddr: 0x14508, symSize: 0x0 }
|
||||
- { offset: 0x2552, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$UIScreen$nativeBounds', symObjAddr: 0x27A40, symBinAddr: 0x14510, symSize: 0x0 }
|
||||
- { offset: 0x2567, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$UIScreen$isCaptured', symObjAddr: 0x27A48, symBinAddr: 0x14518, symSize: 0x0 }
|
||||
- { offset: 0x2591, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$UIScreen$mirroredScreen', symObjAddr: 0x27A50, symBinAddr: 0x14520, symSize: 0x0 }
|
||||
- { offset: 0x25BB, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$AVAudioSession$outputVolume', symObjAddr: 0x27A58, symBinAddr: 0x14528, symSize: 0x0 }
|
||||
- { offset: 0x25F5, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$UIScreenMode$size', symObjAddr: 0x27A60, symBinAddr: 0x14530, symSize: 0x0 }
|
||||
- { offset: 0x2624, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$NSFileManager$attributesOfFileSystemForPath$error$', symObjAddr: 0x27A68, symBinAddr: 0x14538, symSize: 0x0 }
|
||||
- { offset: 0x274E, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$NSFileManager$fileExistsAtPath$', symObjAddr: 0x27A70, symBinAddr: 0x14540, symSize: 0x0 }
|
||||
- { offset: 0x277D, size: 0x8, addend: 0x0, symName: '__logos_meta_orig$ohno$NSLocale$preferredLanguages', symObjAddr: 0x27A78, symBinAddr: 0x14548, symSize: 0x0 }
|
||||
- { offset: 0x27A7, size: 0x8, addend: 0x0, symName: '__logos_meta_orig$ohno$NSLocale$currentLocale', symObjAddr: 0x27A80, symBinAddr: 0x14550, symSize: 0x0 }
|
||||
- { offset: 0x27E6, size: 0x8, addend: 0x0, symName: '__logos_meta_orig$ohno$NSLocale$systemLocale', symObjAddr: 0x27A88, symBinAddr: 0x14558, symSize: 0x0 }
|
||||
- { offset: 0x27FB, size: 0x8, addend: 0x0, symName: '__logos_meta_orig$ohno$NSTimeZone$localTimeZone', symObjAddr: 0x27A90, symBinAddr: 0x14560, symSize: 0x0 }
|
||||
- { offset: 0x2854, size: 0x8, addend: 0x0, symName: '__logos_meta_orig$ohno$NSTimeZone$systemTimeZone', symObjAddr: 0x27A98, symBinAddr: 0x14568, symSize: 0x0 }
|
||||
- { offset: 0x2869, size: 0x8, addend: 0x0, symName: '__logos_meta_orig$ohno$NSTimeZone$defaultTimeZone', symObjAddr: 0x27AA0, symBinAddr: 0x14570, symSize: 0x0 }
|
||||
- { offset: 0x287E, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$UIStatusBarManager$statusBarFrame', symObjAddr: 0x27AA8, symBinAddr: 0x14578, symSize: 0x0 }
|
||||
- { offset: 0x28EA, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$NSMutableURLRequest$initWithURL$', symObjAddr: 0x27AB0, symBinAddr: 0x14580, symSize: 0x0 }
|
||||
- { offset: 0x2B87, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$NSMutableURLRequest$setValue$forHTTPHeaderField$', symObjAddr: 0x27AB8, symBinAddr: 0x14588, symSize: 0x0 }
|
||||
- { offset: 0x2BBC, size: 0x8, addend: 0x0, symName: '__logos_meta_orig$ohno$NSURLSession$sessionWithConfiguration$', symObjAddr: 0x27AC0, symBinAddr: 0x14590, symSize: 0x0 }
|
||||
- { offset: 0x32F0, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$NSURLSession$dataTaskWithRequest$completionHandler$', symObjAddr: 0x27AC8, symBinAddr: 0x14598, symSize: 0x0 }
|
||||
- { offset: 0x3542, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$WKWebView$evaluateJavaScript$completionHandler$', symObjAddr: 0x27AD0, symBinAddr: 0x145A0, symSize: 0x0 }
|
||||
- { offset: 0x51A6, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$WKWebView$setCustomUserAgent$', symObjAddr: 0x27AD8, symBinAddr: 0x145A8, symSize: 0x0 }
|
||||
- { offset: 0x51D1, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$WKWebView$customUserAgent', symObjAddr: 0x27AE0, symBinAddr: 0x145B0, symSize: 0x0 }
|
||||
- { offset: 0x51FB, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$CTTelephonyNetworkInfo$serviceCurrentRadioAccessTechnology', symObjAddr: 0x27AE8, symBinAddr: 0x145B8, symSize: 0x0 }
|
||||
- { offset: 0x53AB, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$CTTelephonyNetworkInfo$serviceSubscriberCellularProviders', symObjAddr: 0x27AF0, symBinAddr: 0x145C0, symSize: 0x0 }
|
||||
- { offset: 0x53C0, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$CMMotionManager$startGyroUpdatesToQueue$withHandler$', symObjAddr: 0x27AF8, symBinAddr: 0x145C8, symSize: 0x0 }
|
||||
- { offset: 0x590C, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$uname', symObjAddr: 0x27B00, symBinAddr: 0x145D0, symSize: 0x0 }
|
||||
- { offset: 0x598E, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$sysctl', symObjAddr: 0x27B08, symBinAddr: 0x145D8, symSize: 0x0 }
|
||||
- { offset: 0x59E7, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$sysctlbyname', symObjAddr: 0x27B10, symBinAddr: 0x145E0, symSize: 0x0 }
|
||||
- { offset: 0x5A21, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$clock_gettime', symObjAddr: 0x27B18, symBinAddr: 0x145E8, symSize: 0x0 }
|
||||
- { offset: 0x5AC1, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$getifaddrs', symObjAddr: 0x27B20, symBinAddr: 0x145F0, symSize: 0x0 }
|
||||
- { offset: 0x5B9F, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$SCNetworkReachabilityGetFlags', symObjAddr: 0x27B28, symBinAddr: 0x145F8, symSize: 0x0 }
|
||||
- { offset: 0x5C50, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$UIAccessibilityIsClosedCaptioningEnabled', symObjAddr: 0x27B30, symBinAddr: 0x14600, symSize: 0x0 }
|
||||
- { offset: 0x5C72, size: 0x8, addend: 0x0, symName: '__logos_orig$ohno$UIAccessibilityIsMonoAudioEnabled', symObjAddr: 0x27B38, symBinAddr: 0x14608, symSize: 0x0 }
|
||||
- { offset: 0x5E40, size: 0x8, addend: 0x0, symName: _str2uuid, symObjAddr: 0x0, symBinAddr: 0x4000, symSize: 0x78 }
|
||||
- { offset: 0x5E68, size: 0x8, addend: 0x0, symName: _str2int, symObjAddr: 0x78, symBinAddr: 0x4078, symSize: 0x5C }
|
||||
- { offset: 0x5E90, size: 0x8, addend: 0x0, symName: _str2float, symObjAddr: 0xD4, symBinAddr: 0x40D4, symSize: 0x58 }
|
||||
- { offset: 0x5EB8, size: 0x8, addend: 0x0, symName: _str2double, symObjAddr: 0x12C, symBinAddr: 0x412C, symSize: 0x58 }
|
||||
- { offset: 0x5EE0, size: 0x8, addend: 0x0, symName: _str2ull, symObjAddr: 0x184, symBinAddr: 0x4184, symSize: 0x5C }
|
||||
- { offset: 0x5F08, size: 0x8, addend: 0x0, symName: _tryGetVal, symObjAddr: 0x1E0, symBinAddr: 0x41E0, symSize: 0x198 }
|
||||
- { offset: 0x5F62, size: 0x8, addend: 0x0, symName: _str2chars, symObjAddr: 0x378, symBinAddr: 0x4378, symSize: 0x70 }
|
||||
- { offset: 0x5F98, size: 0x8, addend: 0x0, symName: '-[CustomCMGyroData rotationRate]', symObjAddr: 0x3E8, symBinAddr: 0x43E8, symSize: 0x48 }
|
||||
- { offset: 0x5FCF, size: 0x8, addend: 0x0, symName: '-[CustomCMGyroData customRotationRate]', symObjAddr: 0x430, symBinAddr: 0x4430, symSize: 0x40 }
|
||||
- { offset: 0x6006, size: 0x8, addend: 0x0, symName: '-[CustomCMGyroData setCustomRotationRate:]', symObjAddr: 0x470, symBinAddr: 0x4470, symSize: 0x40 }
|
||||
- { offset: 0x6045, size: 0x8, addend: 0x0, symName: __logosLocalCtor_e2ef2056, symObjAddr: 0x4B0, symBinAddr: 0x44B0, symSize: 0xFEC }
|
||||
- { offset: 0x62E8, size: 0x8, addend: 0x0, symName: '__logos_meta_method$ohno$ATTrackingManager$trackingAuthorizationStatus', symObjAddr: 0x149C, symBinAddr: 0x549C, symSize: 0x14C }
|
||||
- { offset: 0x6349, size: 0x8, addend: 0x0, symName: '__logos_meta_method$ohno$ATTrackingManager$requestTrackingAuthorizationWithCompletionHandler$', symObjAddr: 0x15E8, symBinAddr: 0x55E8, symSize: 0x1F0 }
|
||||
- { offset: 0x63B0, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$ASIdentifierManager$advertisingIdentifier', symObjAddr: 0x17D8, symBinAddr: 0x57D8, symSize: 0x198 }
|
||||
- { offset: 0x63F9, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$ASIdentifierManager$isAdvertisingTrackingEnabled', symObjAddr: 0x1970, symBinAddr: 0x5970, symSize: 0x110 }
|
||||
- { offset: 0x6442, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$UIDevice$identifierForVendor', symObjAddr: 0x1A80, symBinAddr: 0x5A80, symSize: 0x198 }
|
||||
- { offset: 0x648B, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$UIDevice$name', symObjAddr: 0x1C18, symBinAddr: 0x5C18, symSize: 0x198 }
|
||||
- { offset: 0x64D4, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$UIDevice$model', symObjAddr: 0x1DB0, symBinAddr: 0x5DB0, symSize: 0x38 }
|
||||
- { offset: 0x650A, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$UIDevice$localizedModel', symObjAddr: 0x1DE8, symBinAddr: 0x5DE8, symSize: 0x38 }
|
||||
- { offset: 0x6540, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$UIDevice$systemName', symObjAddr: 0x1E20, symBinAddr: 0x5E20, symSize: 0x38 }
|
||||
- { offset: 0x6576, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$UIDevice$systemVersion', symObjAddr: 0x1E58, symBinAddr: 0x5E58, symSize: 0x198 }
|
||||
- { offset: 0x65BF, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$UIDevice$batteryState', symObjAddr: 0x1FF0, symBinAddr: 0x5FF0, symSize: 0x10C }
|
||||
- { offset: 0x6608, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$UIDevice$batteryLevel', symObjAddr: 0x20FC, symBinAddr: 0x60FC, symSize: 0x10C }
|
||||
- { offset: 0x6651, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$UIDevice$orientation', symObjAddr: 0x2208, symBinAddr: 0x6208, symSize: 0x18 }
|
||||
- { offset: 0x6687, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$NSProcessInfo$systemUptime', symObjAddr: 0x2220, symBinAddr: 0x6220, symSize: 0x10C }
|
||||
- { offset: 0x66D0, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$NSProcessInfo$physicalMemory', symObjAddr: 0x232C, symBinAddr: 0x632C, symSize: 0x12C }
|
||||
- { offset: 0x6719, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$NSProcessInfo$processorCount', symObjAddr: 0x2458, symBinAddr: 0x6458, symSize: 0x10C }
|
||||
- { offset: 0x6766, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$NSProcessInfo$operatingSystemVersion', symObjAddr: 0x2564, symBinAddr: 0x6564, symSize: 0x644 }
|
||||
- { offset: 0x67F4, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$UIWindow$safeAreaInsets', symObjAddr: 0x2BA8, symBinAddr: 0x6BA8, symSize: 0x230 }
|
||||
- { offset: 0x6842, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$UIScreen$brightness', symObjAddr: 0x2DD8, symBinAddr: 0x6DD8, symSize: 0x10C }
|
||||
- { offset: 0x688F, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$UIScreen$bounds', symObjAddr: 0x2EE4, symBinAddr: 0x6EE4, symSize: 0x148 }
|
||||
- { offset: 0x68DD, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$UIScreen$scale', symObjAddr: 0x302C, symBinAddr: 0x702C, symSize: 0x10C }
|
||||
- { offset: 0x692A, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$UIScreen$nativeBounds', symObjAddr: 0x3138, symBinAddr: 0x7138, symSize: 0x148 }
|
||||
- { offset: 0x6978, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$UIScreen$isCaptured', symObjAddr: 0x3280, symBinAddr: 0x7280, symSize: 0x1C }
|
||||
- { offset: 0x69B1, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$UIScreen$mirroredScreen', symObjAddr: 0x329C, symBinAddr: 0x729C, symSize: 0x18 }
|
||||
- { offset: 0x69EA, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$AVAudioSession$outputVolume', symObjAddr: 0x32B4, symBinAddr: 0x72B4, symSize: 0x10C }
|
||||
- { offset: 0x6A37, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$UIScreenMode$size', symObjAddr: 0x33C0, symBinAddr: 0x73C0, symSize: 0x120 }
|
||||
- { offset: 0x6A85, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$NSFileManager$attributesOfFileSystemForPath$error$', symObjAddr: 0x34E0, symBinAddr: 0x74E0, symSize: 0x28C }
|
||||
- { offset: 0x6B09, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$NSFileManager$fileExistsAtPath$', symObjAddr: 0x376C, symBinAddr: 0x776C, symSize: 0x3BC }
|
||||
- { offset: 0x6B74, size: 0x8, addend: 0x0, symName: '__logos_meta_method$ohno$NSLocale$preferredLanguages', symObjAddr: 0x3B28, symBinAddr: 0x7B28, symSize: 0x8C }
|
||||
- { offset: 0x6BAD, size: 0x8, addend: 0x0, symName: '__logos_meta_method$ohno$NSLocale$currentLocale', symObjAddr: 0x3BB4, symBinAddr: 0x7BB4, symSize: 0x178 }
|
||||
- { offset: 0x6BFA, size: 0x8, addend: 0x0, symName: '__logos_meta_method$ohno$NSLocale$systemLocale', symObjAddr: 0x3D2C, symBinAddr: 0x7D2C, symSize: 0x178 }
|
||||
- { offset: 0x6C47, size: 0x8, addend: 0x0, symName: '__logos_meta_method$ohno$NSTimeZone$localTimeZone', symObjAddr: 0x3EA4, symBinAddr: 0x7EA4, symSize: 0x178 }
|
||||
- { offset: 0x6C94, size: 0x8, addend: 0x0, symName: '__logos_meta_method$ohno$NSTimeZone$systemTimeZone', symObjAddr: 0x401C, symBinAddr: 0x801C, symSize: 0x178 }
|
||||
- { offset: 0x6CE1, size: 0x8, addend: 0x0, symName: '__logos_meta_method$ohno$NSTimeZone$defaultTimeZone', symObjAddr: 0x4194, symBinAddr: 0x8194, symSize: 0x178 }
|
||||
- { offset: 0x6D2E, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$UIStatusBarManager$statusBarFrame', symObjAddr: 0x430C, symBinAddr: 0x830C, symSize: 0x148 }
|
||||
- { offset: 0x6D7C, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$NSMutableURLRequest$initWithURL$', symObjAddr: 0x4454, symBinAddr: 0x8454, symSize: 0x150 }
|
||||
- { offset: 0x6DC4, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$NSMutableURLRequest$setValue$forHTTPHeaderField$', symObjAddr: 0x45A4, symBinAddr: 0x85A4, symSize: 0x1BC }
|
||||
- { offset: 0x6E2C, size: 0x8, addend: 0x0, symName: '__logos_meta_method$ohno$NSURLSession$sessionWithConfiguration$', symObjAddr: 0x4760, symBinAddr: 0x8760, symSize: 0x120 }
|
||||
- { offset: 0x6E74, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$NSURLSession$dataTaskWithRequest$completionHandler$', symObjAddr: 0x4880, symBinAddr: 0x8880, symSize: 0x160 }
|
||||
- { offset: 0x6EDA, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$WKWebView$evaluateJavaScript$completionHandler$', symObjAddr: 0x49E0, symBinAddr: 0x89E0, symSize: 0x21C }
|
||||
- { offset: 0x6F42, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$WKWebView$setCustomUserAgent$', symObjAddr: 0x4BFC, symBinAddr: 0x8BFC, symSize: 0x170 }
|
||||
- { offset: 0x6F9B, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$WKWebView$customUserAgent', symObjAddr: 0x4D6C, symBinAddr: 0x8D6C, symSize: 0x16C }
|
||||
- { offset: 0x6FE8, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$CTTelephonyNetworkInfo$serviceCurrentRadioAccessTechnology', symObjAddr: 0x4ED8, symBinAddr: 0x8ED8, symSize: 0x19C }
|
||||
- { offset: 0x703F, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$CTTelephonyNetworkInfo$serviceSubscriberCellularProviders', symObjAddr: 0x5074, symBinAddr: 0x9074, symSize: 0x19C }
|
||||
- { offset: 0x7096, size: 0x8, addend: 0x0, symName: '__logos_method$ohno$CMMotionManager$startGyroUpdatesToQueue$withHandler$', symObjAddr: 0x5210, symBinAddr: 0x9210, symSize: 0x16C }
|
||||
- { offset: 0x70F8, size: 0x8, addend: 0x0, symName: '__logos_function$ohno$uname', symObjAddr: 0x537C, symBinAddr: 0x937C, symSize: 0xA4 }
|
||||
- { offset: 0x7131, size: 0x8, addend: 0x0, symName: '__logos_function$ohno$sysctl', symObjAddr: 0x5420, symBinAddr: 0x9420, symSize: 0x458 }
|
||||
- { offset: 0x721E, size: 0x8, addend: 0x0, symName: '__logos_function$ohno$sysctlbyname', symObjAddr: 0x5878, symBinAddr: 0x9878, symSize: 0x47C }
|
||||
- { offset: 0x731C, size: 0x8, addend: 0x0, symName: '__logos_function$ohno$clock_gettime', symObjAddr: 0x5CF4, symBinAddr: 0x9CF4, symSize: 0x60 }
|
||||
- { offset: 0x7364, size: 0x8, addend: 0x0, symName: '__logos_function$ohno$getifaddrs', symObjAddr: 0x5D54, symBinAddr: 0x9D54, symSize: 0x6C4 }
|
||||
- { offset: 0x74EA, size: 0x8, addend: 0x0, symName: '__logos_function$ohno$SCNetworkReachabilityGetFlags', symObjAddr: 0x6418, symBinAddr: 0xA418, symSize: 0x88 }
|
||||
- { offset: 0x7532, size: 0x8, addend: 0x0, symName: __logosLocalDtor_9db639d6, symObjAddr: 0x64A0, symBinAddr: 0xA4A0, symSize: 0x2C }
|
||||
- { offset: 0x7576, size: 0x8, addend: 0x0, symName: '____logos_meta_method$ohno$ATTrackingManager$trackingAuthorizationStatus_block_invoke', symObjAddr: 0x64CC, symBinAddr: 0xA4CC, symSize: 0x84 }
|
||||
- { offset: 0x75C3, size: 0x8, addend: 0x0, symName: ___copy_helper_block_e8_32r, symObjAddr: 0x6550, symBinAddr: 0xA550, symSize: 0x3C }
|
||||
- { offset: 0x75E7, size: 0x8, addend: 0x0, symName: ___destroy_helper_block_e8_32r, symObjAddr: 0x658C, symBinAddr: 0xA58C, symSize: 0x30 }
|
||||
- { offset: 0x7603, size: 0x8, addend: 0x0, symName: '____logos_meta_method$ohno$ATTrackingManager$requestTrackingAuthorizationWithCompletionHandler$_block_invoke', symObjAddr: 0x65BC, symBinAddr: 0xA5BC, symSize: 0x84 }
|
||||
- { offset: 0x7650, size: 0x8, addend: 0x0, symName: '____logos_meta_method$ohno$ATTrackingManager$requestTrackingAuthorizationWithCompletionHandler$_block_invoke_2', symObjAddr: 0x6640, symBinAddr: 0xA640, symSize: 0x60 }
|
||||
- { offset: 0x76A0, size: 0x8, addend: 0x0, symName: ___copy_helper_block_e8_32b40r, symObjAddr: 0x66A0, symBinAddr: 0xA6A0, symSize: 0x5C }
|
||||
- { offset: 0x76C4, size: 0x8, addend: 0x0, symName: ___destroy_helper_block_e8_32s40r, symObjAddr: 0x66FC, symBinAddr: 0xA6FC, symSize: 0x44 }
|
||||
- { offset: 0x76E0, size: 0x8, addend: 0x0, symName: ___Block_byref_object_copy_, symObjAddr: 0x6740, symBinAddr: 0xA740, symSize: 0x58 }
|
||||
- { offset: 0x7704, size: 0x8, addend: 0x0, symName: ___Block_byref_object_dispose_, symObjAddr: 0x6798, symBinAddr: 0xA798, symSize: 0x30 }
|
||||
- { offset: 0x7720, size: 0x8, addend: 0x0, symName: '____logos_method$ohno$ASIdentifierManager$advertisingIdentifier_block_invoke', symObjAddr: 0x67C8, symBinAddr: 0xA7C8, symSize: 0x84 }
|
||||
- { offset: 0x776D, size: 0x8, addend: 0x0, symName: '____logos_method$ohno$ASIdentifierManager$isAdvertisingTrackingEnabled_block_invoke', symObjAddr: 0x684C, symBinAddr: 0xA84C, symSize: 0xA0 }
|
||||
- { offset: 0x77D6, size: 0x8, addend: 0x0, symName: '____logos_method$ohno$UIDevice$identifierForVendor_block_invoke', symObjAddr: 0x68EC, symBinAddr: 0xA8EC, symSize: 0x84 }
|
||||
- { offset: 0x7823, size: 0x8, addend: 0x0, symName: '____logos_method$ohno$UIDevice$name_block_invoke', symObjAddr: 0x6970, symBinAddr: 0xA970, symSize: 0x68 }
|
||||
- { offset: 0x7870, size: 0x8, addend: 0x0, symName: '____logos_method$ohno$UIDevice$systemVersion_block_invoke', symObjAddr: 0x69D8, symBinAddr: 0xA9D8, symSize: 0x68 }
|
||||
- { offset: 0x78BD, size: 0x8, addend: 0x0, symName: '____logos_method$ohno$UIDevice$batteryState_block_invoke', symObjAddr: 0x6A40, symBinAddr: 0xAA40, symSize: 0x74 }
|
||||
- { offset: 0x7926, size: 0x8, addend: 0x0, symName: '____logos_method$ohno$UIDevice$batteryLevel_block_invoke', symObjAddr: 0x6AB4, symBinAddr: 0xAAB4, symSize: 0x68 }
|
||||
- { offset: 0x7973, size: 0x8, addend: 0x0, symName: '____logos_method$ohno$NSProcessInfo$systemUptime_block_invoke', symObjAddr: 0x6B1C, symBinAddr: 0xAB1C, symSize: 0x8C }
|
||||
- { offset: 0x79DC, size: 0x8, addend: 0x0, symName: '____logos_method$ohno$NSProcessInfo$physicalMemory_block_invoke', symObjAddr: 0x6BA8, symBinAddr: 0xABA8, symSize: 0x78 }
|
||||
- { offset: 0x7A45, size: 0x8, addend: 0x0, symName: '____logos_method$ohno$NSProcessInfo$processorCount_block_invoke', symObjAddr: 0x6C20, symBinAddr: 0xAC20, symSize: 0x78 }
|
||||
- { offset: 0x7AB3, size: 0x8, addend: 0x0, symName: '____logos_method$ohno$NSProcessInfo$operatingSystemVersion_block_invoke', symObjAddr: 0x6C98, symBinAddr: 0xAC98, symSize: 0x68 }
|
||||
- { offset: 0x7B04, size: 0x8, addend: 0x0, symName: '____logos_method$ohno$UIWindow$safeAreaInsets_block_invoke', symObjAddr: 0x6D00, symBinAddr: 0xAD00, symSize: 0x164 }
|
||||
- { offset: 0x7B81, size: 0x8, addend: 0x0, symName: _UIEdgeInsetsMake, symObjAddr: 0x6E64, symBinAddr: 0xAE64, symSize: 0x4C }
|
||||
- { offset: 0x7BE1, size: 0x8, addend: 0x0, symName: '____logos_method$ohno$UIScreen$brightness_block_invoke', symObjAddr: 0x6EB0, symBinAddr: 0xAEB0, symSize: 0x7C }
|
||||
- { offset: 0x7C4F, size: 0x8, addend: 0x0, symName: '____logos_method$ohno$UIScreen$bounds_block_invoke', symObjAddr: 0x6F2C, symBinAddr: 0xAF2C, symSize: 0x130 }
|
||||
- { offset: 0x7CEB, size: 0x8, addend: 0x0, symName: '____logos_method$ohno$UIScreen$scale_block_invoke', symObjAddr: 0x705C, symBinAddr: 0xB05C, symSize: 0x7C }
|
||||
- { offset: 0x7D59, size: 0x8, addend: 0x0, symName: '____logos_method$ohno$UIScreen$nativeBounds_block_invoke', symObjAddr: 0x70D8, symBinAddr: 0xB0D8, symSize: 0x130 }
|
||||
- { offset: 0x7DF5, size: 0x8, addend: 0x0, symName: '____logos_method$ohno$AVAudioSession$outputVolume_block_invoke', symObjAddr: 0x7208, symBinAddr: 0xB208, symSize: 0x7C }
|
||||
- { offset: 0x7E63, size: 0x8, addend: 0x0, symName: '____logos_method$ohno$UIScreenMode$size_block_invoke', symObjAddr: 0x7284, symBinAddr: 0xB284, symSize: 0x11C }
|
||||
- { offset: 0x7EFE, size: 0x8, addend: 0x0, symName: '____logos_method$ohno$NSFileManager$attributesOfFileSystemForPath$error$_block_invoke', symObjAddr: 0x73A0, symBinAddr: 0xB3A0, symSize: 0xB4 }
|
||||
- { offset: 0x7F66, size: 0x8, addend: 0x0, symName: ___copy_helper_block_e8_32s, symObjAddr: 0x7454, symBinAddr: 0xB454, symSize: 0x3C }
|
||||
- { offset: 0x7F8A, size: 0x8, addend: 0x0, symName: ___destroy_helper_block_e8_32s, symObjAddr: 0x7490, symBinAddr: 0xB490, symSize: 0x30 }
|
||||
- { offset: 0x7FA6, size: 0x8, addend: 0x0, symName: '____logos_method$ohno$NSFileManager$attributesOfFileSystemForPath$error$_block_invoke.315', symObjAddr: 0x74C0, symBinAddr: 0xB4C0, symSize: 0xB4 }
|
||||
- { offset: 0x800E, size: 0x8, addend: 0x0, symName: '____logos_method$ohno$NSFileManager$fileExistsAtPath$_block_invoke', symObjAddr: 0x7574, symBinAddr: 0xB574, symSize: 0xA0 }
|
||||
- { offset: 0x8098, size: 0x8, addend: 0x0, symName: '____logos_meta_method$ohno$NSLocale$currentLocale_block_invoke', symObjAddr: 0x7614, symBinAddr: 0xB614, symSize: 0xB4 }
|
||||
- { offset: 0x8106, size: 0x8, addend: 0x0, symName: '____logos_meta_method$ohno$NSLocale$systemLocale_block_invoke', symObjAddr: 0x76C8, symBinAddr: 0xB6C8, symSize: 0xB4 }
|
||||
- { offset: 0x8174, size: 0x8, addend: 0x0, symName: '____logos_meta_method$ohno$NSTimeZone$localTimeZone_block_invoke', symObjAddr: 0x777C, symBinAddr: 0xB77C, symSize: 0xB8 }
|
||||
- { offset: 0x81E2, size: 0x8, addend: 0x0, symName: '____logos_meta_method$ohno$NSTimeZone$systemTimeZone_block_invoke', symObjAddr: 0x7834, symBinAddr: 0xB834, symSize: 0xB8 }
|
||||
- { offset: 0x8250, size: 0x8, addend: 0x0, symName: '____logos_meta_method$ohno$NSTimeZone$defaultTimeZone_block_invoke', symObjAddr: 0x78EC, symBinAddr: 0xB8EC, symSize: 0xB8 }
|
||||
- { offset: 0x82BE, size: 0x8, addend: 0x0, symName: '____logos_method$ohno$UIStatusBarManager$statusBarFrame_block_invoke', symObjAddr: 0x79A4, symBinAddr: 0xB9A4, symSize: 0xE4 }
|
||||
- { offset: 0x834A, size: 0x8, addend: 0x0, symName: '____logos_method$ohno$NSMutableURLRequest$initWithURL$_block_invoke', symObjAddr: 0x7A88, symBinAddr: 0xBA88, symSize: 0x6C }
|
||||
- { offset: 0x8395, size: 0x8, addend: 0x0, symName: '____logos_method$ohno$NSMutableURLRequest$setValue$forHTTPHeaderField$_block_invoke', symObjAddr: 0x7AF4, symBinAddr: 0xBAF4, symSize: 0x68 }
|
||||
- { offset: 0x83E6, size: 0x8, addend: 0x0, symName: '____logos_meta_method$ohno$NSURLSession$sessionWithConfiguration$_block_invoke', symObjAddr: 0x7B5C, symBinAddr: 0xBB5C, symSize: 0xE0 }
|
||||
- { offset: 0x8431, size: 0x8, addend: 0x0, symName: '____logos_method$ohno$NSURLSession$dataTaskWithRequest$completionHandler$_block_invoke', symObjAddr: 0x7C3C, symBinAddr: 0xBC3C, symSize: 0x6C }
|
||||
- { offset: 0x847C, size: 0x8, addend: 0x0, symName: '____logos_method$ohno$WKWebView$evaluateJavaScript$completionHandler$_block_invoke', symObjAddr: 0x7CA8, symBinAddr: 0xBCA8, symSize: 0x68 }
|
||||
- { offset: 0x84CD, size: 0x8, addend: 0x0, symName: '____logos_method$ohno$WKWebView$setCustomUserAgent$_block_invoke', symObjAddr: 0x7D10, symBinAddr: 0xBD10, symSize: 0x68 }
|
||||
- { offset: 0x851E, size: 0x8, addend: 0x0, symName: '____logos_method$ohno$WKWebView$customUserAgent_block_invoke', symObjAddr: 0x7D78, symBinAddr: 0xBD78, symSize: 0x68 }
|
||||
- { offset: 0x856F, size: 0x8, addend: 0x0, symName: '____logos_method$ohno$CTTelephonyNetworkInfo$serviceCurrentRadioAccessTechnology_block_invoke', symObjAddr: 0x7DE0, symBinAddr: 0xBDE0, symSize: 0x26C }
|
||||
- { offset: 0x8617, size: 0x8, addend: 0x0, symName: '____logos_method$ohno$CTTelephonyNetworkInfo$serviceSubscriberCellularProviders_block_invoke', symObjAddr: 0x804C, symBinAddr: 0xC04C, symSize: 0x370 }
|
||||
- { offset: 0x86BF, size: 0x8, addend: 0x0, symName: '____logos_method$ohno$CMMotionManager$startGyroUpdatesToQueue$withHandler$_block_invoke', symObjAddr: 0x83BC, symBinAddr: 0xC3BC, symSize: 0x164 }
|
||||
- { offset: 0x8764, size: 0x8, addend: 0x0, symName: ___copy_helper_block_e8_32b, symObjAddr: 0x8520, symBinAddr: 0xC520, symSize: 0x3C }
|
||||
- { offset: 0x8788, size: 0x8, addend: 0x0, symName: _randomRadiansPerSecond, symObjAddr: 0x855C, symBinAddr: 0xC55C, symSize: 0x48 }
|
||||
- { offset: 0x87B2, size: 0x8, addend: 0x0, symName: '____logos_function$ohno$uname_block_invoke', symObjAddr: 0x85A4, symBinAddr: 0xC5A4, symSize: 0xB4 }
|
||||
- { offset: 0x881B, size: 0x8, addend: 0x0, symName: '____logos_function$ohno$sysctl_block_invoke', symObjAddr: 0x8658, symBinAddr: 0xC658, symSize: 0x7C }
|
||||
- { offset: 0x8883, size: 0x8, addend: 0x0, symName: '____logos_function$ohno$sysctl_block_invoke_2', symObjAddr: 0x86D4, symBinAddr: 0xC6D4, symSize: 0x6C }
|
||||
- { offset: 0x88D4, size: 0x8, addend: 0x0, symName: '____logos_function$ohno$sysctlbyname_block_invoke', symObjAddr: 0x8740, symBinAddr: 0xC740, symSize: 0xC4 }
|
||||
- { offset: 0x893A, size: 0x8, addend: 0x0, symName: '____logos_function$ohno$sysctlbyname_block_invoke_2', symObjAddr: 0x8804, symBinAddr: 0xC804, symSize: 0xC4 }
|
||||
- { offset: 0x89A0, size: 0x8, addend: 0x0, symName: '____logos_function$ohno$getifaddrs_block_invoke', symObjAddr: 0x88C8, symBinAddr: 0xC8C8, symSize: 0x90 }
|
||||
- { offset: 0x89F1, size: 0x8, addend: 0x0, symName: _modifyInterfaceIP, symObjAddr: 0x8958, symBinAddr: 0xC958, symSize: 0x170 }
|
||||
- { offset: 0x8A84, size: 0x8, addend: 0x0, symName: _createInterface, symObjAddr: 0x8AC8, symBinAddr: 0xCAC8, symSize: 0x3F8 }
|
||||
- { offset: 0x8B2D, size: 0x8, addend: 0x0, symName: '__logos_function$ohno$UIAccessibilityIsClosedCaptioningEnabled', symObjAddr: 0x8EC0, symBinAddr: 0xCEC0, symSize: 0xC }
|
||||
- { offset: 0x8B47, size: 0x8, addend: 0x0, symName: '__logos_function$ohno$UIAccessibilityIsMonoAudioEnabled', symObjAddr: 0x8ECC, symBinAddr: 0xCECC, symSize: 0xC }
|
||||
- { offset: 0x8B61, size: 0x8, addend: 0x0, symName: _cleanup, symObjAddr: 0x8ED8, symBinAddr: 0xCED8, symSize: 0x3C }
|
||||
- { offset: 0x8B77, size: 0x8, addend: 0x0, symName: ___GLOBAL_init_65535, symObjAddr: 0x94F0, symBinAddr: 0xCF14, symSize: 0x34 }
|
||||
...
|
||||
|
||||
@ -1 +1 @@
|
||||
117
|
||||
68
|
||||
@ -10,7 +10,7 @@ TWEAK_NAME = AppRunMan
|
||||
|
||||
AppRunMan_FRAMEWORKS = CoreLocation CFNetwork CoreTelephony Security UIKit IOSurface JavaScriptCore network
|
||||
AppRunMan_PRIVATE_FRAMEWORKS = IOKit
|
||||
AppRunMan_FILES = Tweak.x XSLog.m $(wildcard server/*.m) $(wildcard server/GCD/*.m)
|
||||
AppRunMan_FILES = Tweak.x $(wildcard server/*.m) $(wildcard server/GCD/*.m)
|
||||
AppRunMan_LDFLAGS = -v
|
||||
AppRunMan_CFLAGS = -Wno-error -Wno-module-import-in-extern-c -fobjc-arc
|
||||
|
||||
|
||||
@ -4,28 +4,13 @@
|
||||
#import <SpringBoard/SBApplication.h>
|
||||
#import <SpringBoard/SBWorkspace.h>
|
||||
#import <SpringBoard/SBApplicationController.h>
|
||||
#import <unistd.h> // 为了 getpid()
|
||||
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
#import <objc/runtime.h>
|
||||
|
||||
#import "server/MySimpleServer.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)
|
||||
@end
|
||||
@ -50,6 +35,8 @@ static void startServerOnce(void) {
|
||||
objc_setAssociatedObject(self, @selector(addFloatingWindow), floatingWindow, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@end
|
||||
|
||||
%group all
|
||||
@ -60,18 +47,17 @@ static void startServerOnce(void) {
|
||||
{
|
||||
%orig;
|
||||
|
||||
// 延迟启动服务器,让系统UI完全加载
|
||||
// 延迟启动服务器,让系统UI完全加载
|
||||
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)),
|
||||
dispatch_get_main_queue(), ^{
|
||||
// 改为一次性启动
|
||||
startServerOnce();
|
||||
startSimpleServer();
|
||||
});
|
||||
|
||||
@autoreleasepool {
|
||||
// 延迟添加悬浮窗,给系统UI足够的启动时间
|
||||
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2 * NSEC_PER_SEC)),
|
||||
dispatch_get_main_queue(), ^{
|
||||
// 添加保护机制
|
||||
@autoreleasepool {
|
||||
// 延迟添加悬浮窗,给系统UI足够的启动时间
|
||||
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2 * NSEC_PER_SEC)),
|
||||
dispatch_get_main_queue(), ^{
|
||||
// 添加保护机制
|
||||
@try {
|
||||
if (@available(iOS 13.0, *)) {
|
||||
// iOS 13+ 使用 UIWindowScene
|
||||
@ -109,6 +95,7 @@ static void startServerOnce(void) {
|
||||
// 清理悬浮窗
|
||||
}
|
||||
|
||||
|
||||
%end
|
||||
|
||||
/*
|
||||
@ -122,16 +109,15 @@ static void startServerOnce(void) {
|
||||
return dict;
|
||||
}
|
||||
|
||||
|
||||
%end
|
||||
*/
|
||||
|
||||
|
||||
%end
|
||||
|
||||
%ctor {
|
||||
// 使用一次性保护,避免 dylib 被重复装载时重复执行
|
||||
static dispatch_once_t onceToken;
|
||||
dispatch_once(&onceToken, ^{
|
||||
NSLog(@"[AppRunMan] %ctor init (pid=%d)", getpid());
|
||||
%init(all);
|
||||
});
|
||||
|
||||
%ctor{
|
||||
NSLog(@"start app server");
|
||||
%init(all);
|
||||
}
|
||||
@ -1,22 +0,0 @@
|
||||
#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
|
||||
@ -1,162 +0,0 @@
|
||||
#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]);
|
||||
});
|
||||
}
|
||||
@ -16,9 +16,6 @@
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
@interface FloatingWindow () {
|
||||
NSMutableArray *loadTimestamps;
|
||||
NSMutableArray *showTimestamps;
|
||||
NSTimer *updateTimer;
|
||||
}
|
||||
|
||||
@end
|
||||
@ -41,7 +38,7 @@
|
||||
action:@selector(detectPan:)];
|
||||
[self addGestureRecognizer:panRecognizer];
|
||||
|
||||
self.backgroundColor = [UIColor grayColor]; // 默认灰色背景
|
||||
self.backgroundColor = RGB(193, 41, 48); // RGB(85, 172, 119);
|
||||
self.layer.cornerRadius = 10;
|
||||
self.clipsToBounds = YES;
|
||||
|
||||
@ -49,145 +46,12 @@
|
||||
[self updateInfo];
|
||||
self.http = [[XSHttpHelper alloc] init];
|
||||
[[MyEventBus sharedInstance] registerSubscriber:self];
|
||||
|
||||
loadTimestamps = [[NSMutableArray alloc] init];
|
||||
showTimestamps = [[NSMutableArray alloc] init];
|
||||
|
||||
[self startUpdatingCounts]; // 启动定时任务
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
- (void)dealloc {
|
||||
[[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 {
|
||||
@ -266,6 +130,48 @@
|
||||
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 {
|
||||
__weak typeof(self) weakSelf = self;
|
||||
|
||||
@ -23,8 +23,4 @@
|
||||
|
||||
+(instancetype)sharedInstance;
|
||||
|
||||
- (BOOL)isHeartbeatActive;
|
||||
- (void)restartHeartbeat;
|
||||
- (void)stopHeartbeat;
|
||||
|
||||
@end
|
||||
|
||||
@ -93,22 +93,6 @@
|
||||
dispatch_resume(_timer);
|
||||
}
|
||||
|
||||
- (BOOL)isHeartbeatActive {
|
||||
// 检查心跳是否处于活动状态
|
||||
return _timer != nil;
|
||||
}
|
||||
|
||||
- (void)restartHeartbeat {
|
||||
// 重新启动心跳
|
||||
[self stopHeartbeat];
|
||||
[self start];
|
||||
}
|
||||
|
||||
- (void)stopHeartbeat {
|
||||
// 停止心跳
|
||||
[self stop];
|
||||
}
|
||||
|
||||
- (void) checkxxx {
|
||||
NSDate *last = [[XSPhoneConfig sharedInstance] GetLastOverTime];
|
||||
NSDate *date2 = [NSDate date];
|
||||
@ -124,23 +108,35 @@
|
||||
}
|
||||
|
||||
|
||||
- (void)ping {
|
||||
- (void) ping {
|
||||
@try {
|
||||
if (!self->iphone || !self->http) return;
|
||||
|
||||
NSString *server = self->iphone.MainServerURL;
|
||||
NSString *server = self->iphone.ServerURL;
|
||||
if (!server.length) {
|
||||
NSLog(@"Invalid server URL");
|
||||
return;
|
||||
}
|
||||
|
||||
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:@"运行中"]) {
|
||||
self->lastStop = [NSDate date];
|
||||
}
|
||||
@ -150,31 +146,53 @@
|
||||
NSTimeInterval elapsed = [curRunTime timeIntervalSinceDate:self->lastStop];
|
||||
if (elapsed > 60 * 10 && !myadTaskManualStop) {
|
||||
self->lastStop = [NSDate date];
|
||||
dispatch_async(self->_workQueue, ^{
|
||||
dispatch_async(_workQueue, ^{
|
||||
[[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];
|
||||
if (!heartbeatData) {
|
||||
NSLog(@"Failed to construct heartbeat data");
|
||||
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 checkAndPerformTasks];
|
||||
|
||||
} @catch (NSException *exception) {
|
||||
NSLog(@"XS- app run man ping error: %@", exception);
|
||||
} @finally {
|
||||
NSLog(@"XS- ping end");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
- (void)sendHeartbeat:(NSDictionary *)data toURL:(NSString *)url {
|
||||
@ -184,7 +202,7 @@
|
||||
NSLog(@"Heartbeat success: %@", json);
|
||||
NSDictionary *dic = [XSHelper json2Dictionary:json];
|
||||
NSDictionary *json_data = dic[@"data"];
|
||||
// [[MyEventBus sharedInstance] postEvent:@"UpdateInfo" withObject:json_data];
|
||||
[[MyEventBus sharedInstance] postEvent:@"UpdateInfo" withObject:json_data];
|
||||
} else {
|
||||
NSLog(@"Empty heartbeat response");
|
||||
}
|
||||
|
||||
@ -47,10 +47,10 @@
|
||||
}
|
||||
|
||||
- (NSString *)cmdUrl {
|
||||
return [NSString stringWithFormat:@"%@%@", _config.MainServerURL, CMD];
|
||||
return [NSString stringWithFormat:@"%@%@", _config.ServerURL, CMD];
|
||||
}
|
||||
- (NSString *)cmdResUrl {
|
||||
return [NSString stringWithFormat:@"%@%@", _config.MainServerURL, CMD_RES];
|
||||
return [NSString stringWithFormat:@"%@%@", _config.ServerURL, CMD_RES];
|
||||
}
|
||||
|
||||
- (void) start {
|
||||
@ -113,60 +113,54 @@
|
||||
|
||||
}
|
||||
|
||||
- (void)executeTask:(NSDictionary *)dic {
|
||||
if (!dic || ![dic objectForKey:@"cmd"]) {
|
||||
NSLog(@"Invalid task dictionary");
|
||||
return;
|
||||
}
|
||||
NSString *cmd = dic[@"cmd"];
|
||||
NSString *taskId = dic[@"taskId"];
|
||||
if (!cmd || !taskId) {
|
||||
NSLog(@"Missing command or taskId");
|
||||
return;
|
||||
}
|
||||
if ([cmd isEqual:@"EDIT_NAME"]) {
|
||||
[self executeEditName:taskId data:dic[@"cmdData"]];
|
||||
return;
|
||||
}
|
||||
if ([cmd isEqual:@"UPLOAD_APPS"]) {
|
||||
[self executeUploadApps:taskId data:dic[@"cmdData"]];
|
||||
return;
|
||||
}
|
||||
if ([cmd isEqual:@"START"]) {
|
||||
[self executeStart:taskId data:dic[@"cmdData"]];
|
||||
return;
|
||||
}
|
||||
if ([cmd isEqual:@"STOP"]) {
|
||||
[self executeStop:taskId data:dic[@"cmdData"]];
|
||||
return;
|
||||
}
|
||||
if ([cmd isEqual:@"SCREENSHOT"]) {
|
||||
[self executeScreenshot:taskId data:dic[@"cmdData"]];
|
||||
return;
|
||||
}
|
||||
if ([cmd isEqual:@"UNLOCK"]) {
|
||||
[self executeUnlock:taskId data:dic[@"cmdData"]];
|
||||
return;
|
||||
}
|
||||
if ([cmd isEqual:@"RESTART_SYSTEM"]) {
|
||||
[self executeRestart:taskId data:dic[@"cmdData"]];
|
||||
return;
|
||||
}
|
||||
if ([cmd isEqual:@"RESTART"]) {
|
||||
[self executeReboot:taskId data:dic[@"cmdData"]];
|
||||
return;
|
||||
}
|
||||
if ([cmd isEqual:@"TOUCH"]) {
|
||||
[self executeTouch:taskId data:dic[@"cmdData"]];
|
||||
return;
|
||||
}
|
||||
if ([cmd isEqual:@"KEY"]) {
|
||||
[self executeKey:taskId data:dic[@"cmdData"]];
|
||||
return;
|
||||
}
|
||||
if ([cmd isEqual:@"UPDATE_KEY"]) {
|
||||
[self executeUpdateKey:taskId data:dic[@"cmdData"]];
|
||||
return;
|
||||
- (void) executeTask: (NSDictionary*)dic {
|
||||
if ([dic objectForKey:@"cmd"]) {
|
||||
NSString *cmd = dic[@"cmd"];
|
||||
NSString *taskId = dic[@"taskId"];
|
||||
if ([cmd isEqual:@"EDIT_NAME"]) {
|
||||
[self executeEditName:taskId data:dic[@"cmdData"]];
|
||||
return;
|
||||
}
|
||||
if ([cmd isEqual:@"UPLOAD_APPS"]) {
|
||||
[self executeUploadApps:taskId data:dic[@"cmdData"]];
|
||||
return;
|
||||
}
|
||||
if ([cmd isEqual:@"START"]) {
|
||||
[self executeStart:taskId data:dic[@"cmdData"]];
|
||||
return;
|
||||
}
|
||||
if ([cmd isEqual:@"STOP"]) {
|
||||
[self executeStop:taskId data:dic[@"cmdData"]];
|
||||
return;
|
||||
}
|
||||
if ([cmd isEqual:@"SCREENSHOT"]) {
|
||||
[self executeScreenshot:taskId data:dic[@"cmdData"]];
|
||||
return;
|
||||
}
|
||||
if ([cmd isEqual:@"UNLOCK"]) {
|
||||
[self executeUnlock:taskId data:dic[@"cmdData"]];
|
||||
return;
|
||||
}
|
||||
if ([cmd isEqual:@"RESTART_SYSTEM"]) {
|
||||
[self executeRestart:taskId data:dic[@"cmdData"]];
|
||||
return;
|
||||
}
|
||||
if ([cmd isEqual:@"RESTART"]) {
|
||||
[self executeReboot:taskId data:dic[@"cmdData"]];
|
||||
return;
|
||||
}
|
||||
if ([cmd isEqual:@"TOUCH"]) {
|
||||
[self executeTouch:taskId data:dic[@"cmdData"]];
|
||||
return;
|
||||
}
|
||||
if ([cmd isEqual:@"KEY"]) {
|
||||
[self executeKey:taskId data:dic[@"cmdData"]];
|
||||
return;
|
||||
}
|
||||
if ([cmd isEqual:@"UPDATE_KEY"]) {
|
||||
[self executeUpdateKey:taskId data:dic[@"cmdData"]];
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -14,6 +14,8 @@
|
||||
#import "XSPhoneConfig.h"
|
||||
#import "XSPhoneInfo.h"
|
||||
|
||||
|
||||
|
||||
void pushAdTaskLog(AdTaskLogData *data) {
|
||||
NSDictionary *dic = @{
|
||||
@"taskId": data->taskId,
|
||||
@ -86,69 +88,31 @@ BOOL needAdContinue(NSString *appid, NSString *idfa, NSNumber *maxEcpm) {
|
||||
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];
|
||||
NSString *url = [config GetFullServerURL:@"ios/top_selection/get_change_data_json"];
|
||||
NSString *url = [config GetFullServerURL:[NSString stringWithFormat:@"ios/top_selection/get_change_data?id=%@&idfa=%@", [config IPhoneName], idfa ?: @""]];
|
||||
XSHttpHelper *http = [[XSHttpHelper alloc] init];
|
||||
NSDictionary *dic = @{
|
||||
@"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;
|
||||
}
|
||||
|
||||
[http doGET:url withCallback:^(NSData *jsonData) {
|
||||
NSDictionary *data = [NSJSONSerialization JSONObjectWithData:jsonData options:0 error:nil];
|
||||
if (data && [data objectForKey:@"data"]) {
|
||||
NSDictionary *_data = data[@"data"];
|
||||
if (_data && ![_data isEqual:[NSNull null]]) {
|
||||
NSLog(@"getChangeInfo: Successfully received data");
|
||||
if(_data && ![_data isEqual:[NSNull null]]) {
|
||||
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 {
|
||||
NSLog(@"getChangeInfo: No 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);
|
||||
});
|
||||
if(errorCallback) {
|
||||
errorCallback(nil);
|
||||
}
|
||||
|
||||
}
|
||||
} withError:^(NSError *err) {
|
||||
NSLog(@"getChangeInfo error: %@, retrying... (%d retries left)", err, retryCount - 1);
|
||||
// 添加延迟重试
|
||||
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
|
||||
getChangeInfoWithRetry(idfa, callback, errorCallback, retryCount - 1);
|
||||
});
|
||||
NSLog(@"XS- log- get data: %@", err);
|
||||
if(errorCallback) {
|
||||
errorCallback(err);
|
||||
}
|
||||
}];
|
||||
}
|
||||
|
||||
// 包装函数,默认重试 3 次
|
||||
void getChangeInfo(NSString *idfa, ChangeDataSaveCallback callback, error_callback errorCallback) {
|
||||
getChangeInfoWithRetry(idfa, callback, errorCallback, 3);
|
||||
}
|
||||
|
||||
void _newgetChangeInfo(NSString *idfa, ChangeDataSaveCallback callback, error_callback errorCallback) {
|
||||
@ -179,111 +143,63 @@ void _newgetChangeInfo(NSString *idfa, ChangeDataSaveCallback callback, error_ca
|
||||
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) {
|
||||
if (!data || ![data isKindOfClass:[NSDictionary class]]) {
|
||||
NSLog(@"[saveChangeDataFile] Invalid data input: %@", data);
|
||||
NSLog(@"Invalid data input");
|
||||
return NO;
|
||||
}
|
||||
|
||||
__block BOOL result = NO;
|
||||
__block NSError *writeError = nil;
|
||||
|
||||
dispatch_sync(XSFileIOQueue(), ^{
|
||||
@try {
|
||||
NSString *jsonPath = @"/var/mobile/Documents/changeapp.json";
|
||||
NSString *dirPath = [jsonPath stringByDeletingLastPathComponent];
|
||||
|
||||
NSError *dirErr = nil;
|
||||
if (![[NSFileManager defaultManager] fileExistsAtPath:dirPath]) {
|
||||
[[NSFileManager defaultManager] createDirectoryAtPath:dirPath
|
||||
withIntermediateDirectories:YES
|
||||
attributes:@{NSFileProtectionKey: NSFileProtectionNone}
|
||||
error:&dirErr];
|
||||
if (dirErr) {
|
||||
NSLog(@"[saveChangeDataFile] Failed to create directory %@, error: %@", dirPath, dirErr);
|
||||
return;
|
||||
|
||||
@try {
|
||||
NSString *bundleId = @"org.xyzshell.NotNil";
|
||||
NSString *plistPath = [NSString stringWithFormat:@"/var/mobile/Library/Preferences/%@.plist", bundleId];
|
||||
|
||||
// 使用同步锁保证线程安全
|
||||
@synchronized(NSFileManager.defaultManager) {
|
||||
NSMutableDictionary *tempDic = [NSMutableDictionary new];
|
||||
|
||||
// 安全地遍历字典
|
||||
[data enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
|
||||
if (![key isKindOfClass:[NSString class]]) return;
|
||||
|
||||
if (obj == [NSNull null]) {
|
||||
tempDic[key] = nil;
|
||||
} else if ([obj isKindOfClass:[NSDictionary class]]) {
|
||||
NSMutableDictionary *newDic = [NSMutableDictionary new];
|
||||
[(NSDictionary *)obj enumerateKeysAndObjectsUsingBlock:^(id key1, id obj1, BOOL *stop1) {
|
||||
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);
|
||||
if (!filtered || ![NSJSONSerialization isValidJSONObject:filtered]) {
|
||||
NSLog(@"[saveChangeDataFile] JSON object invalid after filtering: %@", filtered);
|
||||
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;
|
||||
|
||||
// 写入文件
|
||||
BOOL y = [tempDic writeToFile:plistPath atomically:YES];
|
||||
NSLog(@"XS- save change file: %@", @(y));
|
||||
return y;
|
||||
}
|
||||
});
|
||||
|
||||
if (writeError) {
|
||||
NSLog(@"[saveChangeDataFile] Write error: %@", writeError);
|
||||
} @catch (NSException *exception) {
|
||||
NSLog(@"Error saving change data: %@", exception);
|
||||
return NO;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
AdLoadInfo getAdLoadInfo(NSDictionary *request) {
|
||||
@ -415,6 +331,7 @@ void logMessage(NSString *message) {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void uncaughtExceptionHandler(NSException *exception) {
|
||||
NSArray *callStack = [exception callStackSymbols];
|
||||
NSString *reason = [exception reason];
|
||||
@ -431,7 +348,6 @@ void uncaughtExceptionHandler(NSException *exception) {
|
||||
}
|
||||
|
||||
void signalHandler(int signal) {
|
||||
/*
|
||||
NSMutableString *crashLog = [NSMutableString string];
|
||||
[crashLog appendFormat:@"Signal %d was raised.\n", signal];
|
||||
|
||||
@ -445,19 +361,11 @@ void signalHandler(int signal) {
|
||||
|
||||
free(strs);
|
||||
|
||||
NSLog(@"SpringBoard crash:%@", 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);
|
||||
|
||||
NSLog(@"Crash: %@", crashLog);
|
||||
logMessage(crashLog);
|
||||
// 这里你可以将崩溃信息保存到文件或发送到服务器
|
||||
|
||||
// pushIphoneLog(crashLog);
|
||||
|
||||
pushIphoneLog(crashLog);
|
||||
}
|
||||
|
||||
void registerSignalHandler(void) {
|
||||
|
||||
@ -29,12 +29,8 @@ BOOL myadTaskManualStop = NO;
|
||||
NSString *dataId;
|
||||
NSString *remoteIp;
|
||||
NSString *country;
|
||||
dispatch_source_t _appendCheckTimer; // 新增定时器
|
||||
|
||||
}
|
||||
|
||||
@property (nonatomic, assign) NSTimeInterval lastAppSwitchTime; // 新增属性
|
||||
|
||||
@end
|
||||
|
||||
@implementation MyAdTask2Mangger
|
||||
@ -59,7 +55,6 @@ BOOL myadTaskManualStop = NO;
|
||||
self->screen_w = device_screen_width;
|
||||
self->screen_h = device_screen_height;
|
||||
self->adAfter = 1000;
|
||||
self.lastAppSwitchTime = 0; // 初始化为0
|
||||
return self;
|
||||
}
|
||||
return nil;
|
||||
@ -109,7 +104,7 @@ BOOL myadTaskManualStop = NO;
|
||||
__weak typeof(self) weakSelf = self;
|
||||
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(beforeSec * NSEC_PER_SEC)),
|
||||
self.manQueue, ^{
|
||||
|
||||
[weakSelf touchAppTask:0];
|
||||
});
|
||||
}
|
||||
return close;
|
||||
@ -120,15 +115,7 @@ BOOL myadTaskManualStop = NO;
|
||||
}
|
||||
|
||||
- (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/";
|
||||
if (!url) {
|
||||
NSLog(@"Invalid URL for remote info");
|
||||
return;
|
||||
}
|
||||
XSHttpHelper *http = [[XSHttpHelper alloc] init];
|
||||
__weak typeof(self) weakSelf = self;
|
||||
[http doGET:url withCallback:^(NSData *data) {
|
||||
@ -145,10 +132,6 @@ BOOL myadTaskManualStop = NO;
|
||||
}
|
||||
NSString *isoCode = dic[@"country_code"];
|
||||
NSString *ip = dic[@"ip"];
|
||||
if (!isoCode || !ip) {
|
||||
NSLog(@"Invalid data received for remote info");
|
||||
return;
|
||||
}
|
||||
|
||||
__strong typeof(weakSelf) strongSelf = weakSelf;
|
||||
if (!strongSelf) return;
|
||||
@ -208,76 +191,55 @@ BOOL myadTaskManualStop = NO;
|
||||
}];
|
||||
}
|
||||
|
||||
// 新增方法:检查并处理 append 文件
|
||||
- (void)checkAppendFile {
|
||||
NSString *appendDirPath = @"/var/mobile/Documents/ad/append";
|
||||
NSFileManager *fileManager = [NSFileManager defaultManager];
|
||||
BOOL isDir = NO;
|
||||
if ([fileManager fileExistsAtPath:appendDirPath isDirectory:&isDir] && isDir) {
|
||||
NSArray *files = [fileManager contentsOfDirectoryAtPath:appendDirPath error:nil];
|
||||
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];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
- (BOOL)onEnd:(NSDictionary *)dic {
|
||||
@autoreleasepool {
|
||||
if (self->taskAppId) {
|
||||
[self appKill:self->taskAppId];
|
||||
}
|
||||
[self startApp];
|
||||
NSNumber *maxEcpm = dic[@"max_ecpm"];
|
||||
int sec = self->adAfter / 1000;
|
||||
__weak typeof(self) weakSelf = self;
|
||||
if([maxEcpm doubleValue] <= 0.0) {
|
||||
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, sec * NSEC_PER_SEC), self.manQueue, ^{
|
||||
@autoreleasepool {
|
||||
[weakSelf startApp];
|
||||
}
|
||||
});
|
||||
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];
|
||||
}
|
||||
});
|
||||
return NO;
|
||||
}
|
||||
|
||||
- (void)startApp {
|
||||
@autoreleasepool {
|
||||
if (!self->running) {
|
||||
if(!self->running){
|
||||
return;
|
||||
}
|
||||
self->lastRun = [NSDate date];
|
||||
|
||||
NSDate *startTime = [NSDate date];
|
||||
NSLog(@"getChangeInfo started at: %@", startTime);
|
||||
__weak typeof(self) weakSelf = self;
|
||||
getChangeInfo(self->_lastIdfa ?: @"", ^(NSDictionary *dic) {
|
||||
if (!dic) {
|
||||
NSLog(@"getChangeInfo returned nil dictionary");
|
||||
return;
|
||||
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 *endTime = [NSDate date];
|
||||
NSTimeInterval duration = [endTime timeIntervalSinceDate:startTime];
|
||||
NSLog(@"getChangeInfo completed at: %@, duration: %.2f seconds", endTime, duration);
|
||||
}
|
||||
|
||||
__weak typeof(self) weakSelf = self;
|
||||
getChangeInfo(self->_lastIdfa, ^(NSDictionary *dic) {
|
||||
dispatch_async(weakSelf.manQueue, ^{
|
||||
[weakSelf onChangeInfo:dic];
|
||||
});
|
||||
}, ^(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);
|
||||
[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];
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
@ -288,38 +250,17 @@ BOOL myadTaskManualStop = NO;
|
||||
[[IPhoneHertbeat sharedInstance] setStatus:@"运行中"];
|
||||
[self startApp];
|
||||
__weak typeof(self) weakSelf = self;
|
||||
// 确保Timer在重新启动前被取消
|
||||
if (_timer) {
|
||||
dispatch_source_cancel(_timer);
|
||||
_timer = nil;
|
||||
}
|
||||
// 使用 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];
|
||||
|
||||
if (!_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];
|
||||
}
|
||||
}
|
||||
});
|
||||
dispatch_resume(_timer);
|
||||
|
||||
// 新增定时器,每秒检查 append 文件
|
||||
if (_appendCheckTimer) {
|
||||
dispatch_source_cancel(_appendCheckTimer);
|
||||
_appendCheckTimer = nil;
|
||||
});
|
||||
dispatch_resume(_timer);
|
||||
}
|
||||
_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)];
|
||||
}
|
||||
|
||||
@ -331,25 +272,25 @@ BOOL myadTaskManualStop = NO;
|
||||
NSLog(@"XS- MyAdTaskManager proc");
|
||||
NSDate* curRunTime = [NSDate date];
|
||||
NSTimeInterval elapsed = [curRunTime timeIntervalSinceDate:self->lastRun];
|
||||
BOOL washParam = [[XSPhoneConfig sharedInstance] WashParam];
|
||||
if (elapsed >= 80) {
|
||||
//[self onStop];
|
||||
[self startApp];
|
||||
|
||||
if (elapsed >= 100) {
|
||||
[self start];
|
||||
} else {
|
||||
NSString* appId = [self frontMostAppId];
|
||||
|
||||
}
|
||||
if (!washParam) {
|
||||
NSString* appId = [ self frontMostAppId];
|
||||
|
||||
if (![appId isEqual: self->taskAppId]) {
|
||||
// 引入冷却时间,避免频繁切换应用
|
||||
if (![appId isEqual:self->taskAppId]) {
|
||||
[self appKill:appId];
|
||||
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), self.manQueue, ^{
|
||||
[self appRun:self->taskAppId];
|
||||
self.lastAppSwitchTime = [NSDate timeIntervalSinceReferenceDate]; // 更新切换时间
|
||||
|
||||
// ⭐️ 修复: 先转为strong再使用
|
||||
__weak typeof(self) weakSelf = self;
|
||||
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 {
|
||||
@ -369,50 +310,9 @@ BOOL myadTaskManualStop = NO;
|
||||
dispatch_source_cancel(_timer);
|
||||
_timer = nil;
|
||||
}
|
||||
// 停止 append 文件定时器
|
||||
if (_appendCheckTimer) {
|
||||
dispatch_source_cancel(_appendCheckTimer);
|
||||
_appendCheckTimer = nil;
|
||||
}
|
||||
|
||||
[[IPhoneHertbeat sharedInstance] stopHeartbeat]; // 确保心跳停止
|
||||
[[MyEventBus sharedInstance] postEvent:@"UpdateRunStatus" withObject:@(NO)];
|
||||
}
|
||||
|
||||
- (NSString *)getSystemInfo {
|
||||
void *buffer = NULL;
|
||||
NSString *result = nil;
|
||||
|
||||
// 设置 sysctl 的 mib 参数
|
||||
// 0x100000006LL 拆分为两个 int: {6, 1}
|
||||
// 高32位是1 (0x1), 低32位是6 (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 {
|
||||
NSString* t_idfa = [self getStr:@"idfa" dic:dic];
|
||||
if (![XSHelper strIsEmpty:t_idfa]) {
|
||||
@ -447,27 +347,36 @@ BOOL myadTaskManualStop = NO;
|
||||
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;
|
||||
[self restart:^{
|
||||
__strong typeof(weakSelf) strongSelf = weakSelf;
|
||||
if (!strongSelf) return;
|
||||
|
||||
void (^saveBlock)(void) = ^{
|
||||
if (saveChangeDataFile(dic)) {
|
||||
// 成功,执行后续流程
|
||||
strongSelf->running = YES;
|
||||
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 0.1 * NSEC_PER_SEC),
|
||||
strongSelf.manQueue, ^{
|
||||
__strong typeof(weakSelf) strongSelf2 = weakSelf;
|
||||
if (!strongSelf2) return;
|
||||
[strongSelf2 appRun:strongSelf2->taskAppId];
|
||||
});
|
||||
} else {
|
||||
NSLog(@"XS- saveChangeDataFile failed");
|
||||
}
|
||||
};
|
||||
saveBlock();
|
||||
saveChangeDataFile(dic);
|
||||
strongSelf->running = YES;
|
||||
|
||||
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];
|
||||
});
|
||||
}];
|
||||
}
|
||||
|
||||
@ -495,38 +404,45 @@ BOOL myadTaskManualStop = NO;
|
||||
tempBfaceDictKey = [[NSMutableDictionary alloc] init];
|
||||
}
|
||||
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:@(washParam) forKey:@"washParam"];
|
||||
// [tempBfaceDictKey setValue:lowEcpm forKey:@"adbrush_ecpm"];
|
||||
if(self->linkId) {
|
||||
[tempBfaceDictKey setValue:self->linkId forKey:@"linkId"];
|
||||
} else {
|
||||
NSString *linkId = [[NSUUID UUID] UUIDString];
|
||||
[tempBfaceDictKey setValue:linkId forKey:@"linkId"];
|
||||
}
|
||||
|
||||
if(self->dataId) {
|
||||
[tempBfaceDictKey setValue:self->dataId forKey:@"dataId"];
|
||||
} else {
|
||||
[tempBfaceDictKey setValue:@"0" forKey:@"dataId"];
|
||||
}
|
||||
if(self->remoteIp) {
|
||||
[tempBfaceDictKey setValue:self->remoteIp forKey:@"remoteIp"];
|
||||
}
|
||||
uint16_t udp_port = [XUDPServer sharedInstance].udp_port;
|
||||
[tempBfaceDictKey setValue:@(udp_port) forKey:@"udp_port"];
|
||||
[tempBfaceDictKey setValue:[self getSystemInfo] forKey:@"device_model"];
|
||||
|
||||
NSLog(@"XS- resetApp 1");
|
||||
NSMutableDictionary *tempAppInfo = [[NSMutableDictionary alloc] init];
|
||||
[tempAppInfo setValue:tempBfaceDictKey forKey:@"bfaceDictKey"];
|
||||
|
||||
XSClearAll(appId);
|
||||
|
||||
XSSaveAppInfo(tempAppInfo, appInfoPath);
|
||||
callback();
|
||||
|
||||
__weak typeof(self) weakSelf = self;
|
||||
getLowEcpm(^(NSNumber *lowEcpm) {
|
||||
__strong typeof(weakSelf) strongSelf = weakSelf;
|
||||
if (!strongSelf) return;
|
||||
|
||||
BOOL washParam = strongSelf->workType == 0 ? YES : NO;
|
||||
[tempBfaceDictKey setValue:@(washParam) forKey:@"washParam"];
|
||||
[tempBfaceDictKey setValue:lowEcpm forKey:@"adbrush_ecpm"];
|
||||
if(strongSelf->linkId) {
|
||||
[tempBfaceDictKey setValue:strongSelf->linkId forKey:@"linkId"];
|
||||
} else {
|
||||
NSString *linkId = [[NSUUID UUID] UUIDString];
|
||||
[tempBfaceDictKey setValue:linkId forKey:@"linkId"];
|
||||
}
|
||||
|
||||
if(strongSelf->dataId) {
|
||||
[tempBfaceDictKey setValue:strongSelf->dataId forKey:@"dataId"];
|
||||
} else {
|
||||
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");
|
||||
NSMutableDictionary *tempAppInfo = [[NSMutableDictionary alloc] init];
|
||||
[tempAppInfo setValue:tempBfaceDictKey forKey:@"bfaceDictKey"];
|
||||
|
||||
XSClearAll(appId);
|
||||
|
||||
XSSaveAppInfo(tempAppInfo, appInfoPath);
|
||||
callback();
|
||||
});
|
||||
}
|
||||
|
||||
- (NSString *)frontMostAppId {
|
||||
@ -545,38 +461,99 @@ BOOL myadTaskManualStop = NO;
|
||||
});
|
||||
}
|
||||
|
||||
- (void)tap:(int)i x:(int)x y:(int)y {
|
||||
}
|
||||
|
||||
- (void)restart:(OnEndCallback)callback {
|
||||
@synchronized (self) {
|
||||
__weak typeof(self) weakSelf = self;
|
||||
dispatch_async(self.manQueue, ^{
|
||||
@try {
|
||||
__strong typeof(weakSelf) strongSelf = weakSelf;
|
||||
if (!strongSelf) return;
|
||||
|
||||
[weakSelf appKill:@"com.apple.AppStore"];
|
||||
[weakSelf appKill:@"com.apple.mobilesafari"];
|
||||
if (strongSelf->taskAppId && ![strongSelf->taskAppId isEqual:[NSNull null]] && [strongSelf->taskAppId length] > 0) {
|
||||
[weakSelf appKill:strongSelf->taskAppId];
|
||||
__weak typeof(self) weakSelf = self;
|
||||
dispatch_async(self.manQueue, ^{
|
||||
@try {
|
||||
__strong typeof(weakSelf) strongSelf = weakSelf;
|
||||
if (!strongSelf) return;
|
||||
|
||||
[weakSelf appKill:@"com.apple.AppStore"];
|
||||
[weakSelf appKill:@"com.apple.mobilesafari"];
|
||||
if (strongSelf->taskAppId && ![strongSelf->taskAppId isEqual:[NSNull null]] && [strongSelf->taskAppId length] > 0) {
|
||||
[weakSelf appKill:strongSelf->taskAppId];
|
||||
[weakSelf unlock];
|
||||
|
||||
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 1 * NSEC_PER_SEC),
|
||||
strongSelf.manQueue, ^{
|
||||
[weakSelf unlock];
|
||||
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);
|
||||
[weakSelf resetApp:strongSelf->taskAppId callback:callback];
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
} @catch (NSException *exception) {
|
||||
NSLog(@"Error in restart: %@", exception);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
- (void)rndTouchApp {
|
||||
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 {
|
||||
NSLog(@"getStr: %@", key);
|
||||
|
||||
@ -35,21 +35,34 @@ void startSimpleServer(void) {
|
||||
// 在主队列初始化关键服务
|
||||
dispatch_async(dispatch_get_main_queue(), ^{
|
||||
[[IPhoneHertbeat sharedInstance] start];
|
||||
// [[IosSystemCmd sharedInstance] start];
|
||||
[[IosSystemCmd sharedInstance] start];
|
||||
});
|
||||
|
||||
// 在服务器队列中处理服务器相关操作
|
||||
dispatch_async(serverQueue, ^{
|
||||
@autoreleasepool {
|
||||
@autoreleasepool {
|
||||
// 初始化发送者ID
|
||||
// 启动日志
|
||||
pushIphoneLog(@"on start simple server!!!");
|
||||
|
||||
|
||||
|
||||
// 完成日志
|
||||
pushIphoneLog(@"on start simple server -ok");
|
||||
|
||||
// 服务器端
|
||||
// MessagePortServer *server = [[MessagePortServer alloc] init];
|
||||
// [server startServer];
|
||||
XUDPServer *udpserver = [XUDPServer sharedInstance];
|
||||
[udpserver start];
|
||||
// 移除显式运行NSRunLoop,让GCDAsyncUdpSocket在自己的队列中管理
|
||||
// NSRunLoop *runLoop = [NSRunLoop currentRunLoop];
|
||||
// [runLoop addPort:[NSPort port] forMode:NSDefaultRunLoopMode];
|
||||
// [runLoop run];
|
||||
// 创建运行循环
|
||||
NSRunLoop *runLoop = [NSRunLoop currentRunLoop];
|
||||
|
||||
// 添加一个端口来保持运行循环活跃
|
||||
[runLoop addPort:[NSPort port] forMode:NSDefaultRunLoopMode];
|
||||
|
||||
// 运行循环
|
||||
[runLoop run];
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
@ -9,7 +9,6 @@
|
||||
#import "XSHelper.h"
|
||||
#import "XSHackIos.h"
|
||||
#import "MyAdTask2.h"
|
||||
#import "MyEventBus.h"
|
||||
|
||||
#import "UDPHandler.h"
|
||||
|
||||
@ -69,12 +68,10 @@
|
||||
return [XSHelper dic2Json:resData];
|
||||
}
|
||||
else if([XSHelper isMatch:@"^/adtask/show" test:path]) {
|
||||
|
||||
[[MyEventBus sharedInstance] postEvent:@"Show" withObject:nil];
|
||||
return [XSHelper dic2Json:resData];
|
||||
}
|
||||
else if([XSHelper isMatch:@"^/adtask/load" test:path]) {
|
||||
[[MyEventBus sharedInstance] postEvent:@"Load" withObject:nil];
|
||||
MyAdTask2Mangger *ad = [MyAdTask2Mangger sharedInstance];
|
||||
NSDictionary *rq = dic[@"body"];
|
||||
int close = [ad onShow:rq];
|
||||
[resData setValue:@(close) forKey:@"close"];
|
||||
return [XSHelper dic2Json:resData];
|
||||
}
|
||||
else if([XSHelper isMatch:@"^/adtask/end" test:path]) {
|
||||
|
||||
@ -22,27 +22,44 @@
|
||||
/**
|
||||
获取当前应用
|
||||
*/
|
||||
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;
|
||||
NSLog(@"XS- getFrontMostApplication");
|
||||
|
||||
dispatch_semaphore_t semaphore = dispatch_semaphore_create(0);
|
||||
dispatch_async(dispatch_get_main_queue(), ^{
|
||||
@try {
|
||||
dispatch_sync(dispatch_get_main_queue(), ^{
|
||||
@try{
|
||||
|
||||
SpringBoard *springboard = (SpringBoard *)[UIApplication sharedApplication];
|
||||
//SpringBoard *springboard = (SpringBoard*)[%c(SpringBoard) sharedApplication];
|
||||
if ([springboard respondsToSelector:@selector(_accessibilityFrontMostApplication)]) {
|
||||
app = [springboard _accessibilityFrontMostApplication];
|
||||
app = [springboard performSelector:@selector(_accessibilityFrontMostApplication)];
|
||||
NSLog(@"XS- Simulated home button press, %@", app);
|
||||
}
|
||||
} @catch (NSException *exception) {
|
||||
NSLog(@"XS- Debug: %@", exception.reason);
|
||||
// app = [springboard _accessibilityFrontMostApplication];
|
||||
//NSLog(@"com.zjx.springboard: app: %@, id: %@", app, [app displayIdentifier]);
|
||||
|
||||
}
|
||||
@catch (NSException *exception) {
|
||||
NSLog(@"XS-: Debug: %@", exception.reason);
|
||||
}
|
||||
dispatch_semaphore_signal(semaphore);
|
||||
});
|
||||
});
|
||||
// 设置超时时间为5秒
|
||||
dispatch_time_t timeout = dispatch_time(DISPATCH_TIME_NOW, 5 * NSEC_PER_SEC);
|
||||
|
||||
if (dispatch_semaphore_wait(semaphore, dispatch_time(DISPATCH_TIME_NOW, 5 * NSEC_PER_SEC)) != 0) {
|
||||
NSLog(@"XSGetFrontMostApplication timeout");
|
||||
// 等待信号量,最多等待5秒
|
||||
long result = dispatch_semaphore_wait(semaphore, timeout);
|
||||
|
||||
if (result == 0) {
|
||||
// 在超时之前收到了信号
|
||||
NSLog(@"XSGetFrontMostApplication end");
|
||||
} else {
|
||||
// 超时
|
||||
NSLog(@"XSGetFrontMostApplication 等待超时");
|
||||
}
|
||||
|
||||
|
||||
return app;
|
||||
}
|
||||
|
||||
@ -172,27 +189,9 @@ int kill2(NSString *appexe) {
|
||||
}
|
||||
|
||||
|
||||
int XSKillAppByName(NSString *pkgName) {
|
||||
NSString *appexe = XSGetAppExecutable(pkgName);
|
||||
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;
|
||||
int XSKillAppByName(NSString *pkgName){
|
||||
NSString* appexe = XSGetAppExecutable(pkgName);
|
||||
return kill2(appexe);
|
||||
}
|
||||
|
||||
|
||||
@ -691,31 +690,45 @@ void XSCleanSafari(void) {
|
||||
void XSCleanKeychain(void) {
|
||||
NSFileManager* man = [NSFileManager defaultManager];
|
||||
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/");
|
||||
sqlite3* ppDb = NULL;
|
||||
sqlite3* ppDb;
|
||||
char cmd[256];
|
||||
int rc = sqlite3_open("/tmp/keychain-2.db", &ppDb);
|
||||
if (rc == SQLITE_OK && ppDb) {
|
||||
if (0 == sqlite3_open("/tmp/keychain-2.db", &ppDb)) {
|
||||
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);
|
||||
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);
|
||||
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);
|
||||
|
||||
// 关键:关闭数据库,释放 /private/var/tmp/keychain-2.db 句柄
|
||||
sqlite3_close(ppDb);
|
||||
ppDb = NULL;
|
||||
|
||||
/*
|
||||
char *cmds1[] = {
|
||||
cpCmd,
|
||||
"/tmp/keychain-2.*",
|
||||
"/var/Keychains/",
|
||||
NULL
|
||||
};
|
||||
*/
|
||||
//XSRuncmd(cmds1);
|
||||
|
||||
XSSystem("cp /tmp/keychain-2.* /var/Keychains/");
|
||||
} else {
|
||||
// 打开失败也要确保关闭
|
||||
if (ppDb) {
|
||||
sqlite3_close(ppDb);
|
||||
ppDb = NULL;
|
||||
}
|
||||
NSLog(@"XSCleanKeychain: sqlite3_open failed: %d", rc);
|
||||
}
|
||||
//free(cpCmd);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1165,69 +1178,63 @@ BOOL verifyEntitlement(NSString *entitlementName) {
|
||||
}
|
||||
|
||||
|
||||
pid_t system2(const char *command, int *infp, int *outfp) {
|
||||
if (!command || strlen(command) == 0) {
|
||||
NSLog(@"system2: Invalid command");
|
||||
return -1;
|
||||
}
|
||||
|
||||
pid_t system2(const char * command, int * infp, int * outfp)
|
||||
{
|
||||
int p_stdin[2];
|
||||
int p_stdout[2];
|
||||
pid_t pid;
|
||||
|
||||
if (pipe(p_stdin) == -1) {
|
||||
NSLog(@"system2: Failed to create stdin pipe: %s", strerror(errno));
|
||||
if (pipe(p_stdin) == -1)
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
if (pipe(p_stdout) == -1) {
|
||||
NSLog(@"system2: Failed to create stdout pipe: %s", strerror(errno));
|
||||
close(p_stdin[0]);
|
||||
close(p_stdin[1]);
|
||||
return -1;
|
||||
}
|
||||
|
||||
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]);
|
||||
pid = fork();
|
||||
|
||||
char *argv[] = {"/bin/sh", "-c", (char *)command, NULL};
|
||||
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);
|
||||
if (pid < 0) {
|
||||
close(p_stdin[0]);
|
||||
close(p_stdin[1]);
|
||||
close(p_stdout[0]);
|
||||
return -1;
|
||||
}
|
||||
|
||||
// 返回父进程需要的文件描述符
|
||||
if (infp) {
|
||||
*infp = p_stdin[1]; // 父进程写入到子进程的stdin
|
||||
} else {
|
||||
close(p_stdout[1]);
|
||||
return pid;
|
||||
} else if (pid == 0) {
|
||||
close(p_stdin[1]);
|
||||
}
|
||||
|
||||
if (outfp) {
|
||||
*outfp = p_stdout[0]; // 父进程从子进程的stdout读取
|
||||
} else {
|
||||
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);
|
||||
}
|
||||
|
||||
if (pid > 0) {
|
||||
int status = 0;
|
||||
waitpid(pid, &status, 0);
|
||||
}
|
||||
close(p_stdin[0]);
|
||||
close(p_stdout[1]);
|
||||
|
||||
if (infp == NULL) {
|
||||
close(p_stdin[1]);
|
||||
} else {
|
||||
*infp = p_stdin[1];
|
||||
}
|
||||
|
||||
if (outfp == NULL) {
|
||||
close(p_stdout[0]);
|
||||
} else {
|
||||
*outfp = p_stdout[0];
|
||||
}
|
||||
|
||||
if (pid > 0)
|
||||
{
|
||||
waitpid(pid, NULL, 0);
|
||||
}
|
||||
return pid;
|
||||
}
|
||||
|
||||
|
||||
@ -18,15 +18,11 @@ typedef void (^rt_str_callback)(NSString*);
|
||||
// @property (nonatomic, strong) NSURLSession *session;
|
||||
@property (nonatomic, strong) NSURLSessionDataTask *dataTask;
|
||||
@property (nonatomic, strong) NSURLSessionDataTask *postDataTask;
|
||||
@property (nonatomic, assign) NSTimeInterval timeoutInterval; // 新增超时属性
|
||||
|
||||
- (void) doGET: (NSString*) urlStr withCallback:(request_callback) callback withError: (error_callback) errorCallback;
|
||||
- (NSData *) doGET: (NSString*) urlStr;
|
||||
- (void) doPOST: (NSString*) urlStr json: (NSString *)json withCallback:(request_callback) callback withError: (error_callback) errorCallback;
|
||||
- (NSData*) doPOST:(NSString *)urlStr json:(NSString *)json;
|
||||
- (void)cancelAllRequests; // 新增取消所有请求方法
|
||||
- (void)cancelCurrentGETRequest; // 新增取消当前GET请求方法
|
||||
- (void)cancelCurrentPOSTRequest; // 新增取消当前POST请求方法
|
||||
- (void)requestNetworkPermissions;
|
||||
@end
|
||||
|
||||
|
||||
@ -55,8 +55,6 @@ didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge
|
||||
-(instancetype)init {
|
||||
if (self = [super init]) {
|
||||
apikey = [[XSPhoneConfig sharedInstance] ApiKey];
|
||||
self.timeoutInterval = 15.0; // 默认超时时间15秒
|
||||
// 移除重用 session 的创建
|
||||
return self;
|
||||
}
|
||||
return nil;
|
||||
@ -71,16 +69,11 @@ didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge
|
||||
NSURL *url = [NSURL URLWithString:urlStr];
|
||||
|
||||
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url
|
||||
cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:self.timeoutInterval];
|
||||
cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:5];
|
||||
[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
|
||||
[request setValue:self->apikey forHTTPHeaderField:@"apikey"];
|
||||
|
||||
// 每次请求创建新 session
|
||||
NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];
|
||||
configuration.timeoutIntervalForRequest = self.timeoutInterval;
|
||||
configuration.timeoutIntervalForResource = self.timeoutInterval;
|
||||
NSURLSession *session = [NSURLSession sessionWithConfiguration:configuration delegate:[[SSLBypassDelegate alloc] init] delegateQueue:nil];
|
||||
|
||||
NSURLSession *session = [NSURLSession sessionWithoutSSLValidation];// [NSURLSession sharedSession];
|
||||
self.dataTask = [session dataTaskWithRequest:request
|
||||
completionHandler:^(NSData *data, NSURLResponse *response, NSError *error)
|
||||
{
|
||||
@ -99,6 +92,7 @@ didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge
|
||||
NSLog(@"XS- http get exception error,%@", exception);
|
||||
errorCallback(XSErrorFromException(exception));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
- (NSData *) doGET: (NSString*) urlStr {
|
||||
@ -110,10 +104,10 @@ didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge
|
||||
} withError:^(NSError *err) {
|
||||
dispatch_semaphore_signal(semaphore);
|
||||
}];
|
||||
// 设置超时时间为self.timeoutInterval
|
||||
dispatch_time_t timeout = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(self.timeoutInterval * NSEC_PER_SEC));
|
||||
// 设置超时时间为5秒
|
||||
dispatch_time_t timeout = dispatch_time(DISPATCH_TIME_NOW, 5 * NSEC_PER_SEC);
|
||||
|
||||
// 等待信号量
|
||||
// 等待信号量,最多等待5秒
|
||||
long result = dispatch_semaphore_wait(semaphore, timeout);
|
||||
|
||||
if (result == 0) {
|
||||
@ -122,8 +116,6 @@ didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge
|
||||
} else {
|
||||
// 超时
|
||||
NSLog(@"doGET 等待超时");
|
||||
// 取消请求,避免资源浪费
|
||||
[self.dataTask cancel];
|
||||
}
|
||||
return _data;
|
||||
}
|
||||
@ -132,8 +124,7 @@ didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge
|
||||
@try {
|
||||
NSLog(@"XS- doPOST:%@", urlStr);
|
||||
NSURL *url = [NSURL URLWithString:urlStr];
|
||||
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url
|
||||
cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:self.timeoutInterval]; // 统一超时设置
|
||||
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
|
||||
[request setHTTPMethod:@"POST"];
|
||||
|
||||
// 设置请求头
|
||||
@ -144,11 +135,7 @@ didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge
|
||||
NSData *bodyData = [XSHelper str2Data:json];
|
||||
[request setHTTPBody:bodyData];
|
||||
|
||||
// 每次请求创建新 session
|
||||
NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];
|
||||
configuration.timeoutIntervalForRequest = self.timeoutInterval;
|
||||
configuration.timeoutIntervalForResource = self.timeoutInterval;
|
||||
NSURLSession *session = [NSURLSession sessionWithConfiguration:configuration delegate:[[SSLBypassDelegate alloc] init] delegateQueue:nil];
|
||||
NSURLSession *session = [NSURLSession sessionWithoutSSLValidation];//[NSURLSession sharedSession];
|
||||
|
||||
self.postDataTask = [session dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
|
||||
if (error) {
|
||||
@ -176,10 +163,10 @@ didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge
|
||||
} withError:^(NSError *err) {
|
||||
dispatch_semaphore_signal(semaphore);
|
||||
}];
|
||||
// 设置超时时间为self.timeoutInterval
|
||||
dispatch_time_t timeout = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(self.timeoutInterval * NSEC_PER_SEC));
|
||||
// 设置超时时间为5秒
|
||||
dispatch_time_t timeout = dispatch_time(DISPATCH_TIME_NOW, 5 * NSEC_PER_SEC);
|
||||
|
||||
// 等待信号量
|
||||
// 等待信号量,最多等待5秒
|
||||
long result = dispatch_semaphore_wait(semaphore, timeout);
|
||||
|
||||
if (result == 0) {
|
||||
@ -188,8 +175,6 @@ didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge
|
||||
} else {
|
||||
// 超时
|
||||
NSLog(@"do POST 等待超时");
|
||||
// 取消请求,避免资源浪费
|
||||
[self.postDataTask cancel];
|
||||
}
|
||||
return _data;
|
||||
}
|
||||
@ -218,21 +203,4 @@ 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
|
||||
|
||||
@ -38,9 +38,6 @@
|
||||
|
||||
- (void) reLoad;
|
||||
|
||||
- (NSString *) PackageName;
|
||||
- (BOOL) WashParam;
|
||||
|
||||
@end
|
||||
|
||||
|
||||
|
||||
@ -197,18 +197,6 @@ static NSString *_configPath = @"/User/OhNoData/config001.plist";
|
||||
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 *res = [self GetMyConfigStrVal:@"deviceId" defVal:@""];
|
||||
if (res.length == 0) {
|
||||
@ -226,7 +214,9 @@ static NSString *_configPath = @"/User/OhNoData/config001.plist";
|
||||
}
|
||||
|
||||
- (NSString *)MainServerURL {
|
||||
return [self GetMyConfigStrVal:@"MainServerURL" defVal:@"http://192.168.40.8:8080"];
|
||||
return [self GetMyConfigStrVal:@"ServerURL" defVal:@"http://192.168.40.8:8080"];
|
||||
//return [self GetMyConfigStrVal:@"MainServerURL" defVal:@"http://172.30.8.111:8100"];
|
||||
|
||||
}
|
||||
|
||||
- (NSString *)ServerURL {
|
||||
|
||||
@ -492,7 +492,7 @@
|
||||
|
||||
- (void)scheduleRestart {
|
||||
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(5.0 * NSEC_PER_SEC)),
|
||||
self->serverQueue, ^{ // 这里改为 serverQueue
|
||||
serverQueue, ^{
|
||||
[self start];
|
||||
});
|
||||
}
|
||||
|
||||
87
batch_ssh.sh
87
batch_ssh.sh
@ -1,87 +0,0 @@
|
||||
#!/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"
|
||||
@ -1,41 +0,0 @@
|
||||
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)
|
||||
@ -14,7 +14,7 @@ TWEAK_NAME = OhNo
|
||||
|
||||
|
||||
OhNo_FRAMEWORKS = CoreLocation CFNetwork CoreTelephony Security
|
||||
OhNo_FILES = Tweak.x XSLog.m XHookSettingsManager.m
|
||||
OhNo_FILES = Tweak.x $(wildcard server/*.m) $(wildcard server/Core/*.m)
|
||||
OhNo_CFLAGS = -Wno-error -Wno-module-import-in-extern-c -fobjc-arc
|
||||
|
||||
|
||||
|
||||
28
ios-change-info/MyTweak.h
Normal file
28
ios-change-info/MyTweak.h
Normal file
@ -0,0 +1,28 @@
|
||||
#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
@ -1,70 +0,0 @@
|
||||
//
|
||||
// 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]
|
||||
|
||||
@ -1,232 +0,0 @@
|
||||
//
|
||||
// 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
|
||||
|
||||
@ -1,22 +0,0 @@
|
||||
#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
|
||||
@ -1,162 +0,0 @@
|
||||
#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
30
ips.txt
@ -1,20 +1,10 @@
|
||||
172.30.8.124
|
||||
172.29.109.24
|
||||
172.30.8.125
|
||||
172.29.109.32
|
||||
172.29.109.11
|
||||
172.29.109.16
|
||||
172.29.108.16
|
||||
172.29.109.31
|
||||
172.29.109.14
|
||||
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
|
||||
192.168.1.15
|
||||
192.168.1.19
|
||||
192.168.1.18
|
||||
192.168.1.20
|
||||
192.168.1.11
|
||||
192.168.1.21
|
||||
192.168.1.14
|
||||
192.168.1.16
|
||||
192.168.1.13
|
||||
192.168.1.17
|
||||
@ -1,22 +0,0 @@
|
||||
<?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>
|
||||
@ -1,62 +0,0 @@
|
||||
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
42
myssh.sh
@ -1,42 +0,0 @@
|
||||
#!/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"
|
||||
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.
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.
@ -1,9 +0,0 @@
|
||||
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
23
testudp.py
@ -1,23 +0,0 @@
|
||||
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)
|
||||
|
||||
@ -1,42 +0,0 @@
|
||||
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)
|
||||
Loading…
Reference in New Issue
Block a user