Refresh dynloader management

pull/1872/head
jsteube 5 years ago
parent 0cd2c5ab35
commit 083d6e1fb2

@ -18,13 +18,13 @@
#endif // _WIN #endif // _WIN
#ifdef _WIN #ifdef _WIN
HMODULE hc_dlopen (LPCSTR lpLibFileName); hc_dynlib_t hc_dlopen (LPCSTR lpLibFileName);
BOOL hc_dlclose (HMODULE hLibModule); BOOL hc_dlclose (hc_dynlib_t hLibModule);
FARPROC hc_dlsym (HMODULE hModule, LPCSTR lpProcName); hc_dynfunc_t hc_dlsym (hc_dynlib_t hModule, LPCSTR lpProcName);
#else #else
void *hc_dlopen (const char *filename); hc_dynlib_t hc_dlopen (const char *filename);
int hc_dlclose (void *handle); int hc_dlclose (hc_dynlib_t handle);
void *hc_dlsym (void *handle, const char *symbol); hc_dynfunc_t hc_dlsym (hc_dynlib_t handle, const char *symbol);
#endif #endif
#define HC_LOAD_FUNC2(ptr,name,type,var,libname,noerr) \ #define HC_LOAD_FUNC2(ptr,name,type,var,libname,noerr) \

@ -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_TARGETTEMPERATUREDATA_GET) (int, int *, int *);
typedef int (ADL_API_CALL *ADL_OVERDRIVE6_TARGETTEMPERATURERANGEINFO_GET) (int, ADLOD6ParameterRange *); 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 typedef struct hm_adl_lib
{ {
ADL_LIB lib; hc_dynlib_t lib;
ADL_MAIN_CONTROL_DESTROY ADL_Main_Control_Destroy; ADL_MAIN_CONTROL_DESTROY ADL_Main_Control_Destroy;
ADL_MAIN_CONTROL_CREATE ADL_Main_Control_Create; ADL_MAIN_CONTROL_CREATE ADL_Main_Control_Create;

@ -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_CLSETKERNELARG) (cl_kernel, cl_uint, size_t, const void *);
typedef cl_int (CL_API_CALL *OCL_CLWAITFOREVENTS) (cl_uint, const cl_event *); 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 typedef struct hc_opencl_lib
{ {
OCL_LIB lib; hc_dynlib_t lib;
OCL_CLBUILDPROGRAM clBuildProgram; OCL_CLBUILDPROGRAM clBuildProgram;
OCL_CLCREATEBUFFER clCreateBuffer; OCL_CLCREATEBUFFER clCreateBuffer;

@ -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_GETBUSID) (NvPhysicalGpuHandle, NvU32 *);
typedef int (*NVAPI_API_CALL NVAPI_GPU_GETBUSSLOTID) (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 typedef struct hm_nvapi_lib
{ {
NVAPI_LIB lib; hc_dynlib_t lib;
NVAPI_QUERYINTERFACE nvapi_QueryInterface; NVAPI_QUERYINTERFACE nvapi_QueryInterface;
NVAPI_INITIALIZE NvAPI_Initialize; NVAPI_INITIALIZE NvAPI_Initialize;

@ -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_SET_OPERATIONMODE) (nvmlDevice_t, nvmlGpuOperationMode_t);
typedef nvmlReturn_t (*NVML_API_CALL NVML_DEVICE_GET_PCIINFO) (nvmlDevice_t, nvmlPciInfo_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 typedef struct hm_nvml_lib
{ {
NVML_LIB lib; hc_dynlib_t lib;
NVML_ERROR_STRING nvmlErrorString; NVML_ERROR_STRING nvmlErrorString;
NVML_INIT nvmlInit; NVML_INIT nvmlInit;

@ -765,6 +765,14 @@ typedef enum brain_link_status
} brain_link_status_t; } brain_link_status_t;
#endif #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 * structs
*/ */
@ -2239,14 +2247,16 @@ typedef struct event_ctx
#define MODULE_DEFAULT (void *) -1 #define MODULE_DEFAULT (void *) -1
typedef void (*MODULE_INIT) (void *);
typedef struct module_ctx typedef struct module_ctx
{ {
void *module_handle;
size_t module_context_size; size_t module_context_size;
int module_interface_version; 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 *); 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 *); void *(*module_benchmark_esalt) (const hashconfig_t *, const user_options_t *, const user_options_extra_t *);

@ -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)\" $(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 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 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) 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 $(CC_WIN_32) $(CFLAGS_CROSS_WIN32) -o $@ $^ $(LFLAGS_CROSS_WIN32) -DCOMPTIME=$(COMPTIME) -DVERSION_TAG=\"$(VERSION_TAG)\" -shared

@ -4,38 +4,39 @@
*/ */
#include "common.h" #include "common.h"
#include "types.h"
#include "dynloader.h" #include "dynloader.h"
#ifdef _WIN #ifdef _WIN
HMODULE hc_dlopen (LPCSTR lpLibFileName) hc_dynlib_t hc_dlopen (LPCSTR lpLibFileName)
{ {
return LoadLibraryA (lpLibFileName); return LoadLibraryA (lpLibFileName);
} }
BOOL hc_dlclose (HMODULE hLibModule) BOOL hc_dlclose (hc_dynlib_t hLibModule)
{ {
return FreeLibrary (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); return GetProcAddress (hModule, lpProcName);
} }
#else #else
void *hc_dlopen (const char *filename) hc_dynlib_t hc_dlopen (const char *filename)
{ {
return dlopen (filename, RTLD_NOW); return dlopen (filename, RTLD_NOW);
} }
int hc_dlclose (void *handle) int hc_dlclose (hc_dynlib_t handle)
{ {
return dlclose (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); return dlsym (handle, symbol);
} }

@ -4,6 +4,7 @@
*/ */
#include "common.h" #include "common.h"
#include "types.h"
#include "ext_ADL.h" #include "ext_ADL.h"
void *HC_API_CALL ADL_Main_Memory_Alloc (const int iSize) void *HC_API_CALL ADL_Main_Memory_Alloc (const int iSize)

@ -397,7 +397,7 @@ static bool module_load (hashcat_ctx_t *hashcat_ctx, module_ctx_t *module_ctx, c
return false; 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) 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; return false;
} }
free (module_file); hcfree (module_file);
return true; return true;
} }

Loading…
Cancel
Save