Eu consigo usar uma array no C.E normalmente:
https://i.imgur.com/8Naa5XB.png
?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? DB 0F 49 40 35 FA 8E 3C ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? DB 0F C9
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x DB\x0F\x49\x40\x35\xFA\x8E\x3C\x00\x00\x00\x00\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x 00\x00\x00\xDB\x0F\xC9
????????????xxxxxxxx????????????????????xxx
https://i.imgur.com/dtZSGCq.png
Code:
const bool bDataCompare(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 dwModule, DWORD dwLen, BYTE *bMask, char *szMask)
{
for (DWORD i = 0; i < dwLen; i++)
if (bDataCompare((BYTE *)(dwModule + i), bMask, szMask))
return (DWORD)(dwModule + i);
return 0;
}
Code:
#define WEAPONMGR_PATTERN "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xDB\x0F\x49\x40\x35\xFA\x8E\x3C\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xDB\x0F\xC9"
#define WEAPONMGR_MASK "????????????xxxxxxxx????????????????????xxx"
ADDR_WEAPONMGR =
FindPattern((DWORD)GetModuleHandleA("CShell.dll"), 0xFFFFFF,
(PBYTE)WEAPONMGR_PATTERN, (char *)WEAPONMGR_MASK);
char szMyDword2[10];
sprintf(szMyDword2, "0x%08x", ADDR_WEAPONMGR);
MessageBox(0, szMyDword2, TEXT("weapon mgr"), MB_OK);
Alguém sabe o que ta de errado? e são várias AoB's que funcionam no C.E mas na DLL não =/
Obrigado desde já \õ