2014-02-11 2 views
5

jailbroken iOS 기기에서 실행중인 프로세스에 dylib를 삽입하고 시스템 기능을 끼우거나 후킹 할 수 있음을 알고 있습니다. 나는 jailbroken이 아닌 장치에서 시스템 기능을 링크 또는 실행 시간에 끼워 넣을 수 있는지 궁금합니다. 제가 앱을 만드는 것으로 가정합니다. 어쩌면 리눅스에서 dlfcn과 LD_PRELOAD를 사용하는 것과 동등한가?링크 시간에 iOS의 시스템 (libc) 후킹 기능

예 : 파일 시스템 액세스를 위해 다양한 Cocoa/Core Foundation 추상화를 사용하고 기본 열기/읽기/쓰기/닫기 호출을 감싸는 응용 프로그램을 만들고 싶습니다. Objective-C로 잘 알고 있지만, libc 수준에서 무언가를 찾고 있으므로 모든 것을 캡처합니다. 이것은 뭔가 테스트/디버깅과 관련되어 있으므로 앱 스토어에 친숙하지 않아도됩니다. 감사!

+0

IIRC IIRC 외부 라이브러리의 함수 이름과 같은 이름으로 함수를 정의한 경우 "로컬"이름이 링크 타임에 라이브러리의 이름을 섀도 잉합니다. –

+0

시스템 기능에 후킹을 얻었습니까? – bikram990

답변

0

아니요, jailbroken하지 않은 iOS 기기에서는 (내 지식으로는) 불가능합니다. 모든 전통적인 형태의 동적 하중 (interposing, dlopen/dlsym 등)은 제거되었습니다.

테스트/디버그와 관련된 요구 사항을 언급 했으므로 시뮬레이터에 문제가있는 경우 DTrace를 사용하려고 할 수 있습니다. 시뮬레이터에는 DTrace를 사용할 수 있지만 실제 iOS 장치에는 사용할 수 없습니다.