Получить в настоящее время идентификатор пакета приложения (стороннего) на переднем плане

Как получить имя приложения на переднем плане? он работал в iOS 7, используя SpringBoard, но в iOS 8 я не получаю результат. Любая помощь приветствуется. Мне не нужно отправлять свое приложение в Apple Store, поэтому, если какой-либо патч или script также доступны, пожалуйста, дайте мне знать.

Код работает нормально ниже iOS 8.0

- (NSMutableString*) getActiveApps
{
mach_port_t *port;
void *lib = dlopen(SBSERVPATH, RTLD_LAZY);
int (*SBSSpringBoardServerPort)() =
dlsym(lib, "SBSSpringBoardServerPort");
port = (mach_port_t *)SBSSpringBoardServerPort();
dlclose(lib);

//mach_port_t * port = [self getSpringBoardPort];
// open springboard lib
//void *lib = dlopen(SBSERVPATH, RTLD_LAZY);

// retrieve function SBFrontmostApplicationDisplayIdentifier
void *(*SBFrontmostApplicationDisplayIdentifier)(mach_port_t *port, char *result) =
dlsym(lib, "SBFrontmostApplicationDisplayIdentifier");

// reserve memory for name
char appId[256];
memset(appId, 0, sizeof(appId));

// retrieve front app name
SBFrontmostApplicationDisplayIdentifier(port, appId);

// close dynlib
dlclose(lib);
return [[NSString stringWithFormat:@"%s", appId] retain];
}

Также я показываю новую фреймворк FrontBoard кто-нибудь знает, не поможет ли это решить эту проблему?

Ответы

Ответ 1

В iOS 8 нет возможности сделать это с момента обнаружения уязвимости. Фоновое приложение может атаковать хотя бы самое ближайшее приложение. Подробнее здесь: http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-4361