2017-02-21 3 views
0

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

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

EDIT: я добавляю код, который я написал в эти дни. Это мой 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); 
} 

ответ

0

Я нашел проблему. Theos version, который я использую, предназначен для использования в тюрьме. С этой версией MSHookFunction заменяется на fishhook.

Использование Удочка это все в порядке: очевидно, код меняется

#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); 

}