`
rjxws34k
  • 浏览: 13599 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

FPS游戏透视源码!

 
阅读更多

FPS游戏透视源码!
2011年10月03日
  需要的自己拿 ,部分插件需要自己给路径!~你懂的 C语言编译环境哈!#include
  #include
  #pragma comment(lib, "d3d9.lib")
  #include
  #pragma comment(lib, "d3dx9.lib")
  #include
  #include
  #include
  #include    
  #include
  #include 
  #include
  #include
  #include
  ...................\....\d3d8.h
  ...................\....\d3d8dev.cpp
  ...................\....\d3d8dev.h
  ...................\....\d3d8int.cpp
  ...................\....\d3d8int.h
  ...................\....\d3d8tex.cpp
  ...................\....\d3d8tex.h
  ...................\....\main.cpp
  ...................\....\main.h
  ...................\....\old_workspace\TatniumD3D.dsp
  ...................\....\.............\TatniumD3D.dsw
  ...................\....\TatniumD3D.sln
  ...................\....\TatniumD3D.suo
  ...................\....\TatniumD3D.vcproj
  ...................\...9\d3d9.cpp
  ...................\....\d3d9.h
  ...................\....\d3d9dev.cpp
  ...................\....\d3d9dev.h
  ...................\....\d3d9int.cpp
  ...................\....\d3d9int.h
  ...................\....\d3d9tex.cpp
  ...................\....\d3d9tex.h
  ...................\....\main.cpp
  ...................\....\main.h
  ...................\....\old_workspace\TatniumD3D.dsp
  ...................\....\.............\TatniumD3D.dsw
  ...................\....\TatniumD3D.sln
  ...................\....\TatniumD3D.suo
  ...................\....\TatniumD3D.vcproj
  ...................\D3D_Starterkit_v3.0b\d3d8\d3d8.cpp
  ...................\....................\....\d3d8.h
  ...................\....................\....\d3d8dev.cpp
  ...................\....................\....\d3d8dev.h
  ...................\....................\....\d3d8int.cpp
  ...................\....................\....\d3d8int.h
  ...................\....................\....\d3d8tex.cpp
  ...................\....................\....\d3d8tex.h
  ...................\....................\....\main.cpp
  ...................\....................\....\main.h
  ...................\....................\....\old_workspace\TatniumD3D.dsp
  ...................\....................\....\.............\TatniumD3D.dsw
  ...................\....................\....\TatniumD3D.sln
  ...................\....................\....\TatniumD3D.suo
  ...................\....................\....\TatniumD3D.vcproj
  ...................\....................\...9\d3d9.cpp
  ...................\....................\....\d3d9.h
  ...................\....................\....\d3d9dev.cpp
  ...................\....................\....\d3d9dev.h
  ...................\....................\....\d3d9int.cpp
  ...................\....................\....\d3d9int.h
  ...................\....................\....\d3d9tex.cpp
  ...................\....................\....\d3d9tex.h
  ...................\....................\....\main.cpp
  ...................\....................\....\main.h
  ...................\....................\....\old_workspace\TatniumD3D.dsp
  ...................\....................\....\.............\TatniumD3D.dsw
  ...................\....................\....\TatniumD3D.sln
  ...................\....................\....\TatniumD3D.suo
  ...................\....................\....\TatniumD3D.vcproj
  ...................\....................\Injector\forcelib\ForceLib.h
  ...................\....................\........\........\ForceLibrary.cpp
  ...................\....................\........\........\TH32.cpp
  ...................\....................\........\........\TH32.h
  ...................\....................\........\main.cpp
  ...................\....................\........\old_workspace\TatniumInjector.dsp
  ...................\....................\........\.............\TatniumInjector.dsw
  ...................\....................\........\resource.aps
  ...................\....................\........\resource.h
  ...................\....................\........\resource.rc
  ...................\....................\........\TatniumInjector.ncb
  ...................\....................\........\TatniumInjector.sln
  ...................\....................\........\TatniumInjector.suo
  ...................\....................\........\TatniumInjector.vcproj
  ...................\....................\........\TatniumLoader.ico
  ...................\....................\ReadMe.rtf
  ...................\....................\Wrapper\D3D8\d3d8.def
  ...................\....................\.......\....\main.cpp
  ...................\....................\.......\...9\d3d9.def
  ...................\....................\.......\....\main.cpp
  ...................\Injector\forcelib\ForceLib.h
  ...................\........\........\ForceLibrary.cpp
  ...................\........\........\TH32.cpp
  ...................\........\........\TH32.h
  ...................\........\main.cpp
  ...................\........\old_workspace\TatniumInjector.dsp
  ...................\........\.............\TatniumInjector.dsw
  ...................\........\resource.aps
  ...................\........\resource.h
  ...................\........\resource.rc
  ...................\........\TatniumInjector.ncb
  ...................\........\TatniumInjector.sln
  ...................\........\TatniumInjector.suo
  ...................\........\TatniumInjector.vcproj
  ...................\........\TatniumLoader.ico
  ...................\ReadMe.rtf
  ...................\Wrapper\D3D8\d3d8.def
  ...................\.......\....\main.cpp
  ...................\.......\...9\d3d9.def
  ...................\.......\....\main.cpp
  #pragma warning(disable:4996)
  //-----------//
  bool fCall = true;
  bool Chams = true;
  IDirect3DPixelShader9 *Front,
  *Back;
  //----------//
  HRESULT CreateMyShader(IDirect3DPixelShader9 **pShader, IDirect3DDevice9 *Device, float red, float green, float blue, float alpha )
  {
  ID3DXBuffer *MyBuffer = NULL;
  char MyShader[ 256 ];
  sprintf( MyShader, "w21k3r.10.01.13\ndef c0, %f, %f, %f, %f\nmov r0,c0", red/255, green/255, blue/255, alpha/255 );
  D3DXAssembleShader( MyShader, sizeof( MyShader ), NULL, NULL, 0, &MyBuffer , NULL );
  if( FAILED( Device->CreatePixelShader((const DWORD*)MyBuffer ->GetBufferPointer(), pShader)) )return E_FAIL;
  return S_OK;
  }
  //=====================================================================================
  typedef HRESULT (WINAPI* CreateDevice_Prototype)        (LPDIRECT3D9, UINT, D3DDEVTYPE, HWND, DWORD, D3DPRESENT_PARAMETERS*, LPDIRECT3DDEVICE9*);
  typedef HRESULT (WINAPI* Reset_Prototype)              (LPDIRECT3DDEVICE9, D3DPRESENT_PARAMETERS*);
  typedef HRESULT (WINAPI* EndScene_Prototype)            (LPDIRECT3DDEVICE9);
  typedef HRESULT (WINAPI* DrawIndexedPrimitive_Prototype)(LPDIRECT3DDEVICE9, D3DPRIMITIVETYPE, INT, UINT, UINT, UINT, UINT);
  CreateDevice_Prototype        CreateDevice_Pointer        = NULL;
  Reset_Prototype                Reset_Pointer                = NULL;
  EndScene_Prototype            EndScene_Pointer            = NULL;
  DrawIndexedPrimitive_Prototype DrawIndexedPrimitive_Pointer = NULL;
  HRESULT WINAPI Direct3DCreate9_VMTable    (VOID);
  HRESULT WINAPI CreateDevice_Detour        (LPDIRECT3D9, UINT, D3DDEVTYPE, HWND, DWORD, D3DPRESENT_PARAMETERS*, LPDIRECT3DDEVICE9*);
  HRESULT WINAPI Reset_Detour              (LPDIRECT3DDEVICE9, D3DPRESENT_PARAMETERS*);
  HRESULT WINAPI EndScene_Detour            (LPDIRECT3DDEVICE9);
  HRESULT WINAPI DrawIndexedPrimitive_Detour(LPDIRECT3DDEVICE9, D3DPRIMITIVETYPE, INT, UINT, UINT, UINT, UINT);
  DWORD WINAPI VirtualMethodTableRepatchingLoopToCounterExtensionRepatching(LPVOID);
  PDWORD Direct3D_VMTable = NULL;
  //=====================================================================================
  BOOL WINAPI DllMain(HINSTANCE hinstModule, DWORD dwReason, LPVOID lpvReserved)
  {
  if(dwReason == DLL_PROCESS_ATTACH)
  {
  DisableThreadLibraryCalls(hinstModule);
  if(Direct3DCreate9_VMTable() == D3D_OK)
  return TRUE;
  }
  return FALSE;
  }
  //=====================================================================================
  HRESULT WINAPI Direct3DCreate9_VMTable(VOID)
  {
  LPDIRECT3D9 Direct3D_Object = Direct3DCreate9(D3D_SDK_VERSION);
  if(Direct3D_Object == NULL)
  return D3DERR_INVALIDCALL;
  Direct3D_VMTable = (PDWORD)*(PDWORD)Direct3D_Object;
  Direct3D_Object->Release();
  DWORD dwProtect;
  if(VirtualProtect(&Direct3D_VMTable[16], sizeof(DWORD), PAGE_READWRITE, &dwProtect) != 0)
  {
  *(PDWORD)&CreateDevice_Pointer = Direct3D_VMTable[16];
  *(PDWORD)&Direct3D_VMTable[16] = (DWORD)CreateDevice_Detour;
  if(VirtualProtect(&Direct3D_VMTable[16], sizeof(DWORD), dwProtect, &dwProtect) == 0)
  return D3DERR_INVALIDCALL;
  }
  else
  return D3DERR_INVALIDCALL;
  return D3D_OK;
  }
  //=====================================================================================
  HRESULT WINAPI CreateDevice_Detour(LPDIRECT3D9 Direct3D_Object, UINT Adapter, D3DDEVTYPE DeviceType, HWND FocusWindow,
  DWORD BehaviorFlags, D3DPRESENT_PARAMETERS* PresentationParameters,
  LPDIRECT3DDEVICE9* Returned_Device_Interface)
  {
  HRESULT Returned_Result = CreateDevice_Pointer(Direct3D_Object, Adapter, DeviceType, FocusWindow, BehaviorFlags,
  PresentationParameters, Returned_Device_Interface);
  DWORD dwProtect;
  if(VirtualProtect(&Direct3D_VMTable[16], sizeof(DWORD), PAGE_READWRITE, &dwProtect) != 0)
  {
  *(PDWORD)&Direct3D_VMTable[16] = *(PDWORD)&CreateDevice_Pointer;
  CreateDevice_Pointer          = NULL;
  if(VirtualProtect(&Direct3D_VMTable[16], sizeof(DWORD), dwProtect, &dwProtect) == 0)
  return D3DERR_INVALIDCALL;
  }
  else
  return D3DERR_INVALIDCALL;
  if(Returned_Result == D3D_OK)
  {
  Direct3D_VMTable = (PDWORD)*(PDWORD)*Returned_Device_Interface;
  *(PDWORD)&Reset_Pointer                = (DWORD)Direct3D_VMTable[16];
  *(PDWORD)&EndScene_Pointer            = (DWORD)Direct3D_VMTable[42];
  *(PDWORD)&DrawIndexedPrimitive_Pointer = (DWORD)Direct3D_VMTable[82];
  if(CreateThread(NULL, 0, VirtualMethodTableRepatchingLoopToCounterExtensionRepatching, NULL, 0, NULL) == NULL)
  return D3DERR_INVALIDCALL;
  }
  return Returned_Result;
  }
  //=====================================================================================
  HRESULT WINAPI Reset_Detour(LPDIRECT3DDEVICE9 Device_Interface, D3DPRESENT_PARAMETERS* PresentationParameters)
  {
  return Reset_Pointer(Device_Interface, PresentationParameters);
  }
  //=====================================================================================
  HRESULT WINAPI EndScene_Detour(LPDIRECT3DDEVICE9 Device_Interface)
  {
  return EndScene_Pointer(Device_Interface);
  }
  //=====================================================================================
  HRESULT WINAPI DrawIndexedPrimitive_Detour(LPDIRECT3DDEVICE9 Device_Interface, D3DPRIMITIVETYPE Type, INT BaseIndex,
  UINT MinIndex, UINT NumVertices, UINT StartIndex, UINT PrimitiveCount)
  {
  LPDIRECT3DVERTEXBUFFER9 Stream_Data;
  UINT Offset = 0;
  UINT Stride = 0;
  if(Device_Interface->GetStreamSource(0, &Stream_Data, &Offset, &Stride) == D3D_OK)
  Stream_Data->Release();
  if(fCall)
  {
  CreateMyShader( &Front, Device_Interface,    255,    0,  0,  255 );
  CreateMyShader( &Back,  Device_Interface,    255,  255,  0,  255 );
  fCall = false;
  }
  if ( GetAsyncKeyState ( VK_NUMPAD1 ) &1 )
  {
  Chams = !Chams;
  } 
  if(Chams && (Stride == 32 && StartIndex == 0))
  {
  DWORD dwOldZEnable = D3DZB_TRUE;
  Device_Interface->GetRenderState(D3DRS_ZENABLE, &dwOldZEnable);
  Device_Interface->SetRenderState(D3DRS_ZENABLE, D3DZB_FALSE);
  Device_Interface->SetPixelShader( Front );
  DrawIndexedPrimitive_Pointer(Device_Interface, Type, BaseIndex, MinIndex, NumVertices, StartIndex, PrimitiveCount);
  Device_Interface->SetRenderState(D3DRS_ZENABLE, dwOldZEnable);
  Device_Interface->SetPixelShader( Back );
  }
  return DrawIndexedPrimitive_Pointer(Device_Interface, Type, BaseIndex, MinIndex, NumVertices, StartIndex, PrimitiveCount);
  }
  //=====================================================================================
  DWORD WINAPI VirtualMethodTableRepatchingLoopToCounterExtensionRepatching(LPVOID Param)
  {
  UNREFERENCED_PARAMETER(Param);
  while(1)
  {
  Sleep(100);
  *(PDWORD)&Direct3D_VMTable[42] = (DWORD)EndScene_Detour;
  *(PDWORD)&Direct3D_VMTable[82] = (DWORD)DrawIndexedPrimitive_Detour;
  *(PDWORD)&Direct3D_VMTable[16] = (DWORD)Reset_Detour;
  }
  return 1;
  【本人QQ632437657】
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics