DynZen uses different client version. That's why patterns should be changed (same as for vendetta few years ago).
Code:
// Recv & Hook
{
const byte abSignature[] = { 0x55, 0x8B, 0xEC, 0x83, 0xC4, 0xF0, 0x53, 0x56, 0x57, 0x33, 0xC9, 0x89, 0x4D, 0xF4, 0x89, 0x4D, 0xF0, 0x89, 0x55, 0xFC, 0x8B, 0xD8, 0x8B, 0x45, 0xFC };
const char *szMask = "xxxxx?xxxxxxx?xx?xx?xxxx?";
ReadPattern(EAddress::ARecvHook, abSignature, szMask);
s_mapAddress[EAddress::ARecvPacket] = s_mapAddress[EAddress::ARecvHook];
}
// Send & Hook
{
// Official
const byte abSignature[] = { 0x53, 0x56, 0x8B, 0xF2, 0x8B, 0xD8, 0xEB, 0x04, 0xEB, 0x05, 0x39, 0x19, 0x8B, 0xD6, 0x8B, 0xC3, 0xE8, 0xFF, 0xFF, 0xFF, 0xFF, 0x84, 0xC0, 0x74, 0x1A };
const char *szMask = "xxxxxxxxxxxxxxxxx????xxxx";
ReadPattern(EAddress::ASendHook, abSignature, szMask);
s_mapAddress[EAddress::ASendPacket] = s_mapAddress[EAddress::ASendHook];
}
// Send & Hook Vendetta
if (!s_mapAddress[EAddress::ASendHook]) {
const byte abSignature[] = { 0x53, 0x56, 0x57, 0x8B, 0xFA, 0x8B, 0xF0, 0xB3, 0x01, 0xEB, 0x04, 0xEB, 0x05 };
const char* szMask = "xxxxxxxxxx?x?";
ReadPattern(EAddress::ASendHook, abSignature, szMask);
s_mapAddress[EAddress::ASendPacket] = s_mapAddress[EAddress::ASendHook];
}
// Packet Class Pointer
{
const byte abSignature[] = { 0xA1, 0x00, 0x00, 0x00, 0x00, 0x8B, 0x00, 0x80, 0x78, 0x60, 0x00, 0x74, 0x1B, 0x84, 0xDB };
const char *szMask = "x????xxxxxxxxxx";
ReadPattern(EAddress::APacketClassPointer, abSignature, szMask, 1);
}
I've been trying to find correct patterns..but to be fair I have no idea what I was doing. All kind of reverse eng stuff is pure black magic for me.
Maybe someone will be able to find correct patterns and then push a suggestion to creator.