sdktools: permit symbol signatures on win32 (#1346)
* Fix sig scanner for windows * fix linux build * Update vcaller.cpp Co-authored-by: Kyle Sanderson <kyle.leet@gmail.com>
This commit is contained in:
parent
e0d9dfb68e
commit
c38b392fdf
@ -119,9 +119,15 @@ static cell_t PrepSDKCall_SetSignature(IPluginContext *pContext, const cell_t *p
|
|||||||
char *sig;
|
char *sig;
|
||||||
pContext->LocalToString(params[2], &sig);
|
pContext->LocalToString(params[2], &sig);
|
||||||
|
|
||||||
#if defined PLATFORM_POSIX
|
|
||||||
if (sig[0] == '@')
|
if (sig[0] == '@')
|
||||||
{
|
{
|
||||||
|
#if defined PLATFORM_WINDOWS
|
||||||
|
MEMORY_BASIC_INFORMATION mem;
|
||||||
|
if (VirtualQuery(addrInBase, &mem, sizeof(mem)))
|
||||||
|
{
|
||||||
|
s_call_addr = memutils->ResolveSymbol(mem.AllocationBase, &sig[1]);
|
||||||
|
}
|
||||||
|
#elif defined PLATFORM_POSIX
|
||||||
Dl_info info;
|
Dl_info info;
|
||||||
if (dladdr(addrInBase, &info) == 0)
|
if (dladdr(addrInBase, &info) == 0)
|
||||||
{
|
{
|
||||||
@ -132,6 +138,7 @@ static cell_t PrepSDKCall_SetSignature(IPluginContext *pContext, const cell_t *p
|
|||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if SOURCE_ENGINE == SE_CSS \
|
#if SOURCE_ENGINE == SE_CSS \
|
||||||
|| SOURCE_ENGINE == SE_HL2DM \
|
|| SOURCE_ENGINE == SE_HL2DM \
|
||||||
|| SOURCE_ENGINE == SE_DODS \
|
|| SOURCE_ENGINE == SE_DODS \
|
||||||
@ -148,12 +155,13 @@ static cell_t PrepSDKCall_SetSignature(IPluginContext *pContext, const cell_t *p
|
|||||||
s_call_addr = memutils->ResolveSymbol(handle, &sig[1]);
|
s_call_addr = memutils->ResolveSymbol(handle, &sig[1]);
|
||||||
#else
|
#else
|
||||||
s_call_addr = dlsym(handle, &sig[1]);
|
s_call_addr = dlsym(handle, &sig[1]);
|
||||||
#endif
|
#endif /* SOURCE_ENGINE */
|
||||||
|
|
||||||
dlclose(handle);
|
dlclose(handle);
|
||||||
|
#endif
|
||||||
|
|
||||||
return (s_call_addr != NULL) ? 1 : 0;
|
return (s_call_addr != NULL) ? 1 : 0;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
s_call_addr = memutils->FindPattern(addrInBase, sig, params[3]);
|
s_call_addr = memutils->FindPattern(addrInBase, sig, params[3]);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user