#import "uYouPlus.h" typedef struct { int version; NSString *appVersion; } VersionMapping; static VersionMapping versionMappings[] = { {0, @"21.08.3"}, {1, @"21.07.4"}, {2, @"21.06.2"}, {3, @"21.05.3"}, {4, @"21.04.2"}, {5, @"21.03.2"}, {6, @"21.02.3"}, {7, @"20.50.10"}, {8, @"20.50.9"}, {9, @"20.50.6"}, {10, @"20.49.5"}, {11, @"20.47.3"}, {12, @"20.46.3"}, {13, @"20.46.2"}, {14, @"20.45.3"}, {15, @"20.44.2"}, {16, @"20.43.3"}, {17, @"20.42.3"}, {18, @"20.41.5"}, {19, @"20.41.4"}, {20, @"20.40.4"}, {21, @"20.39.6"}, {22, @"20.39.5"}, {23, @"20.39.4"}, {24, @"20.38.4"}, {25, @"20.38.3"}, {26, @"20.37.5"}, {27, @"20.37.3"}, {28, @"20.36.3"}, {29, @"20.35.2"}, {30, @"20.34.2"}, {31, @"20.33.2"}, {32, @"20.32.5"}, {33, @"20.32.4"}, {34, @"20.31.6"}, {35, @"20.31.5"}, {36, @"20.30.5"}, {37, @"20.29.3"}, {38, @"20.28.2"}, {39, @"20.26.7"}, {40, @"20.25.4"}, {41, @"20.24.5"}, {42, @"20.24.4"}, {43, @"20.23.3"}, {44, @"20.22.1"}, {45, @"20.21.6"}, {46, @"20.20.7"}, {47, @"20.20.5"}, {48, @"20.19.3"}, {49, @"20.19.2"}, {50, @"20.18.5"}, {51, @"20.18.4"}, {52, @"20.16.7"}, {53, @"20.15.1"}, {54, @"20.14.2"}, {55, @"20.13.5"}, {56, @"20.12.4"}, {57, @"20.11.6"}, {58, @"20.10.4"}, {59, @"20.10.3"}, {60, @"20.09.3"}, {61, @"20.08.3"}, {62, @"20.07.6"}, {63, @"20.06.03"}, {64, @"20.05.4"}, {65, @"20.03.1"}, {66, @"20.03.02"}, {67, @"20.02.3"}, {68, @"19.49.7"}, {69, @"19.49.5"}, {70, @"19.49.3"}, {71, @"19.47.7"}, {72, @"19.46.3"}, {73, @"19.45.4"}, {74, @"19.44.4"}, {75, @"19.43.2"}, {76, @"19.42.1"}, {77, @"19.41.3"}, {78, @"19.40.4"}, {79, @"19.39.1"}, {80, @"19.38.2"}, {81, @"19.37.2"}, {82, @"19.36.1"}, {83, @"19.35.3"}, {84, @"19.34.2"}, {85, @"19.33.2"}, {86, @"19.32.8"}, {87, @"19.32.6"}, {88, @"19.31.4"}, {89, @"19.30.2"}, {90, @"19.29.1"}, {91, @"19.28.1"}, {92, @"19.26.5"}, {93, @"19.25.4"}, {94, @"19.25.3"}, {95, @"19.24.3"}, {96, @"19.24.2"}, {97, @"19.23.3"}, {98, @"19.22.6"}, {99, @"19.22.3"}, {100, @"19.21.3"}, {101, @"19.21.2"}, {102, @"19.20.2"}, {103, @"19.19.7"}, {104, @"19.19.5"}, {105, @"19.18.2"}, {106, @"19.17.2"}, {107, @"19.16.3"}, {108, @"19.15.1"}, {109, @"19.14.3"}, {110, @"19.14.2"}, {111, @"19.13.1"}, {112, @"19.12.3"}, {113, @"19.10.7"}, {114, @"19.10.6"}, {115, @"19.10.5"}, {116, @"19.09.4"}, {117, @"19.09.3"}, {118, @"19.08.2"}, {119, @"19.07.5"}, {120, @"19.07.4"}, {121, @"19.06.2"}, {122, @"19.05.5"}, {123, @"19.05.3"}, {124, @"19.04.3"}, {125, @"19.03.2"}, {126, @"19.02.1"}, {127, @"19.01.1"} }; static int appVersionSpoofer() { return [[NSUserDefaults standardUserDefaults] integerForKey:@"versionSpoofer"]; } static BOOL isVersionSpooferEnabled() { return IS_ENABLED(@"enableVersionSpoofer_enabled"); } static NSString* getAppVersionForSpoofedVersion(int spoofedVersion) { for (int i = 0; i < sizeof(versionMappings) / sizeof(versionMappings[0]); i++) { if (versionMappings[i].version == spoofedVersion) { return versionMappings[i].appVersion; } } return nil; } %hook YTVersionUtils + (NSString *)appVersion { if (!isVersionSpooferEnabled()) { return %orig; } int spoofedVersion = appVersionSpoofer(); NSString *appVersion = getAppVersionForSpoofedVersion(spoofedVersion); return appVersion ? appVersion : %orig; } %end