UnhappyPattern Scan Fail :c

Posts 1–3 of 3 · Page 1 of 1
Pattern Scan Fail :c
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á \õ

Quote Originally Posted by CaET View Post
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á \õ

Procurando no olly, seu pattern joga pro endereço do WeaponMgr diretamente. Eu prefiro pegar a localização de um pointer.
Code:
WeaponMgr = FindPattern(CShell, 0xFFFFFF, (PBYTE)"\x8B\x0D\x00\x00\x00\x00\x8B\x04\xB1\xD9\xE8", "xx????xxxxx");
if (WeaponMgr != NULL)
	WeaponMgr = *(DWORD*)(WeaponMgr + 0x2);
Isso irá retornar o endereço do WeaponMgr sem ter um pattern gigante para lagar o programa.
FindPattern(CShell, 0xFFFFFFF..
Posts 1–3 of 3 · Page 1 of 1

Post a Reply

Similar Threads

Tags for this Thread

None

Talk with us