Можно ли перехватывать системные вызовы с помощью Theos Tweak? Заключенная версия

Могу ли я перехватывать общие системные вызовы, такие как sqlite3_prepare или sqlite3_open, а также CC_MD5 из libcommonCrypto с Theos (заключенная версия ) Твик?

Я бы перехватывал все эти вызовы и выводил на консоль или в лог-файл. Я кое-что читал о MSHookFunction, но я не уверен в этом.

РЕДАКТИРОВАТЬ: я добавляю код, который я написал в эти дни. Это мой Tweak.xm, где я перехватывал CC_MD5 вызов, и после простого журнала сообщений я возвращался к нормальному потоку. Твик введен, но я не вижу никакого сообщения.

#include <substrate.h>
#include <CommonCrypto/CommonDigest.h>

static unsigned char * (*original_CC_MD5)(const void *data, CC_LONG len, unsigned char *md);

static unsigned char * replaced_CC_MD5(const void *data, CC_LONG len, unsigned char *md) {

        NSLog(@"Calling MD5");
        return original_CC_MD5(data, len, md);
}

MSInitialize {
        MSHookFunction(CC_MD5, replaced_CC_MD5, &original_CC_MD5);
}

person strano    schedule 21.02.2017    source источник


Ответы (1)


Я нашел проблему. версия Theos, которую я использую, предназначена для устройства, находящегося в тюрьме. В этой версии функция MSHookFunction заменена на рыболовный крючок.

С рыболовным крючком все в порядке: очевидно, код меняется

#include <substrate.h>
#include <CommonCrypto/CommonDigest.h>
#import <fishhook.h>

static unsigned char * (*original_CC_MD5)(const void *data, CC_LONG len, unsigned char *md);

static unsigned char * replaced_CC_MD5(const void *data, CC_LONG len, unsigned char *md) {

        NSLog(@"Calling MD5");
        return original_CC_MD5(data, len, md);
}

%ctor {

rebind_symbols((struct rebinding[1]){{"CC_MD5", replaced_CC_MD5, (void *)&original_CC_MD5}},1);

}
person strano    schedule 16.03.2017