iOS 如何獲取 Mach O 的 UUID

2021-09-11 09:25:05 字數 2101 閱讀 1852

#import 

nsstring *executableuuid

() else

}return nil;

}複製**

可以獲取主 image 檔案的路徑,然後根據路徑去獲取 image 的 index,然後根據這個 index 去獲取對應 image 的header,通過 header 找到 image 的 load commands,遍歷找到型別為 lc_uuid 的 load command 即可獲取 uuid。下面給出一部分**,這個其實相當於第三個例子的一部分,所以可以從第三個中提煉出這部分**。

// 獲取主 image 的路徑

static nsstring* getexecutablepath

()// 獲取 image 的 index

const uint32_t imagecount = _dyld_image_count();

for(uint32_t iimg = 0; iimg < imagecount; iimg++)

// 根據 index 獲取 header

const struct mach_header* header = _dyld_get_image_header(iimg);

// 獲取 load command

static uintptr_t firstcmdafterheader(const struct mach_header* const header)

}// 遍歷 load command即可複製**

//

// ldapmuuidtool.m

// pods

//// created by wangjiale on 2017/9/7.

////

#import "ldapmuuidtool.h"

#import

#include

#include

#include

#include

static nsmutablearray *_uuidrecordarray;

@implementation ldapmuuidtool

+ (nsdictionary *)getuuiddictionary

return uuiddic;

}// 獲取 load command, 會根據 header 的 magic 來判斷是 64 位 還是 32 位

static uintptr_t firstcmdafterheader(const struct mach_header* const header)

}bool jygetbinaryimage(int index)

uintptr_t cmdptr = firstcmdafterheader(header);

if(cmdptr == 0)

uint8_t* uuid = null;

for(uint32_t icmd = 0; icmd < header->ncmds; icmd++)

cmdptr += loadcmd->cmdsize;

}const char* path = _dyld_get_image_name((unsigned)index);

nsstring *imagepath = [nsstring stringwithutf8string:path];

nsarray *array = [imagepath componentsseparatedbystring:@"/"];

nsstring *imagename = array[array.count - 1];

nslog(@"buffer->name:%@",imagename);

const char* result = nil;

if(uuid != null)

return

true;

}static const char* uuidbytestostring(const uint8_t* uuidbytes)

const char* cstring(nsstring* str)

@end複製**

iOS獲取手機唯一識別符號來(IDFA和UUID)

廣告標示符,適用於對外 例如廣告推廣,換量等跨應用的使用者追蹤等。是ios 6中另外乙個新的方法,提供了乙個方法advertisingidentifier,通過呼叫該方法會返回乙個nsuuid例項,最後可以獲得乙個uuid,由系統儲存著的。不過即使這是由系統儲存的,但是有幾種情況下,會重新生成廣告標...

如何獲取ios應用的URL Schemes

如何得到乙個應用的url schemes呢?2.得到應用包之後解壓包,ps ipa,apk實質就是乙個壓縮的包,想得到別人應用的資源都可以通過解壓包來獲得。3.找到info.plist 用記事本的方式開啟,ctrl f 查詢 url schemes 是不是看到你想要的東西了 這樣你就可以在自己的應用...

Linux磁碟分割槽UUID的獲取及其UUID的作用

注 uuid universally unique identifiers全域性唯一識別符號 一 linux磁碟分割槽uuid的獲取方法 1 san localhost ls l dev disk by uuid total 0 lrwxrwxrwx 1 root root 10 2010 01 1...