2012-07-03 2 views
0

Мне интересно, как я могу подключиться к функции, которая находится в dylib, то есть в функции C. Моя цель - подключиться к функции CTRegistrationSetCellularDataIsEnabled, которая находится в CoreTelephony.Подключиться к функции C

Спасибо!

+3

так вы знаете: это делают в приложении, предназначенных для App Store получит его отвергнут. –

+2

Должны ли все здесь включать этот комментарий в каждый пост? Поверьте мне, что большинство людей задают вопрос вроде этого. Я знаю об этом :) –

ответ

2

Вам необходим доступ к MobileSubtrate, если вы хотите какой-либо надежды на закреплять функцию dylib, которая сделал вот так (закреплять функцию под названием CFShow(), из here):

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")); 
1

Вам нужно будет использовать class dump, чтобы получить заголовки из классов, которые необходимо использовать, а затем вызвать эту функцию

+0

Моя проблема в том, что эта функция является статической функцией C внутри dylib, то есть мне приходится загружать ее символ через dlsym. НО, по какой-то причине, я получаю сообщение об ошибке, что символ не может быть найден. Как я понял, это потому, что это функция настройки cydia, что означает ее разделение до его упаковки. Вот почему нет символов. .. Знаете ли вы, как я могу его преодолеть? Спасибо! –