void HookWoool()
{
DWORD dwJmp;
DWORD dwHookAddr;
BYTE byte[5];dwHookAddr = 0x7843a5;
byte[0]=0xe8;
dwJmp = (DWORD)RecvMsgProc - dwHookAddr - 5;
memcpy(byte + 1, &dwJmp, 4);
CopyMomery(dwHookAddr, byte, 5);dwHookAddr = 0x99f4a7;
byte[0]=0xe8;
dwJmp = (DWORD)PaintProc- dwHookAddr - 5;
memcpy(byte + 1, &dwJmp, 4);
CopyMomery(dwHookAddr, byte, 5);dwHookAddr = 0xa8dcda;
byte[0]=0xe8;
dwJmp = (DWORD)ShowBloodProc - dwHookAddr - 5;
memcpy(byte + 1, &dwJmp, 4);
CopyMomery(dwHookAddr, byte, 5);dwHookAddr = 0xa8e11e;//显物消息处理函数
byte[0]=0xe8;
dwJmp = (DWORD)ShowGoodsProc- dwHookAddr - 5;
memcpy(byte + 1, &dwJmp, 4);
CopyMomery(dwHookAddr, byte, 5);
}void CopyMomery(DWORD dwAddr, BYTE *pByte, int size)
{
DWORD dwId=GetCurrentProcessId(); 
HANDLE hProc=OpenProcess(PROCESS_ALL_ACCESS, 0, dwId);VirtualProtectEx(hProc, (PVOID)dwAddr, size, PAGE_READWRITE, &dwId);
WriteProcessMemory(hProc, (PVOID)dwAddr, pByte, size, 0);
VirtualProtectEx(hProc, (PVOID)dwAddr, size, dwId, &dwId);
}void CWoool::Paint()
{
str.Format("生:%d | 魔:%d", me.Hp, me.Mp);
MyTextOut(20, 730, str, 0xff00ff00, 1, 0, 0, 1);str.Format("验%d-%d", me.Exp, me.MaxExp);
MyTextOut(880, 735, str, 0xff00ff00, 1, 0, 0, 1);
}void WINAPI CWoool::ShowBloodProc(DWORD cx, DWORD cy, MMSG *pMsg)
{
CString str;
DWORD dwID;
memcpy(&dwID, ((BYTE *)pMsg) + 12, 4);
pItem = m_MonItemList.FindItem(dwID);
if (pItem != NULL)
{
str.Format("%d/%d", pItem->hp, pItem->maxhp); 
MyTextOut(cx - 18, cy + 28, str, 0xffffff00, 1, 0, 0, 1);
}
}void WINAPI CWoool::ShowGoodsProc(DWORD cx, DWORD cy, DWORD dw1, DWORD dwFlag)
{
CString str;
pItem = m_FloorItemList.FindItem(dwFlag);
if (pItem != NULL)
{
str.Format("%s", pItem->Name);
MyTextOut(cx + 40 - str.GetLength()*4, cy + 1, str, 0xffffff00, 1, 0, 0, 1);
}
}BOOL CWoool::SayToClient(CString str)
{
MMSG msg;
msg.wCmd = 0x64;
msg.w1 = 0xfcff;
msg.w2 = 0xfc;
strcpy(msg.data, str);
SendMsgToClient(&msg, 12 + str.GetLength());
return TRUE;
}void WINAPI CWoool::SendMsgToClient(MMSG *pMsg, DWORD len)
{
FARPROC proc = (PROC)0x67aff4;
__asm
{
push len
push pMsg
mov ecx, 0x0151DD0C
mov ecx, dword ptr [ecx]
call proc
}
}void CWoool::MyTextOut(DWORD x, DWORD y, LPCTSTR string, COLORREF clr,
   DWORD d1, DWORD d2, DWORD d3, DWORD d4)
{
__asm
{
pushadpush d4
push d3
push d2
push d1
push clr
push string
push y
push xmov edx, 0x0151DCEC
mov edx, dword ptr [edx]
mov eax, dword ptr [edx]
mov ecx, edx
call [eax+0x18]popad
}
}