2017-02-21 68 views
0

我可以攔截類似sqlite3_preparesqlite3_open的通用系統調用CC_MD5libcommonCrypto與Theos(jailed versione)調整嗎?是否可以通過Theos Tweak攔截系統調用?被拘留的版本

我會攔截所有這些調用並在控制檯或日誌文件中打印。 我讀過一些關於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); 
} 

回答

0

我發現了這個問題。我使用的Theos version是用於監禁的設備。用這個版本MSHookFunction被fishhook替代。

使用魚鉤這一切都ok了:明明的代碼更改

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

} 
相關問題