0

dylibにある関数、つまりC関数にどのようにフックするのか疑問に思っています。私の目標は、CoreTelephonyにある関数CTRegistrationSetCellularDataIsEnabledにフックすることです。

ありがとう!

4

2 に答える 2

2

dylib関数をフックする希望がある場合は、MobileSubtrateにアクセスする必要があります。これは次のように行われます(ここからCFShow()という関数をフックします)。

 static void (*original_CFShow)(CFTypeRef obj);  // a function pointer to store the original CFShow().
 void replaced_CFShow(CFTypeRef obj) {         
  // our replacement of CFShow().
  printf("Calling original CFShow(%p)...", obj);
  original_CFShow(obj);                         // calls the original CFShow.
  printf(" done.\n");
}
// hook CFShow to our own implementation.
MSHookFunction(CFShow, replaced_CFShow, &original_CFShow);
// From now on any call to CFShow will pass through replaced_CFShow first.
CFShow(CFSTR("test"));
于 2012-07-03T14:14:02.380 に答える
1

クラスダンプを使用して 、使用する必要のあるクラスからヘッダーを取得してから、この関数を呼び出す必要があります。

于 2012-07-03T14:09:00.347 に答える