-
-
Save zhuowei/acf4257d1b79c000affcb5954c2dc7f1 to your computer and use it in GitHub Desktop.
@import Darwin; | |
@import ObjectiveC; | |
@import CloudKit; | |
extern bool GEOConfigGetBOOL(int feature, void* something); | |
// Hooks feature flags in a resigned Maps.app to return true. | |
// Usage: | |
// clang -shared -fmodules -o libmaps_inject.dylib maps_inject.m \ | |
// "$(xcrun | |
// --show-sdk-path)/System/Library/PrivateFrameworks/GeoServices.framework/GeoServices.tbd" | |
// cp -a /System/Applications/Maps.app ./ | |
// codesign --remove Maps.app/Contents/MacOS/Maps | |
// DYLD_INSERT_LIBRARIES=./libmaps_inject.dylib Maps.app/Contents/MacOS/Maps | |
#define DYLD_INTERPOSE(_replacement, _replacee) \ | |
__attribute__((used)) static struct { \ | |
const void* replacement; \ | |
const void* replacee; \ | |
} _interpose_##_replacee __attribute__((section("__DATA,__interpose"))) = { \ | |
(const void*)(unsigned long)&_replacement, (const void*)(unsigned long)&_replacee} | |
bool wdb_GEOConfigGetBOOL(int feature, void* something) { | |
if (feature == 5) { | |
NSLog(@"config get VectorKitDebugConfig_AllowNonSupportedDeviceAdvancedMap"); | |
return true; | |
} | |
NSLog(@"config get bool %d", feature); | |
return GEOConfigGetBOOL(feature, something); | |
} | |
DYLD_INTERPOSE(wdb_GEOConfigGetBOOL, GEOConfigGetBOOL); | |
// Our resigned Maps app doesn't have iCloud access, so disable iCloud. | |
// (Not necessary if you're running with SIP off and injecting into the real | |
// Maps app) | |
id wdb_CKContainer_initWithContainerID_hook() { return nil; } | |
id wdb_CKContainer_initWithContainerID_options_hook() { return nil; } | |
__attribute__((constructor)) void wdb_hook_init() { | |
Class ckContainerClass = [CKContainer class]; | |
Method method1 = class_getInstanceMethod(ckContainerClass, @selector(initWithContainerID:)); | |
method_setImplementation(method1, (IMP)&wdb_CKContainer_initWithContainerID_hook); | |
Method method2 = class_getInstanceMethod(ckContainerClass, @selector(initWithContainerID: | |
options:)); | |
method_setImplementation(method2, (IMP)&wdb_CKContainer_initWithContainerID_options_hook); | |
} |
@Hanly-Wijaya are you using the Xcode 13.0 beta? You'll need it.
(I would post a pre-patched Maps.app, but don't want to get into trouble with copyright)
Here's a precompiled dylib if you can't get Xcode working: https://drive.google.com/file/d/1M2pRFCwHrzlqvfLSCaSH6sVlF6aXw6SQ/view?usp=sharing
Yup, I used Xcode 13 beta. I'll try the file you linked! Hope it goes well!
@Hanly-Wijaya are you using the Xcode 13.0 beta? You'll need it.
(I would post a pre-patched Maps.app, but don't want to get into trouble with copyright)
Here's a precompiled dylib if you can't get Xcode working: https://drive.google.com/file/d/1M2pRFCwHrzlqvfLSCaSH6sVlF6aXw6SQ/view?usp=sharingYup, I used Xcode 13 beta. I'll try the file you linked! Hope it goes well!
It worked! Thank you!!
any idea how to get SharePlay for FaceTime for intel-macs
Thank you for the solution.
On Ventura: 3D globe view is still fully functional, but 3D city maps seem to crash every time you zoom in to a city with that feature, i.e. San Francisco, Paris, London etc. Hopefully there is still a fix for this.
when you turn SIP on it restores the default version? Thx!