1. 탈옥 관련 파일 존재 여부 확인
샌드박스된 앱도 샌드박스 외부에 존재하는 파일의 상태정도는 조회할 수 있다.
- 대표적인 서드파티 앱
- 탈옥 시 설치되는 다양한 파일
위의 파일 존재 여부를 확인하여 탈옥 상태를 판단한다.
로우레벨의 C함수 사용
- fopen()
- stat() : 파일 존재 시 0, 없다면 -1 반환
- access()
ex) stat() 함수를 이용한 파일존재여부 판단 예시
//Cydia 설치여부를 확인하여 탈옥 감지 struct stat s; int is_jailbroken = stat("/Applications/Cydia.app", &s) == 0;
NSFileManager 클래스의 메소드들
- fileExistsAtPath:
- changeCurrentDirectoryPath:
ex) fileExistsAtPath 함수 예시
+(BOOL)doCydia{ if([[NSFileManager defaultManager] fileExistsAtPath:@"/Applications/Cydia.app"]) return YES; return NO; }
목록
/jb
/usr/sbin/sshd
/usr/libexec/ssh-keysign
/usr/libexec/sftp-server
/bin/bash
/bin/sh
/bin/sw
/etc/apt
/etc/fstab
/etc/ssh/sshd_config
/Applications/blackra1n.app
/Applications/Cydia.app
/Applications/Cydia.app/Info.plist
/Applications/Cycorder.app
/Applications/Loader.app
/Applications/FakeCarrier.app
/Applications/Icy.app
/Applications/IntelliScreen.app
/Applications/MxTube.app
/Applications/RockApp.app
/Applications/SBSettings.app
/Applications/WinterBoard.app
/Applications/Cydia.app
/Library/MobileSubstrate/MobileSubstrate.dylib
/Library/LaunchDaemons/com.openssh.sshd.plist
/Library/Frameworks/CydiaSubstrate.framework
/Library/MobileSubstrate
/Library/MobileSubstrate/
/Library/MobileSubstrate/DynamicLibraries/
/Library/MobileSubstrate/DynamicLibraries/LiveClock.plist
/Library/MobileSubstrate/DynamicLibraries/Veency.plist
/Library/MobileSubstrate/DynamicLibraries/xCon.plist
/private//var/cache/apt
/private/var/lib/apt
/private/var/lib/apt/
/private/var/lib/cydia
/private/var/log/syslog
/private/var/mobile/Library
/private/var/mobile/Library/SBSettings/Themes
/private/var/stash
/private/var/tmp/cydia.log
/System/Library/LaunchDaemons/
/System/Library/LaunchDaemons/com.ikey.bbot.plist
/System/Library/LaunchDaemons/com.saurik.Cydia.Startup.plist
... (그 외 알아서)