Initial Commit
This commit is contained in:
66
ferrumhook/network.c
Normal file
66
ferrumhook/network.c
Normal file
@ -0,0 +1,66 @@
|
||||
#include <windows.h>
|
||||
|
||||
#include "taikohook/network.h"
|
||||
|
||||
#include "hook/table.h"
|
||||
|
||||
#include "util/dprintf.h"
|
||||
|
||||
void network_insert_hooks(HMODULE target);
|
||||
|
||||
static uint64_t my_TLSv1_method();
|
||||
static uint64_t my_SSL_CTX_new(void *method);
|
||||
static uint64_t (*next_TLSv1_2_method)();
|
||||
static uint64_t (*next_TLSv1_method)();
|
||||
static uint64_t (*next_SSL_CTX_new)(void *method);
|
||||
|
||||
static const struct hook_symbol nethook_syms[] = {
|
||||
{
|
||||
.link = (void *) &next_TLSv1_2_method,
|
||||
.ordinal = 350
|
||||
},
|
||||
{
|
||||
.patch = my_TLSv1_method,
|
||||
.link = (void *) &next_TLSv1_method,
|
||||
.ordinal = 170
|
||||
},
|
||||
{
|
||||
.patch = my_SSL_CTX_new,
|
||||
.link = (void *) &next_SSL_CTX_new,
|
||||
.ordinal = 12
|
||||
},
|
||||
};
|
||||
|
||||
HRESULT network_hook_init(const struct ferrum_network_config *cfg)
|
||||
{
|
||||
if (!cfg->enable) {
|
||||
return S_FALSE;
|
||||
}
|
||||
|
||||
dprintf("Nethook: Init\n");
|
||||
network_insert_hooks(NULL);
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
void network_insert_hooks(HMODULE target)
|
||||
{
|
||||
hook_table_apply(
|
||||
target,
|
||||
"ssleay32.dll",
|
||||
nethook_syms,
|
||||
_countof(nethook_syms)
|
||||
);
|
||||
}
|
||||
|
||||
static uint64_t my_TLSv1_method()
|
||||
{
|
||||
dprintf("Nethook: Redirect TLS v1.0 to v1.2\n");
|
||||
return next_TLSv1_2_method();
|
||||
}
|
||||
|
||||
static uint64_t my_SSL_CTX_new(void *method)
|
||||
{
|
||||
dprintf("Nethook: my_SSL_CTX_new\n");
|
||||
return next_SSL_CTX_new(method);
|
||||
}
|
Reference in New Issue
Block a user