Я пытаюсь получить UUID/usr/lib/dyld (динамический линкер) устройства iOS, но ни один из методов, которые я пытался, не работает. Динамическое изображение линкера (mh_dylinker) даже не загружается в _dyld_get_image. Я попытался сделать следующий код: < /p>
Я пытаюсь получить UUID/usr/lib/dyld (динамический линкер) устройства iOS, но ни один из методов, которые я пытался, не работает. Динамическое изображение линкера (mh_dylinker) даже не загружается в _dyld_get_image. Я попытался сделать следующий код: < /p> [code]- (NSString *) getDynamicLinkerUUID { const struct mach_header *dyldHeader = NULL; for (uint32_t i = 0; i < _dyld_image_count(); i++) { const struct mach_header *header = _dyld_get_image_header(i); if (header->filetype == MH_DYLINKER) { dyldHeader = header; break; } }
if (!dyldHeader) return @"Cannot found header: MH_DYLINKER";
BOOL is64bit = dyldHeader->magic == MH_MAGIC_64 || dyldHeader->magic == MH_CIGAM_64; uintptr_t cursor = (uintptr_t)dyldHeader + (is64bit ? sizeof(struct mach_header_64) : sizeof(struct mach_header)); const struct segment_command *segmentCommand = NULL; for (uint32_t i = 0; i < dyldHeader->ncmds; i++, cursor += segmentCommand->cmdsize) { segmentCommand = (struct segment_command *)cursor; if (segmentCommand->cmd == LC_UUID) { const struct uuid_command *uuidCommand = (const struct uuid_command *)segmentCommand; const uint8_t *uuid = uuidCommand->uuid; NSString* uuidString = [NSString stringWithFormat:@"%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X", uuid[0], uuid[1], uuid[2], uuid[3], uuid[4], uuid[5], uuid[6], uuid[7], uuid[8], uuid[9], uuid[10], uuid[11], uuid[12], uuid[13], uuid[14], uuid[15]]; NSLog(@"UUID: %@", uuidString); return [uuidString lowercaseString]; } } return @""; } [/code] Это всегда возвращает "не может найти заголовок: mh_dylinker" Пожалуйста, дайте мне знать, как я могу его получить.