BOOL
bCompare (
const
BYTE
* pData,
const
BYTE
* bMask,
const
char
* szMask )
{
for
( ;*szMask; ++szMask, ++pData, ++bMask )
{
if
( *szMask ==
'x'
&& *pData != *bMask )
return
0;
}
return
(*szMask) == NULL;
}
DWORD
FindPattern (
DWORD
dwStartAddress,
DWORD
dwSize,
BYTE
*bMask,
char
* szMask,
int
codeOffset,
BOOL
extract )
{
for
(
DWORD
i = 0; i < dwSize; i++ )
{
if
(
this
->bCompare((
BYTE
*)(dwStartAddress + i),bMask,szMask) )
{
if
( extract )
{
return
*(
DWORD
*)(dwStartAddress+i+codeOffset);
}
else
{
return
(
DWORD
)(dwStartAddress+i+codeOffset);
}
}
}
return
NULL;
}
void
__cdecl nReset (
void
)
{
_asm pushad
_asm popad
}