이 당신이 DLL에 대한 호출을 가로 챌 수 있도록 몇 가지 라이브러리 :Mac OS에서 API 호출을 연결할 수 있습니까? Windows에서
http://www.codeproject.com/kb/system/hooksys.aspx
는 맥 OS에서이 작업을 수행 할 수 있습니까? 그렇다면, 어떻게 완료됩니까?
이 당신이 DLL에 대한 호출을 가로 챌 수 있도록 몇 가지 라이브러리 :Mac OS에서 API 호출을 연결할 수 있습니까? Windows에서
http://www.codeproject.com/kb/system/hooksys.aspx
는 맥 OS에서이 작업을 수행 할 수 있습니까? 그렇다면, 어떻게 완료됩니까?
답변은 응용 프로그램 또는 시스템 전반에서이 작업을 수행 할 것인지 여부에 따라 달라집니다. 자신의 응용 프로그램에서는 꽤 쉽습니다. 동적 링커는 DYLD_INSERT_LIBRARIES
과 같은 기능을 제공합니다. 디버깅/계측 목적으로이 작업을 수행하는 경우 DTrace도 확인하십시오.
Objective-C 메소드 구현을 메소드 swizzling으로 대체 할 수 있습니다. JRSwizzle 또는 Apple의 method_exchangeImplementations
(10.5 이상)
시스템 전반의 라이브러리 동작을 수정하려면 다른 프로세스의 주소 공간으로로드해야합니다. 원래 다른 목적 (input managers 및 scripting additions)을 위해 설계
mach_inject/mach_override
은 코드를로드하고 함수 구현을 대체하기위한 오픈 소스 라이브러리 집합입니다. 그러나 라이브러리를 사용하는 자신 만의 응용 프로그램을 작성해야합니다. (또한, this answer에서 봐, 당신은 다른 프로세스에 코드를 주입하기 위해 특별한 권한이 필요합니다.)비 디버깅을 위해 응용 프로그램 패치/코드 주입 강하게 애플과 일부 Mac 낙담 있음을 유의하시기 바랍니다 사용자 (및 개발자)는 이러한 실행을 극도로 비판합니다. 이 비판의 상당 부분은 잘 알려지지 않았지만 응용 프로그램 충돌 및 문제에 연루된 합법적으로 잘못 작성된 "플러그인"(특히 Safari에 패치를 적용한 플러그인)이 많이있었습니다. 코드 방어.
(면책 조항 :. 나는 (무료) APE 모듈의 저자와 mach_inject
를 사용하는 응용 프로그램을 오전)
링크가 어떤 업데이트가 죽었나요? SDK에 대해 얘기하고 있습니다. –
APE는 기본적으로 기본적으로 지원되지 않으며 여러 OS 버전에 대한 공식 릴리스가 없습니다. 가장 좋은 방법은 mach_inject입니다. –
'DYLD_INSERT_LIBRARIES'은 이제 SIP 덕분에 엘 캐피 탄 이상에서는 무시됩니다. – Qix