mirror of
https://github.com/hashcat/hashcat.git
synced 2024-11-30 03:48:17 +00:00
70 lines
1.7 KiB
C
70 lines
1.7 KiB
C
|
/**
|
||
|
* Author......: Jens Steube <jens.steube@gmail.com>
|
||
|
* License.....: MIT
|
||
|
*/
|
||
|
|
||
|
#pragma once
|
||
|
|
||
|
#include <stdlib.h>
|
||
|
|
||
|
#ifdef _POSIX
|
||
|
#include <dlfcn.h>
|
||
|
#ifdef __APPLE__
|
||
|
#include <mach-o/dyld.h>
|
||
|
#endif // __APPLE__
|
||
|
#endif // _POSIX
|
||
|
|
||
|
#ifdef _WIN
|
||
|
#include <windows.h>
|
||
|
#endif // _WIN
|
||
|
|
||
|
#ifdef _WIN
|
||
|
#define hc_dlopen LoadLibrary
|
||
|
#define hc_dlclose FreeLibrary
|
||
|
#define hc_dlsym GetProcAddress
|
||
|
#else
|
||
|
#define hc_dlopen dlopen
|
||
|
#define hc_dlclose dlclose
|
||
|
#define hc_dlsym dlsym
|
||
|
#endif
|
||
|
|
||
|
#define HC_LOAD_FUNC2(ptr,name,type,var,libname,noerr) \
|
||
|
ptr->name = (type) hc_dlsym (ptr->var, #name); \
|
||
|
if (noerr != -1) { \
|
||
|
if (!ptr->name) { \
|
||
|
if (noerr == 1) { \
|
||
|
log_error ("ERROR: %s is missing from %s shared library.", #name, #libname); \
|
||
|
exit (-1); \
|
||
|
} else { \
|
||
|
log_info ("WARNING: %s is missing from %s shared library.", #name, #libname); \
|
||
|
return -1; \
|
||
|
} \
|
||
|
} \
|
||
|
}
|
||
|
|
||
|
#define HC_LOAD_FUNC(ptr,name,type,libname,noerr) \
|
||
|
ptr->name = (type) hc_dlsym (ptr->lib, #name); \
|
||
|
if (noerr != -1) { \
|
||
|
if (!ptr->name) { \
|
||
|
if (noerr == 1) { \
|
||
|
log_error ("ERROR: %s is missing from %s shared library.", #name, #libname); \
|
||
|
exit (-1); \
|
||
|
} else { \
|
||
|
log_info ("WARNING: %s is missing from %s shared library.", #name, #libname); \
|
||
|
return -1; \
|
||
|
} \
|
||
|
} \
|
||
|
}
|
||
|
|
||
|
#define HC_LOAD_ADDR(ptr,name,type,func,addr,libname,noerr) \
|
||
|
ptr->name = (type) (*ptr->func) (addr); \
|
||
|
if (!ptr->name) { \
|
||
|
if (noerr == 1) { \
|
||
|
log_error ("ERROR: %s at address %08x is missing from %s shared library.", #name, addr, #libname); \
|
||
|
exit (-1); \
|
||
|
} else { \
|
||
|
log_error ("WARNING: %s at address %08x is missing from %s shared library.", #name, addr, #libname); \
|
||
|
return -1; \
|
||
|
} \
|
||
|
}
|