From 083d6e1fb2b52eddddcf5b1110c9994fc2144831 Mon Sep 17 00:00:00 2001 From: jsteube Date: Mon, 14 Jan 2019 10:11:23 +0100 Subject: [PATCH] Refresh dynloader management --- include/dynloader.h | 12 ++++++------ include/ext_ADL.h | 8 +------- include/ext_OpenCL.h | 8 +------- include/ext_nvapi.h | 8 +------- include/ext_nvml.h | 8 +------- include/types.h | 16 +++++++++++++--- src/Makefile | 4 ++-- src/dynloader.c | 13 +++++++------ src/ext_ADL.c | 1 + src/interface.c | 4 ++-- 10 files changed, 35 insertions(+), 47 deletions(-) diff --git a/include/dynloader.h b/include/dynloader.h index f443e80b0..96c498ddc 100644 --- a/include/dynloader.h +++ b/include/dynloader.h @@ -18,13 +18,13 @@ #endif // _WIN #ifdef _WIN -HMODULE hc_dlopen (LPCSTR lpLibFileName); -BOOL hc_dlclose (HMODULE hLibModule); -FARPROC hc_dlsym (HMODULE hModule, LPCSTR lpProcName); +hc_dynlib_t hc_dlopen (LPCSTR lpLibFileName); +BOOL hc_dlclose (hc_dynlib_t hLibModule); +hc_dynfunc_t hc_dlsym (hc_dynlib_t hModule, LPCSTR lpProcName); #else -void *hc_dlopen (const char *filename); -int hc_dlclose (void *handle); -void *hc_dlsym (void *handle, const char *symbol); +hc_dynlib_t hc_dlopen (const char *filename); +int hc_dlclose (hc_dynlib_t handle); +hc_dynfunc_t hc_dlsym (hc_dynlib_t handle, const char *symbol); #endif #define HC_LOAD_FUNC2(ptr,name,type,var,libname,noerr) \ diff --git a/include/ext_ADL.h b/include/ext_ADL.h index 4d6898cd8..18a903b70 100644 --- a/include/ext_ADL.h +++ b/include/ext_ADL.h @@ -282,15 +282,9 @@ typedef int (ADL_API_CALL *ADL_OVERDRIVE6_CAPABILITIES_GET) (int, ADLOD6Capabili typedef int (ADL_API_CALL *ADL_OVERDRIVE6_TARGETTEMPERATUREDATA_GET) (int, int *, int *); typedef int (ADL_API_CALL *ADL_OVERDRIVE6_TARGETTEMPERATURERANGEINFO_GET) (int, ADLOD6ParameterRange *); -#if defined (_POSIX) -typedef void *ADL_LIB; -#else -typedef HINSTANCE ADL_LIB; -#endif - typedef struct hm_adl_lib { - ADL_LIB lib; + hc_dynlib_t lib; ADL_MAIN_CONTROL_DESTROY ADL_Main_Control_Destroy; ADL_MAIN_CONTROL_CREATE ADL_Main_Control_Create; diff --git a/include/ext_OpenCL.h b/include/ext_OpenCL.h index f572736e3..0fc0d01b9 100644 --- a/include/ext_OpenCL.h +++ b/include/ext_OpenCL.h @@ -70,15 +70,9 @@ typedef cl_int (CL_API_CALL *OCL_CLRELEASEPROGRAM) (cl_progra typedef cl_int (CL_API_CALL *OCL_CLSETKERNELARG) (cl_kernel, cl_uint, size_t, const void *); typedef cl_int (CL_API_CALL *OCL_CLWAITFOREVENTS) (cl_uint, const cl_event *); -#if defined (_POSIX) -typedef void *OCL_LIB; -#else -typedef HINSTANCE OCL_LIB; -#endif - typedef struct hc_opencl_lib { - OCL_LIB lib; + hc_dynlib_t lib; OCL_CLBUILDPROGRAM clBuildProgram; OCL_CLCREATEBUFFER clCreateBuffer; diff --git a/include/ext_nvapi.h b/include/ext_nvapi.h index e3df0cffa..5ef6bdb1c 100644 --- a/include/ext_nvapi.h +++ b/include/ext_nvapi.h @@ -221,15 +221,9 @@ typedef int (*NVAPI_API_CALL NVAPI_GPU_GETPERFPOLICIESSTATUS) (NvPhysicalGpuHand typedef int (*NVAPI_API_CALL NVAPI_GPU_GETBUSID) (NvPhysicalGpuHandle, NvU32 *); typedef int (*NVAPI_API_CALL NVAPI_GPU_GETBUSSLOTID) (NvPhysicalGpuHandle, NvU32 *); -#if defined (_POSIX) -typedef void *NVAPI_LIB; -#else -typedef HINSTANCE NVAPI_LIB; -#endif - typedef struct hm_nvapi_lib { - NVAPI_LIB lib; + hc_dynlib_t lib; NVAPI_QUERYINTERFACE nvapi_QueryInterface; NVAPI_INITIALIZE NvAPI_Initialize; diff --git a/include/ext_nvml.h b/include/ext_nvml.h index b951caacb..b2b11887d 100644 --- a/include/ext_nvml.h +++ b/include/ext_nvml.h @@ -192,15 +192,9 @@ typedef nvmlReturn_t (*NVML_API_CALL NVML_DEVICE_SET_COMPUTEMODE) (nvmlDevice_t, typedef nvmlReturn_t (*NVML_API_CALL NVML_DEVICE_SET_OPERATIONMODE) (nvmlDevice_t, nvmlGpuOperationMode_t); typedef nvmlReturn_t (*NVML_API_CALL NVML_DEVICE_GET_PCIINFO) (nvmlDevice_t, nvmlPciInfo_t *); -#if defined (_POSIX) -typedef void *NVML_LIB; -#else -typedef HINSTANCE NVML_LIB; -#endif - typedef struct hm_nvml_lib { - NVML_LIB lib; + hc_dynlib_t lib; NVML_ERROR_STRING nvmlErrorString; NVML_INIT nvmlInit; diff --git a/include/types.h b/include/types.h index 33cb19912..e35eacd48 100644 --- a/include/types.h +++ b/include/types.h @@ -765,6 +765,14 @@ typedef enum brain_link_status } brain_link_status_t; #endif +#ifdef _WIN +typedef HMODULE hc_dynlib_t; +typedef FARPROC hc_dynfunc_t; +#else +typedef void * hc_dynlib_t; +typedef void * hc_dynfunc_t; +#endif + /** * structs */ @@ -2239,14 +2247,16 @@ typedef struct event_ctx #define MODULE_DEFAULT (void *) -1 +typedef void (*MODULE_INIT) (void *); + typedef struct module_ctx { - void *module_handle; - size_t module_context_size; int module_interface_version; - void (*module_init) (struct module_ctx *); + hc_dynlib_t module_handle; + + MODULE_INIT module_init; u32 (*module_attack_exec) (const hashconfig_t *, const user_options_t *, const user_options_extra_t *); void *(*module_benchmark_esalt) (const hashconfig_t *, const user_options_t *, const user_options_extra_t *); diff --git a/src/Makefile b/src/Makefile index 9b94d4461..91f302e88 100644 --- a/src/Makefile +++ b/src/Makefile @@ -641,10 +641,10 @@ hashcat64.bin: src/main.c $(LINUX_64_OBJS) $(CC_LINUX_64) $(CFLAGS_CROSS_LINUX64) -o $@ $^ $(LFLAGS_CROSS_LINUX64) -DCOMPTIME=$(COMPTIME) -DVERSION_TAG=\"$(VERSION_TAG)\" -DINSTALL_FOLDER=\"$(INSTALL_FOLDER)\" -DSHARED_FOLDER=\"$(SHARED_FOLDER)\" -DDOCUMENT_FOLDER=\"$(DOCUMENT_FOLDER)\" hashcat32.exe: src/main.c $(WIN_32_OBJS) $(WIN_ICONV_32)/lib/libiconv.a - $(CC_WIN_32) $(CFLAGS_CROSS_WIN32) -o $@ $^ $(LFLAGS_CROSS_WIN32) -DCOMPTIME=$(COMPTIME) -DVERSION_TAG=\"$(VERSION_TAG)\" + $(CC_WIN_32) $(CFLAGS_CROSS_WIN32) -o $@ $^ $(LFLAGS_CROSS_WIN32) -DCOMPTIME=$(COMPTIME) -DVERSION_TAG=\"$(VERSION_TAG)\" -Wl,--output-def,host32.def hashcat64.exe: src/main.c $(WIN_64_OBJS) $(WIN_ICONV_64)/lib/libiconv.a - $(CC_WIN_64) $(CFLAGS_CROSS_WIN64) -o $@ $^ $(LFLAGS_CROSS_WIN64) -DCOMPTIME=$(COMPTIME) -DVERSION_TAG=\"$(VERSION_TAG)\" + $(CC_WIN_64) $(CFLAGS_CROSS_WIN64) -o $@ $^ $(LFLAGS_CROSS_WIN64) -DCOMPTIME=$(COMPTIME) -DVERSION_TAG=\"$(VERSION_TAG)\" -Wl,--output-def,host64.def hashcat32.dll: src/main.c $(WIN_32_OBJS) $(CC_WIN_32) $(CFLAGS_CROSS_WIN32) -o $@ $^ $(LFLAGS_CROSS_WIN32) -DCOMPTIME=$(COMPTIME) -DVERSION_TAG=\"$(VERSION_TAG)\" -shared diff --git a/src/dynloader.c b/src/dynloader.c index 9049c91c1..a86070048 100644 --- a/src/dynloader.c +++ b/src/dynloader.c @@ -4,38 +4,39 @@ */ #include "common.h" +#include "types.h" #include "dynloader.h" #ifdef _WIN -HMODULE hc_dlopen (LPCSTR lpLibFileName) +hc_dynlib_t hc_dlopen (LPCSTR lpLibFileName) { return LoadLibraryA (lpLibFileName); } -BOOL hc_dlclose (HMODULE hLibModule) +BOOL hc_dlclose (hc_dynlib_t hLibModule) { return FreeLibrary (hLibModule); } -FARPROC hc_dlsym (HMODULE hModule, LPCSTR lpProcName) +hc_dynfunc_t hc_dlsym (hc_dynlib_t hModule, LPCSTR lpProcName) { return GetProcAddress (hModule, lpProcName); } #else -void *hc_dlopen (const char *filename) +hc_dynlib_t hc_dlopen (const char *filename) { return dlopen (filename, RTLD_NOW); } -int hc_dlclose (void *handle) +int hc_dlclose (hc_dynlib_t handle) { return dlclose (handle); } -void *hc_dlsym (void *handle, const char *symbol) +hc_dynfunc_t hc_dlsym (hc_dynlib_t handle, const char *symbol) { return dlsym (handle, symbol); } diff --git a/src/ext_ADL.c b/src/ext_ADL.c index ad4de4bd7..4d35ff9c8 100644 --- a/src/ext_ADL.c +++ b/src/ext_ADL.c @@ -4,6 +4,7 @@ */ #include "common.h" +#include "types.h" #include "ext_ADL.h" void *HC_API_CALL ADL_Main_Memory_Alloc (const int iSize) diff --git a/src/interface.c b/src/interface.c index 0503fcb3a..e6c3559c4 100644 --- a/src/interface.c +++ b/src/interface.c @@ -397,7 +397,7 @@ static bool module_load (hashcat_ctx_t *hashcat_ctx, module_ctx_t *module_ctx, c return false; } - module_ctx->module_init = hc_dlsym (module_ctx->module_handle, "module_init"); + module_ctx->module_init = (MODULE_INIT) hc_dlsym (module_ctx->module_handle, "module_init"); if (module_ctx->module_init == NULL) { @@ -406,7 +406,7 @@ static bool module_load (hashcat_ctx_t *hashcat_ctx, module_ctx_t *module_ctx, c return false; } - free (module_file); + hcfree (module_file); return true; }