资源简介
魔兽写屏代码,具体见
http://blog.csdn.net/langyanduan/article/details/7337290

代码片段和文件信息
#include
#include
#include
#pragma comment(lib “detours.lib“)
// globals
// Our hook function
IDirect3D8* __stdcall hook_Direct3DCreate8(UINT sdkVers);
HMODULE WINAPI LoadLibrary_Hook ( LPCSTR lpFileName );
void HookAPI();
// CreateDevice
typedef HRESULT (APIENTRY *CreateDevice_t)(
IDirect3D8*
UINTD3DDEVTYPE
HWNDDWORD
D3DPRESENT_PARAMETERS*
IDirect3DDevice8**);
CreateDevice_t orig_CreateDevice;
HRESULT APIENTRY hook_CreateDevice(
IDirect3D8* pInterface
UINT Adapter
D3DDEVTYPE DeviceType
HWND hFocusWindow
DWORD BehaviorFlags
D3DPRESENT_PARAMETERS* pPresentationParameters
IDirect3DDevice8** ppReturnedDeviceInterface);
// The original to call
typedef IDirect3D8* (__stdcall *Direct3DCreate8_t)(UINT SDKVersion);
Direct3DCreate8_t orig_Direct3DCreate8;
// Holds address that we get in our LoadLibrary hook (used for detour)
PBYTE pDirect3DCreate8;
typedef HMODULE (WINAPI *LoadLibrary_t)(LPCSTR);
LoadLibrary_t orig_LoadLibrary = LoadLibraryA; // holds address of original non-detoured function
BOOL APIENTRY DllMain( HMODULE hModule DWORD ul_reason_for_call LPVOID lpReserved)
{
switch (ul_reason_for_call) {
case DLL_PROCESS_ATTACH:
{
DisableThreadLibraryCalls(hModule);
DetourRestoreAfterWith();
DetourTransactionBegin();
DetourUpdateThread(GetCurrentThread());
DetourAttach(&(PVOID&)orig_LoadLibrary LoadLibrary_Hook);
DetourTransactionCommit();
}
}
return TRUE;
}
// Our hooked LoadLibrary
HMODULE WINAPI LoadLibrary_Hook ( LPCSTR lpFileName )
{
static int hooked = 0;
HMODULE hM = orig_LoadLibrary( lpFileName );
if ( strcmp( lpFileName “d3d8.dll“ ) == 0)
{
hooked++;
if (hooked == 3) {
// get address of function to hook
pDirect3DCreate8 = (PBYTE)GetProcAddress(hM “Direct3DCreate8“);
HookAPI();
}
}
return hM;
}
void HookAPI()
{
// simple detour
orig_Direct3DCreate8 = (Direct3DCreate8_t)pDirect3DCreate8;
DetourRestoreAfterWith();
DetourTransactionBegin();
DetourUpdateThread(GetCurrentThread());
DetourAttach(&(PVOID&)orig_Direct3DCreate8 hook_Direct3DCreate8);
DetourTransactionCommit();
}
DWORD* GetVtableAddress(void* pobject)
{
// The first 4 bytes of the object is a pointer to the vtable:
return (DWORD*)*((DWORD*)pobject);
}
void HookFunction(DWORD* pVtable void* pHookProc void* pOldProc int iIndex)
{
// Enable writing to the vtable at address we aquired
DWORD lpflOldProtect;
VirtualProtect((void*)&pVtable[iIndex] sizeof(DWORD) PAGE_READWRITE &lpflOldProtect);
// Store old address
if (pOldProc) {
*(DWORD*)pOldProc = pVtable[iIndex];
}
// Overwrite original address
pVtable[iIndex] = (DWORD)pHookProc;
// Restore protection
VirtualProtect(pVtable sizeof(DWORD) lpflOldProtect &lpflOldProtect);
}
IDirect3D8* __stdcall hook_Direct3DCreate8(UINT sdkVers)
{
IDirect3D8* pD3d8 = orig
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2012-03-09 16:12 Loader\
目录 0 2012-03-09 16:12 Loader\dll\
文件 4657 2012-03-06 14:10 Loader\dll\dll.vcxproj
文件 942 2012-03-03 00:58 Loader\dll\dll.vcxproj.filters
文件 143 2012-03-03 00:19 Loader\dll\dll.vcxproj.user
文件 4039 2012-03-09 15:58 Loader\dll\main.cpp
目录 0 2012-03-09 16:12 Loader\hooker\
文件 4868 2012-03-06 14:10 Loader\hooker\hooker.vcxproj
文件 942 2012-03-06 12:05 Loader\hooker\hooker.vcxproj.filters
文件 143 2012-03-06 10:03 Loader\hooker\hooker.vcxproj.user
文件 5621 2012-03-09 16:06 Loader\hooker\main.cpp
文件 1268 2012-03-06 10:03 Loader\hooker\main.h
目录 0 2012-03-09 16:12 Loader\Loader\
文件 1790 2012-03-06 12:05 Loader\Loader.sln
文件 15872 2012-03-09 16:11 Loader\Loader.suo
文件 1184 2012-03-09 12:45 Loader\Loader\inject.cpp
文件 156 2012-03-09 12:44 Loader\Loader\inject.h
文件 4025 2012-03-03 00:58 Loader\Loader\Loader.vcxproj
文件 1151 2012-03-03 00:58 Loader\Loader\Loader.vcxproj.filters
文件 143 2012-03-03 00:08 Loader\Loader\Loader.vcxproj.user
文件 1543 2012-03-09 13:31 Loader\Loader\main.cpp
- 上一篇:QQ截图绿色版
- 下一篇:Tcl_Telnet
相关资源
- 60个HFSS 仿真模型库
- Thermal stability and glass-forming ability of
- eetop.cn_eetop.cn_hfss15_win32crack
- 在指定的CEPH POOL中创建CEPHFS
- 在任意HFB多准粒子状态之间的一体和
- A Pathfinding Project Pro v4.2.2.rar
- 徐淮地区高镁闪长岩Hf同位素组成
- Effect of isovalent substitution on martensiti
- Smoothed Particle Hydrodynamics A Meshfree Par
- ISO18000-6C
- Microstructure transformation behavior and mec
- 论文研究 - 高频文物引力波HFRGW检测对
- unity寻路插件:A*Pathfinding
- 近临界压力条件下结构参数对CHF传热
- R1234yf燃烧产物HF的实验研究
- 最全蓝牙协议规范-HFP/A2DP/AVRCP/PBAP/M
- pathfinder学生公寓仿真模拟.ppt
- HFSS电磁仿真设计应用详解-李明洋-超
- HFSS喇叭天线仿真报告及具体操作过程
- HFSS中文教程_微波仿真论坛
- openwrt-ar71xx-generic-xwr100-squashfs-factory
- FlashFXP_5.2 绿化破解版
- HFSS软件介绍
- 强力提权工具 CN 巴西烤肉 CMD HFS 全
- 频选表面hfss报告
- openwrt-18.06.4-ramips-mt7621-hc5962-squashfs-
- 0508-openwrt-ramips-rt305x-hg255d-squashfs-By_
- FlashFXP.exe
- HFSS常见问题集锦
- Paragon HFS for Windows
评论
共有 条评论