[quote name='oxconan' date='Apr 28 2007, 12:48 PM' post='181428']
1) Hàm SelectMenuItem gọi sử dụng menu item thứ i, bắt đầu từ 0
void SelectMenuItem(int idx) {
long menuAddr = 0x004A7870;
long closeMenuAddr = 0x0046D270;
__asm {
push eax;
mov eax, idx;
push eax;
mov eax, 0;
push eax;
mov eax, 9;
push eax;
mov eax, menuAddr;
call eax;
push 0x00000001;
mov ecx,closeMenuAddr;
call ecx;
pop ecx;
pop eax;
}
}
2) Hàm DoScript: thực thi các script
void DoScript(char* s)
{
long addr = 0x004929D0;
__asm {
push eax;
mov eax, s;
push eax;
mov eax, addr;
call eax;
add esp, 4;
pop eax;
}
}
em mới nghĩ ra 1 ý này kg biết có đúng kg c1c bác nghiên cứu hộ cái
hàm doscript thì có đoạn code ám như trên
mình drbug game ra rồi set breakpoint ở address nhan vật
tiếp theo thì mình gõ một đoạn lệnh script ở o chat
quay trở lại cửa sổ debug tìm những dòng nào có doan mã tương ứng với đoạn code tren
viết 1 chuong trinh convert byte ra char
mình se tìm duoc cái dòng lệnh move eax,s
tìm tiếp xuống theo thứ tự đoạn mã trên
đến dòng call,eax
eax chính là dia chỉ cua dosript
khong biết có đúng kg vì đang ở công ty kg làm được
tối nay về nhà nghiên cưú thử xem sao,co gì se pót len cùng nghiên cứu với các pac
tuong tu hàm seleck menu cũng vậy