Deprecated: trim(): Passing null to parameter #1 ($string) of type string is deprecated in /var/www/html/extensions/Variables/includes/ExtVariables.php on line 198

Deprecated: trim(): Passing null to parameter #1 ($string) of type string is deprecated in /var/www/html/extensions/Variables/includes/ExtVariables.php on line 198

Deprecated: trim(): Passing null to parameter #1 ($string) of type string is deprecated in /var/www/html/extensions/Variables/includes/ExtVariables.php on line 198
LibMobileGestalt.dylib: Difference between revisions - iPhone Development Wiki

LibMobileGestalt.dylib: Difference between revisions

From iPhone Development Wiki
No edit summary
 
(3 intermediate revisions by one other user not shown)
Line 13: Line 13:
== MGGetBoolAnswer (iOS 7+) ==
== MGGetBoolAnswer (iOS 7+) ==
<source lang=c>
<source lang=c>
// Boolean MGGetBoolAnswer(CFStringRef key);
// bool MGGetBoolAnswer(CFStringRef key);
Boolean value = MGGetBoolAnswer(CFSTR("UIProceduralWallpaperCapability"));
bool value = MGGetBoolAnswer(CFSTR("UIProceduralWallpaperCapability"));
NSLog(@"Value: %d", value);
NSLog(@"Value: %d", value);
</source>
== Generate Obfuscated Key ==
<source lang=objc>
char buffer[256] = { 0 };
snprintf(buffer, sizeof(buffer), "%s%s", "MGCopyAnswer", key);
unsigned char md5Hash[CC_MD5_DIGEST_LENGTH] = { 0 };
CC_MD5(buffer, (CC_LONG)strlen(buffer), md5Hash);
NSData *data = [NSData dataWithBytes:md5Hash length:CC_MD5_DIGEST_LENGTH];
NSString *obfuscatedKey = [[data base64EncodedStringWithOptions:0] substringToIndex:22];
</source>
</source>


== References ==
== References ==
* Header: https://github.com/Cykey/ios-reversed-headers/blob/master/MobileGestalt/MobileGestalt.h
* Header: https://github.com/theos/headers/blob/master/MobileGestalt/MobileGestalt.h
* Example: https://github.com/ProcursusTeam/uikittools-ng/blob/main/mgask.m


== External links ==
== External links ==
* [https://blog.timac.org/2017/0124-deobfuscating-libmobilegestalt-keys/ Deobfuscating libMobileGestalt keys]
* [https://blog.timac.org/2017/0124-deobfuscating-libmobilegestalt-keys/ Deobfuscating libMobileGestalt keys]
* [https://github.com/PoomSmart/MGKeys List of all decrypted keys]


{{Navbox Frameworks}}
{{Navbox Frameworks}}
[[Category:Dynamic Libraries]]
[[Category:Dynamic Libraries]]

Latest revision as of 16:20, 25 April 2022


libMobileGestalt is a library that can be used to get various system values such as the UDID, disk usage, device version and much more. It is comparable to liblockdown.dylib. See also lockdownd.

MGCopyAnswer

// Common form: MGCopyAnswer(CFStringRef string);
CFStringRef value = MGCopyAnswer(kMGDeviceColor);
NSLog(@"Value: %@", value);
CFRelease(value);

MGGetBoolAnswer (iOS 7+)

// bool MGGetBoolAnswer(CFStringRef key);
bool value = MGGetBoolAnswer(CFSTR("UIProceduralWallpaperCapability"));
NSLog(@"Value: %d", value);

Generate Obfuscated Key

char buffer[256] = { 0 };
snprintf(buffer, sizeof(buffer), "%s%s", "MGCopyAnswer", key);

unsigned char md5Hash[CC_MD5_DIGEST_LENGTH] = { 0 };
CC_MD5(buffer, (CC_LONG)strlen(buffer), md5Hash);

NSData *data = [NSData dataWithBytes:md5Hash length:CC_MD5_DIGEST_LENGTH];
NSString *obfuscatedKey = [[data base64EncodedStringWithOptions:0] substringToIndex:22];

References

External links