2012-08-13 2 views
1

일부 앱에 투명한 암호화/암호 해독 기능을 제공하기 위해 iOS에서 파일 읽기/쓰기를 가로 채 싶습니다.어떤 기능/syscall이 iOS에서 파일을 읽고 쓰는 데 사용됩니까

나는 여러 가지 SDK 메소드를 읽고 쓰기 위해 파일을 쓸데없이 쓸어 낼 수 있지만, 많은 노력이 필요하며 오류가 발생하기 쉽다. (내 애플리케이션이 충돌하거나 오동작하는 원인이 될 수있다.).

이러한 모든 방법으로 사용되는 몇 가지 공통적 인 syscall/function이있는 경우, 나는 그것을 모으고 열심히 노력하여 + 더 간단하게 만들 수 있습니다. 그러한 공통 진입 점이 있습니까?

PS : 이러한 모든 앱은 사내 엔터프라이즈 배포를위한 것이므로 앱 스토어에 들어가는 것이 기준이 아닙니다.

감사합니다.

+0

당신은으로 볼 수있는이 [데이터 보호에 내장] (https://developer.apple.com/library/ios/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/AdvancedAppTricks/AdvancedAppTricks.html) 기능 사용 iOS (그 링크에서 조금 아래로 스크롤)보다는 바퀴를 다시 발명하십시오. 엔터프라이즈 배포에서는 패스 코드 요구 사항을 적용하여 내장 된 암호화를 수행 할 수 있어야합니다. – rickster

+0

어, 실제 링크가 누락되었습니다 ... [here we go] (https://developer.apple.com/library/ios/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/AdvancedAppTricks/AdvancedAppTricks.html). – rickster

답변

3

이렇게하려면 jailbroken 장치가 필요합니다. (

또한 (http://iphonedevwiki.net/index.php/MobileSubstrate)는 읽기 후크 MobileSubstrate를 사용할 수 있습니다 - (... 어쨌든 아이폰 OS 별, 그러나 다윈하지 here's how)) 및

거기 POSIX가 read 및 납치 할 수 write 콜 있습니다 (CocoaTouch - Foundation, CoreFoundation, 실제로는 C 및 C++ 표준 라이브러리도 포함) 등의 많은 기본 프레임 워크 및 메소드 구현에 거의 독점적으로 사용되는 C 표준 라이브러리의 write() - 그래서 당신은 직접 syscall을 변경할 필요가 없을 것입니다. 예 :

static size_t (*orig_write)(int fd, void *buf, size_t n); 

size_t hijacked_write(int fd, void *buf, size_t n) 
{ 
    // do something, then 
    return orig_write(fd, buf, n); 
} 

// in some initialization: 
MSHookFunction(write, hijacked_write, (void **)&original_write); 
+0

감사합니다. 추신 : 나는 이것을 할 jailbroken 될 필요가 없습니다. 혼란스런 코드를 직접 작성하여 내 앱에서 사용할 수 있습니다. 앱 스토어에 제출할 수 없습니다. – Karthik

+0

@Karthik 당신은 할 ** JB'en해야합니다. MSHookFunction에는 커널 패치가 필요합니다. –

+0

죄송합니다. 우리는 커스텀 로직을 쓰기 가능하고 실행 가능해야하는 메모리 페이지에 써야하기 때문에 패치 된 커널이 필요하다는 것을 깨달았습니다. 기본 커널이 허용하지 않는 것들 :( – Karthik

관련 문제