jbmod-props/props/sigscan.cpp
2020-02-25 05:13:39 +02:00

26 lines
No EOL
631 B
C++

#include "plugin.h"
#include <Windows.h>
void* SigScan(const char* pMod,const char* pSig,const char* pMask)
{
size_t uSigLen = strlen(pMask);
char* pBegin = (char*)GetModuleHandle(pMod);
size_t uLen;
PIMAGE_DOS_HEADER pDos = (PIMAGE_DOS_HEADER)pBegin;
PIMAGE_NT_HEADERS pNt = (PIMAGE_NT_HEADERS)((char*)pDos+pDos->e_lfanew);
uLen = pNt->OptionalHeader.SizeOfCode-uSigLen;
pBegin = (char*)pDos+pNt->OptionalHeader.BaseOfCode;
for(int i = 0; i < uLen; i++)
{
int j;
for(j = 0; j < uSigLen; j++)
{
if(pBegin[i+j] != pSig[j] && pMask[j] == 'x')
break;
}
if(j==uSigLen) return &pBegin[i];
}
return NULL;
}