DirectX和Direct3D教程和源代码
当使用DirectX attack游戏时,你需要钩住D3DDevice的某些成员函数并知道它的地址。许多人会使用模式扫描来获取功能或设备的地址。这不是一个通用的方法。
首选的、推荐的和最好的方法是创建自己的虚拟设备,复制虚函数表项,这样就可以钩住函数。
虚拟设备的方法
这种方法是100倍的更好和通用的。你创建你自己的设备对象,它获得你可以复制的vTable地址。这是一个由所有设备对象共享的vTable。你现在可以使用常规钩子或vTable钩子,它们会影响游戏的设备。您还可以通过连接这些函数并从eax寄存器中抓取“this指针”来获取设备地址。
下面是我复制d3d9和d3d11接口的虚函数。当然可以在x86和x64上工作。
Direct3d9
static HWND window;BOOL CALLBACK EnumWindowsCallback(HWND handle, LPARAM lParam)
{DWORD wndProcId;GetWindowThreadProcessId(handle, &wndProcId);if (GetCurrentProcessId() != wndProcId)return TRUE; // skip to next windowwindow = handle;return FALSE; // window found abort search
}HWND GetProcessWindow()
{window = NULL;EnumWindows(EnumWindowsCallback, NULL);return window;
}bool GetD3D9Device(void ** pTable, size_t Size)
{if (!pTable)return false
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
