탈옥장치는 비-탈옥 장치에 비해 쓰기 권한을 가진 파일,디렉토리가 엄청 많다.
따라서 탈옥과정 진행 중 변화하는 파일 혹은 디렉토리의 권한을 보고서도 필터링 하기도 한다.
예시
- 탈옥 프로세스 진행 중 루트 파티션 권한을 수정함.
==> 루트 파티션이 read/write 권한이라면 탈옥이다.
[검사 함수] NSFileManager 클래스 (후킹이 참 쉬워요) - isWritableFileAtPath:(NSString *)Path 메소드를 통해 쓰기 권한이 있는지 확인 가능. C함수 statfs()
/User/Applications 읽을 수 있는가 - (보류)
Q. 앱은 /Applications 또는 /var/containser/Bundle/Applications에 설치되는데, 얜 뭐지? 유효한 방법 맞나?
//탈옥 장치에서만 /User/Applications 디렉토리를 조회가 가능하다. if ([[NSFileManager defaultManager] fileExistsAtPath:@"/User/Applications/"]){ NSLog(@"Device is jailbroken"); //탈옥 장치라면 앱 리스트까지 얻어올 수 있다. NSArray *applist = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:@"/User/Applications/" error:nil]; NSLog(@"applist = %@",applist); }
비-탈옥 장치로는 이를 읽을 수 없고, 탈옥장치라면 읽을 수 있다..... 고는 하는데 이 디렉토리는 정체가 뭐야