5
내가 또한실행중인 프로세스의 mach-ouuid를 얻는 방법은 무엇입니까?
dwarfdump -u path/to/compile/executable
내가 '진 이미지'섹션
IOS 장치에 충돌하지 않고 UUID를 얻을 수있는 방법입니다 간단한 충돌 로 UUID를 얻을 수 있습니다 사용할 수 있습니다 Mac에서 UUID를 얻을 수 있습니까?
내가 또한실행중인 프로세스의 mach-ouuid를 얻는 방법은 무엇입니까?
dwarfdump -u path/to/compile/executable
내가 '진 이미지'섹션
IOS 장치에 충돌하지 않고 UUID를 얻을 수있는 방법입니다 간단한 충돌 로 UUID를 얻을 수 있습니다 사용할 수 있습니다 Mac에서 UUID를 얻을 수 있습니까?
실행 파일 (mach-o 파일) UUID는 링커 ld
에 의해 생성되고 LC_UUID
이라는로드 명령에 저장됩니다. 당신은 otool
를 사용하여 마하 - 오 파일의 모든로드 명령을 볼 수
otool -l path_to_executable
> ...
> Load command 8
> cmd LC_UUID
> cmdsize 24
> uuid 3AB82BF6-8F53-39A0-BE2D-D5AEA84D8BA6
> ...
모든 과정은 _mh_execute_header
라는 이름의 전역 심볼을 사용하여 마하 - 오 헤더에 액세스 할 수 있습니다. 이 기호를 사용하여로드 명령을 반복하여 LC_UUID
을 검색 할 수 있습니다. 명령의 페이로드는 UUID입니다.
#import <mach-o/ldsyms.h>
NSString *executableUUID()
{
const uint8_t *command = (const uint8_t *)(&_mh_execute_header + 1);
for (uint32_t idx = 0; idx < _mh_execute_header.ncmds; ++idx) {
if (((const struct load_command *)command)->cmd == LC_UUID) {
command += sizeof(struct load_command);
return [NSString stringWithFormat:@"%02X%02X%02X%02X-%02X%02X-%02X%02X-%02X%02X-%02X%02X%02X%02X%02X%02X",
command[0], command[1], command[2], command[3],
command[4], command[5],
command[6], command[7],
command[8], command[9],
command[10], command[11], command[12], command[13], command[14], command[15]];
} else {
command += ((const struct load_command *)command)->cmdsize;
}
}
return nil;
}