2010-02-01 6 views
1

JB iPhone에서 mobilesubstrate 플러그인을 작업 중입니다. 나는 장치를 위해 잘 빌드 된 내 아이폰에 대한 xcode에 dylib를 만들었지 만, 시뮬레이터 용으로 빌드하려고하면 "_MSHOOKMESSAGE reference from : blah blah"라는 오류 메시지가 나타납니다. 모든 헤더를 적절한 위치에 두었습니다. 내가 libsubstrate 장치에서 가지고 있지만 그게 문제라고 생각합니다. 장치의 libsubstrate가 Simulator에서 작동하지 않습니다. 그래서 내 질문에 시뮬레이터에 대한 libsubstrate를 만드는 방법입니다?iPhone 시뮬레이터 용 libsubstrate 만들기

답변

1

는 간단하게 (어떤이 MSHookMessage을 대체) MSHookMessageEx를 사용해야하는 경우, 당신은 모바일 기판에 물론

#define MSHookMessageEx(class, selector, replacement, result) \ 
(*(result) = method_setImplementation(class_getInstanceMethod((class), (selector)), (replacement))) 

, MSHookMessageEx 이것보다 더 복잡 할 수 있지만, 테스트 목적으로이 일반적으로 충분하다.

+0

답장을 보내 주셔서 감사합니다. 너도 이걸 사용하는데 나를 도울 수 있니? 내가 SBApplicationIcon에 연결하는 경우 어떻게 사용합니까? 현재 나는이 코드를 '클래스 _ $ SBAppIcon = objc_getClass ("SBApplicationIcon");' MSHookMessage (_ $의 SBAppIcon, @ 선택기 (시작), (IMP) __ $ check_AppIcon_Launch, 전무); ' 일부 포럼에서이 코드를 얻었고이를 배우려고합니다. – raziiq

+0

@raziiq : 예. 그러나 네 번째 인수는 원래 출시 방법을 수신하는 'IMP'에 대한 포인터 여야합니다. – kennytm

+0

오 예, nil은 "__Original_Method"와 같은 것으로 대체해야합니다. 맞습니까? 위에서 언급 한 코드를 사용하고 있지만 내 질문에 설명 된대로 _MSHookMessage 오류가 나타납니다. 따라서 방금 설명한 메서드를 사용하려면 방금 설명한 코드로 어떻게 코드를 변경할 수 있습니까? – raziiq