2012-07-31 3 views
2

OS X Lion에서 일하면서 최근에 프로세스 단위로 시스템 호출을 삽입하는 코드 삽입 작업을 수행했습니다.OS X 시스템 호출을 시스템 전체 기준으로 재정의하거나 삽입 할 수 있습니까?

나는 길을 따라 많은 것을 알게되었고 더 나을 거처럼 이제 경우, "단순히"등 pwrite 같은 특정 시스템 기능에 모든 호출을 삽입 할 수가 적어도 연구 목적으로 보인다 그런 일이 가능합니다.

그것은 가능 내 코드 대신 모든 과정에서 의 OS (예를 들어, pwrite) 특정 시스템 호출에 대한 모든 전화로 전화를받을 수 있나요?

그렇다면 어떤 프로세스에서 전화를 걸 었는지 알 수 있습니까?

편집 :

난 : 사람이 나 때문에 내 질문의 성격의 악성 코드 제작자 것 같아 두렵다 내가 부탁 해요 무엇을 요구, 지금 여기 온 이유, 나는 설명 할 것이다 크고 복잡한 폐쇄 소스 소프트웨어가 제대로 작동하도록 노력하고 있습니다. 벤더가 그것을 고칠 때까지 기다리지 않는 것이 어떻습니까? 2 년 전에 그들은 다른 파티에서 손가락을 가리 키기 시작했고 그 파티는 바로 뒤를 가리켰다. 상황은 터무니 없으며,이 소프트웨어는 창의적이고 기술적으로 진보 된 노력으로 한 시간에 수백 달러를 부과하는 영화 및 비디오 제작자가 사용하기 때문에 어느 한 당사자의 도움 없이는 극복하기 위해 노력할 가치가 있습니다. 그들의 시간은 그들의 도구를 씨름하고 있습니다.

지금까지 시도한 문제는 코드 삽입과 간섭을 사용하여 의 소스를 찾아야한다는 것입니다 (위에서 "연구"라고 함).. 문제의 원인을 찾았 으면 솔루션은 주입 및 삽입, 동적 라이브러리 교체 또는 저조한 저수준 시스템 튜닝 또는 무엇을 압니까? 내가 분석하고있는 소프트웨어는 넓어지고, 차례로 다른 프레임 워크, 라이브러리 및 백그라운드 작업을 활용합니다. 일부는 OS X의 일부이며 일부는 해당 소프트웨어 패키지의 일부입니다. 구성 요소별로 코드 삽입 및 삽입이 약간 미쳐 버렸습니다. 따라서 의 시스템 호출에서의 시스템 호출 끝에 무슨 일이 벌어지고 있는지 간첩하고 싶습니다. 예를 들어 어디에서 볼 수 있습니까? 모든 pwrite 전화가 발신되고 통화의 세부 사항.

이 설명이 도움이되고 다른 누군가가 올바른 방향으로 나를 가리킬 수 있기를 바랍니다. 감사!

+0

* [긴 스프롤링 토론 삭제] * –

+0

편집에 대한 응답으로 - 이것은 숙련되고 숙련 된 개발자가 이미 두 공급 업체간에 분쟁이 있음을 인정하는 주제에 대한 조언을 제공하려는 공공 포럼입니다 . 나는 거기에 가고 싶지 않습니다. –

+1

@MartinJames : 안타깝게도, Windows는 필터 드라이버 (많은 바이러스 스캐너에서 사용되는) _ 스택을 매우 잘 수용하지만 OS X은이 개념을 지원하지 않습니다. – bland328

답변

0

DTrace : http://en.wikipedia.org/wiki/DTrace 이제는 OS X의 일부입니다. 끼어 들기 위해 여러 가지 방법이 있다고 생각합니다. 그 중 대다수는 Gatekeeper/Code Signing에 의해 tweet 될 것입니다. 그것이 문제가되지 않는다면 otool을 사용하여 앱 링키지를 수정하여 라이브러리의 수정 된 버전을로드 할 수 있습니다. 코드 삽입의 경우 사람들이 입력 구성 요소를 사용하여 과거에이를 해킹했다고 생각합니다. 그러나 여전히 작동하는지는 확실하지 않습니다. 내 대답이 아닐세.

+0

DTrace에 대한 조언을 주신 데 대해 감사드립니다.나는 몇 주 전에 그다지 괜찮은 결과를 얻었지만, 특히 흐름 제어 영역에서 D 언어의 한계로 인해 사용을 중단했습니다. 내가 지금까지 할 수있는 옵션이 거의 없다는 것을 감안할 때, 상기 알림에 감사 드리며 또 한번 시도해 보도록하겠습니다. – bland328

+0

또한 기록을 위해 [Inject and Interpose] (https://github.com/comex/inject_and_interpose) 프로젝트는 깔끔한 주입과 끼우기에 매우 유용합니다! – bland328