Thông tin giới thiệu: Windows 7 64 bit. C++. Ứng dụng 64 bit và DLL. Hooking mà không có MS Detours.API Hooking không có Đường vòng
Câu hỏi: Tôi đã gặp khó khăn về vấn đề nhận ví dụ đang hoạt động thể hiện sự hooking trong Windows. Hầu hết các tuts ra dường như đã được viết trong một thời gian mà Windows XP 32-bit là hệ điều hành duy nhất ... Tôi đã vượt qua những trở ngại 64-bit của sự hiểu biết và tiêm một DLL thành công. Bước tiếp theo của tôi trong hành trình tri thức này là hooking. Để phù hợp với nỗi nhớ của chủ đề, Đường vòng của MS không hỗ trợ 64-bit (miễn phí) và tôi chắc chắn không trả $ 10,000 cho bất cứ thứ gì. Vì vậy, tôi theo đuổi các phương pháp thông thường trong this tutorial.
tut này là tuyệt vời, nhưng tôi đang gặp một chút rắc rối hiểu phân khúc này:
void BeginRedirect(LPVOID newFunction)
{
BYTE tempJMP[SIZE] = {0xE9, 0x90, 0x90, 0x90, 0x90, 0xC3};
memcpy(JMP, tempJMP, SIZE);
DWORD JMPSize = ((DWORD)newFunction - (DWORD)pOrigMBAddress - 5);
VirtualProtect((LPVOID)pOrigMBAddress, SIZE,
PAGE_EXECUTE_READWRITE, &oldProtect);
memcpy(oldBytes, pOrigMBAddress, SIZE);
memcpy(&JMP[1], &JMPSize, 4);
memcpy(pOrigMBAddress, JMP, SIZE);
VirtualProtect((LPVOID)pOrigMBAddress, SIZE, oldProtect, NULL);
}
Đặc biệt, tôi đang phải vật lộn với các byte tempJMP và tất cả các memcpy xảy ra. Tôi có một địa chỉ cho hàm InsertDate() của Notepad mà tôi muốn chiếm quyền điều khiển, nhưng tôi không chắc phải nhắm đến đâu ... Đây có phải là địa chỉ của hàm mới không? Hay nó không tương đối? Idk, tôi chỉ tìm kiếm một số gợi ý.