2014-07-15 3 views
0

/var/preferences의 일부 파일을 변경하는 작은 조정을하고 있습니다. /var/preferences/으로iOS 조정이로드되지 않습니다.

%ctor 
{ 
    NSLog(@"\n\n\n Tweak Loading... \n\n\n "); 

    NSError *error = [[NSError alloc] init]; 
    BOOL success = [[NSFileManager defaultManager] copyItemAtPath:somePath toPath:someOtherPath error:&error]; 
    if (success) 
    { 
     NSLog(@"\n\n\n Success:) \n\n\n "); 
    } else { 
     NSLog(@"\n\n\n Failure! \n\n\n "); 
    } 

    //Method hook initialization 
    %init; 
} 

이 팅겨 루트 과정에서로드해야 mobile 사용자에 대한 액세스 할 수 없습니다 : 여기 내 생성자입니다. 조금 검색하면 wifid에 루트 권한이 있음을 알게되었습니다. 그래서 번들 식별자 필터를 com.apple.wifid 필터로 변경했습니다.

내가 wifid 데몬을 다시 시작한 후에 아무 일도 일어나지 않고 비틀기가로드되지 않습니다. 필자는이 특정 데몬과 관련된 문제로 생각 했으므로 실행 루프가있는 테스트 용 간단한 명령 줄 도구를 작성했습니다 (시작 데몬 대신 시작시 실행될 plist가 없습니다). 그런 다음 plist를 다음으로 수정했습니다.

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 
<plist version="1.0"> 
<dict> 
    <key>Filter</key> 
    <dict> 
     <key>Executables</key> 
     <array> 
      <string>myExecutableName</string> 
     </array> 
    </dict> 
</dict> 
</plist> 

다시 한 번 비틀 거림이로드되지 않습니다. 이 문제를 어떻게 해결할 수 있습니까? 이러한 프로세스에서로드가 왜 조정되지 않는 이유는 무엇입니까?

+0

왜 팅겨보고 작동하지 않는지 모르지만 왜 조정할 때 왜 이렇게합니까? 비틀기의 요점은 무언가의 기본 동작을 변경하는 것입니다. 귀하의 경우 루트로 뭔가를 실행할 필요가 있으며 어떤 프로세스에서 문제가되지 않는 것 같습니다. 당신이 원하는 권한을 가질 수있는 자신의 데몬으로 더 나아질 것 같습니다. – creker

+0

@creker 나는 지금 당장이 작업을하고 싶어하고 데몬으로 변환 할 계획이있다! 거기에있는 코드는 모두 내 코드가 아니며 너무 후킹도 있습니다. 그래서 비장을 써야했습니다. – Hamed

+0

와이파이 문제가 해결되었습니다! 필터를'Bundles' -com.apple.wifid 대신'Executables' -wifid'로 변경했습니다! 그러나 문제는 여전히 내 자신의 실행 파일과 함께 유지됩니다. 내가 어딘가 틀렸어? – Hamed

답변

0

루트와 관련없는 (겉으로보기에는) 관련 작업을 실행하기 위해 wifid와 같은 루트 프로세스에 연결하는 것은 실제로 "더러운"솔루션입니다. creker가 말한 것처럼 LaunchDaemon으로 작업을 실행하거나 루트로 실행되는 응용 프로그램 내에서 작업을 실행할 수도 있습니다. 어느 방법이든 기존 프로세스에 연결하여 프로세스와 관련이없는 것으로 보이는 것보다 더 합리적입니다.