Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #import <Foundation/Foundation.h>
- #import <Security/SecureTransport.h>
- #import <SpringBoard/SpringBoard.h>
- #import "substrate.h"
- #import <dlfcn.h>
- #pragma mark Utility Functions
- static void TweakLog(NSString *format, ...)
- {
- NSString *newFormat = [[NSString alloc] initWithFormat:@"=== Tweak Log: %@", format];
- va_list args;
- va_start(args, format);
- NSLogv(newFormat, args);
- va_end(args);
- }
- static void (*original_SSL_CTX_set_info_callback)(void *ssl, void* (*callback)(void *ssl, uint8_t *out_alert));
- static void replaced_SSL_CTX_set_info_callback(void *ssl, void*(*callback)(void *ssl, uint8_t *out_alert))
- {
- TweakLog(@"Entering replaced_SSL_CTX_set_info_callback()");
- original_SSL_CTX_set_info_callback(ssl, callback);
- TweakLog(@"Called original replaced_SSL_CTX_set_info_callback()");
- return;
- }
- __attribute__((constructor)) static void init(int argc, const char **argv)
- {
- TweakLog(@"Substrate hook enabled.");
- void* boringssl_handle = dlopen("/usr/lib/libboringssl.dylib", RTLD_NOW);
- void *SSL_CTX_set_info_callback = dlsym(boringssl_handle, "SSL_CTX_set_info_callback");
- if (SSL_CTX_set_info_callback)
- {
- TweakLog(@"Hooking SSL_set_custom_verify()...");
- MSHookFunction((void *) SSL_CTX_set_info_callback, (void *) replaced_SSL_CTX_set_info_callback, (void **) &original_SSL_CTX_set_info_callback);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement