Krótko mówiąc, błąd jest wyświetlany przy próbie śledzenia procesu, który zażądał, aby nie był śledzony.
Błąd nie jest technicznie spowodowany przez iTunes, ale przez proces, który wyłączył śledzenie, używając kodu takiego jak poniżej.
ptrace(PT_DENY_ATTACH, 0, 0, 0);
Ten kod ustawia flagę procesu na poziomie jądra, co zapobiega debugowaniu i śledzeniu procesu.
Najbardziej znaną aplikacją, która to robi, jest właśnie iTunes, aplikacja, dla której DRM ten interfejs API został prawdopodobnie opracowany, ale interfejs API jest dostępny dla innych procesów. Widziałem wiele aplikacji innych firm korzystających z tego interfejsu API.
Oczywiście, podobnie jak wszystkie DRM, można go złamać. Opcje obejścia tej funkcji funkcji śledzenia i debugowania - od debugera do pomijania wywołania API do rozszerzeń jądra, które łatają tę funkcję w przestrzeni jądra.