2010-02-01 30 views
1

我正在使用JB iPhone上的mobilesubstrate插件。我已經在xcode中爲我的iPhone創建了一個dylib,它爲Device構建了良好的狀態,但是當我嘗試爲Simulator構建它時,它給了我一個錯誤「_msHOOKMESSAGE reference:blah blah」。我已將所有標題放在適當的位置。我從設備獲取libsubstrate,但那是我認爲的問題。來自設備的libsubstrate不會用於模擬器。所以我的問題是如何爲Simulator創建一個libsubstrate?爲iPhone模擬器創建libsubstrate

回答

1

如果你只需要使用MSHookMessageEx(它取代MSHookMessage),你可以

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

當然,MSHookMessageEx移動基板比這更復雜,但是出於測試目的,這通常是不夠的。

+0

ohh謝謝你的回覆。 你能幫我使用這個嗎?我的意思是如何使用它,如果我連接到SBApplicationIcon? 目前,我有這個代碼 '類_ $ SBAppIcon = objc_getClass( 「SBApplicationIcon」);' MSHookMes​​sage(_ $ SBAppIcon,@選擇器(發射),(IMP)__ $ check_AppIcon_Launch,無); ' 我從一些論壇得到了這段代碼,並試圖瞭解這一點。 – raziiq

+0

@raziiq:是的。但是第四個參數應該是一個指向「IMP」的指針,以接收最初的啓動方法。 – kennytm

+0

哦,是的,零應該被替換爲「__Original_Method」,對吧? 我正在使用上面提到的代碼,但正如我在我的問題中所述,我得到_MSHookMes​​sage的錯誤。因此,爲了使用剛剛描述的方法,我如何將我的代碼更改爲剛描述的代碼? – raziiq