đi được.
Để làm được việc đó ta sẽ viết code gọi hàm gửi tin
đến server. Sau khi nghiên cứu, tôi đã tìm được địa
chỉ các hàm gửi lệnh RUN và hàm gửi lệnh WALK
trong game_y.exe. Cũng may là mấy hàm này ko
viết trong Class nên việc gọi cũng đỡ cực hơn. Trong
chương trình HookDll, các bạn bổ sung các đoạn code
sau:
Code:
//Global Functions
void 0(int, int);
void 0(int, int);
#define RUN_FUNC_ADD 0x004C41B7 // Send Client
DoRun Function
#define WLK_FUNC_ADD 0x004C4204 // Send Client
DoWalk Function
Và khởi tạo các địa chỉ hàm SendCmdRunToServer &
hàm SendCmdWalkToServer bằng cách chèn đoạn
code sau vào vị trí nào thích hợp (nhớ rằng chúng ta
phải thực hiện việc này trong HookProc, tức là đang ở
trong Process của Game. Việc gán trực tiếp bằng
toán tử gán ( = ) sẽ ko thực hiện được vì VC++ sẽ báo
lỗi nên ta dùng đoạn mã ASM.
Code:
__asm
{
mov SendCmdRunToServer, RUN_FUNC_ADD;
mov SendCmdWalkToServer, WLK_FUNC_ADD;
}
Đến đây chúng ta đã hoàn tất 90% công việc rồi,
quay trở lại phần code của chương trình chính, sau
khi ra đã gán các giá trị CmdKind, Param_X, Param_Y
ta phải gửi một thông điệp WM_HOOK_WRITE nữa để
báo HookProc chạy hàm SendCmdRunToServer hoặc
SendCmdWalkToServer.
Đoạn mã đó như sau:
Code:
//SendMessage(m_hVLWindow, WM_HOOK_WRITE,
2, 0); // Send Walk Cmd
SendMessage(m_hVLWindow, WM_HOOK_WRITE, 3,
0); // Send Run Cmd
Còn ở HookProc, các bạn cải tiến một chút như dưới
đây thì ta sẽ có được đoạn gửi lệnh RUN, WALK lên
Server.
Code:
#define pCW 0lParam)
LRESULT HookProc (int nCode, WPARAM wParam,
LPARAM lParam)
{
int nAdd = pCW->wParam;
int nVal = pCW->lParam;
int *pX, *pY;
switch (nAdd)
{
case 2: // DO WALK
pX = 04236;
pY = 04240;
SendCmdWalkToServer0;
break;
case 3: // DO RUN
pX = 04236;
pY = 04240;
SendCmdRunToServer0;
break;
default: // ASSIGN OTHER VALUES
pX = 0nAdd;
*pX = nVal;
}
}
Kết thúc loạt bài về viết chương trình AutoPlay. Từ
đây các bạn có thể cải tiến chương trình theo ý thích
của mình, làm bao nhiêu chức năng tùy ý. Và từ sau
bài này các bạn vào trao đổi và có cao kiến hay thắc
mắc gì cứ nêu ra chúng ta cùng bàn luận nhé. Các
đoạn code trên có nhiều chỗ tôi gõ trực tiếp lên đây
(ko phải copy từ chương trình ra vì chỉ cần lấy phần
cơ bản cho dễ hiểu) nên đôi khi gõ tắt hoặc gõ lỗi tí
xíu, các bạn tự sửa lấy nhé.



Quảng cáo 
Facebook
Twitter