⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 directxhook.pas.svn-base

📁 这是一段游戏修改工具的源代码.ring3功能由dephi开发,驱动是C开发.希望对大家有帮助
💻 SVN-BASE
📖 第 1 页 / 共 5 页
字号:
unit DirectxHook;interface//directx8 hookuses controls,classes,windows,messages,forms,dialogs,sysutils,directxGraphics,math,graphics,keylistener,d3dx81mo;type CEVertex=record  position: TD3DVector;  RHW: single;//  color: Dword;  tu,tv: single;end;const D3DFVF_CEVertex=(D3DFVF_XYZRHW or {D3DFVF_DIFFUSE or} D3DFVF_TEX1);type TTextureInfo = record  //creation parameters  Width, Height, Levels : Cardinal;  Usage : LongWord;  Format : TD3DFormat;  Pool : TD3DPool;  locked: boolean;//  checked: boolean;  texturehandle: IDirect3DTexture8;  xdelta,ydelta,zdelta: single;end;type PIDirect3D8=^IDirect3D8;type TDirect3DCreate8=function(SDKVersion: DWORD): PIDirect3D8; stdcall;type TIDirect3D_CreateDevice_Original=function(const self:IDirect3D8;const Adapter : Cardinal; const DeviceType : TD3DDevType; hFocusWindow : HWND; BehaviorFlags : LongWord; var pPresentationParameters : TD3DPresent_Parameters; out ppReturnedDeviceInterface : IDirect3DDevice8) : HResult; stdcall;type TIDirect3DDevice8_Reset_Original=function(const self:IDirect3DDevice8; var pPresentationParameters : TD3DPresent_Parameters) : HResult; stdcall;type TIDirect3DDevice8_CreateTexture_Original=function(const self:IDirect3DDevice8;const Width, Height, Levels : Cardinal; const Usage : LongWord; const Format : TD3DFormat; const Pool : TD3DPool; out ppTexture : IDirect3DTexture8) : HResult; stdcall;type TIDirect3DDevice8_CreateVertexBuffer_Original=function(const self:IDirect3DDevice8;const Length : Cardinal; const Usage, FVF : LongWord; const Pool : TD3DPool; out ppVertexBuffer : IDirect3DVertexBuffer8) : HResult; stdcall;type TIDirect3DDevice8_UpdateTexture_Original=function(const self: IDirect3DDevice8; const pSourceTexture, pDestinationTexture : IDirect3DBaseTexture8) : HResult; stdcall;type TIDirect3DDevice8_BeginScene_Original=function(const self:IDirect3DDevice8): HResult; stdcall;type TIDirect3DDevice8_EndScene_Original=function(const self:IDirect3DDevice8): HResult; stdcall;type TIDirect3DDevice8_SetTransform_Original=function(const self: IDirect3DDevice8; const State : TD3DTransformStateType; const pMatrix : TD3DMatrix) : HResult; stdcall;type TIDirect3DDevice8_GetTransform_Original=function(const self:IDirect3DDevice8;const State : TD3DTransformStateType; out pMatrix : TD3DMatrix) : HResult; stdcall;type TIDirect3DDevice8_SetRenderState_Original=function(const self:IDirect3DDevice8;const State : TD3DRenderStateType; const Value : LongWord) : HResult; stdcall;type TIDirect3DDevice8_SetTexture_Original=function(const self:IDirect3DDevice8;const Stage : LongWord; const pTexture : IDirect3DBaseTexture8) : HResult; stdcall;type TIDirect3DDevice8_DrawPrimitive_Original=function(const self:IDirect3DDevice8;const PrimitiveType : TD3DPrimitiveType; const StartVertex, PrimitiveCount : Cardinal) : HResult; stdcall;type TIDirect3DDevice8_DrawIndexedPrimitive_Original=function(const self: IDirect3DDevice8;const _Type : TD3DPrimitiveType; const minIndex, NumVertices, startIndex, primCount : Cardinal) : HResult; stdcall;type TIDirect3DDevice8_DrawPrimitiveUP_Original=function(const self:IDirect3DDevice8;const PrimitiveType : TD3DPrimitiveType; const PrimitiveCount : Cardinal; pVertexStreamZeroData : Pointer; const VertexStreamZeroStride : Cardinal) : HResult; stdcall;type TIDirect3DDevice8_DrawIndexedPrimitiveUP_Original=function(const self:IDirect3DDevice8;const PrimitiveType : TD3DPrimitiveType; const MinVertexIndex, NumVertexIndices, PrimitiveCount : Cardinal; pIndexData : Pointer; IndexDataFormat : TD3DFormat; pVertexStreamZeroData : Pointer; const VertexStreamZeroStride : Cardinal) : HResult; stdcall;type TIDirect3DDevice8_SetVertexShader_Original=function(const self:IDirect3DDevice8;const Handle : LongWord) : HResult; stdcall;type TIDirect3DTexture8_AddRef_Original=function(const self:IDirect3DTexture8) : integer; stdcall;type TIDirect3DTexture8_Release_Original=function(const self:IDirect3DTexture8) : integer; stdcall;type TIDirect3DTexture8_GetSurfaceLevel_Original=function(const self:IDirect3DTexture8; const Level : Cardinal; out ppSurfaceLevel : IDirect3DSurface8) : HResult; stdcall;type TIDirect3DTexture8_UnlockRect_Original=function(const self:IDirect3DTexture8; const Level : Cardinal) : HResult; stdcall;type TIDirect3DVertexBuffer8_Lock_Original=function(const self:IDirect3DVertexBuffer8; const OffsetToLock, SizeToLock : Cardinal; var ppbData : PByte; const Flags : LongWord) : HResult; stdcall;type TIDirect3DVertexBuffer8_Unlock_Original=function(const self:IDirect3DVertexBuffer8) : HResult; stdcall;var Direct3DCreate8:TDirect3DCreate8;    Direct3DCreate8Info: TAPIInfo;var IDirect3D_CreateDevice: TAPIInfo;var IDirect3DDevice8_Reset: TAPIInfo;    IDirect3dDevice8_CreateTexture: TApiInfo;    IDirect3DDevice8_CreateVertexBuffer: TAPIInfo;    IDirect3DDevice8_UpdateTexture:TAPIInfo;    IDirect3DDevice8_BeginScene: TAPIInfo;    IDirect3DDevice8_EndScene: TAPIInfo;    IDirect3DDevice8_SetTransform: TAPIInfo;    IDirect3DDevice8_GetTransform: TAPIInfo;    IDirect3DDevice8_SetRenderState: TAPIInfo;    IDirect3DDevice8_SetTexture: TAPIInfo;    IDirect3DDevice8_DrawPrimitive: TAPIInfo;    IDirect3DDevice8_DrawIndexedPrimitive: TAPIInfo;    IDirect3DDevice8_DrawPrimitiveUP: TAPIInfo;    IDirect3DDevice8_DrawIndexedPrimitiveUP: TAPIInfo;    IDirect3DDevice8_SetVertexShader: TAPIInfo;var IDirect3DVertexBuffer8_Lock: TAPIInfo;    IDirect3DVertexBuffer8_UnLock: TAPIInfo;var IDirect3DTexture8_AddRef: TAPIInfo;    IDirect3DTexture8_Release: TAPIInfo;    IDirect3DTexture8_GetSurfaceLevel: TAPIInfo;    IDirect3DTexture8_UnlockRect: TAPIInfo;procedure SaveAllTextures8;procedure SaveLockedTextureInfo8(aimconfigfile: string);procedure LoadLockedTextureInfo8(aimconfigfile:string);procedure handlekeypresses;function MultiplyMatrix(const A: TD3dMatrix; const B: TD3dMatrix): TD3dMatrix;function Direct3DCreate8Hook(SDKVersion: DWORD): PIDirect3D8; stdcall;function IDirect3D_CreateDevice_Hook(const self:IDirect3D8;const Adapter : Cardinal; const DeviceType : TD3DDevType; hFocusWindow : HWND; BehaviorFlags : LongWord; var pPresentationParameters : TD3DPresent_Parameters; out ppReturnedDeviceInterface : IDirect3DDevice8) : HResult; stdcall;function IDirect3DDevice8_Reset_Hook(const self:IDirect3DDevice8; var pPresentationParameters : TD3DPresent_Parameters) : HResult; stdcall;function IDirect3DDevice8_CreateTexture_Hook(const self:IDirect3DDevice8;const Width, Height, Levels : Cardinal; const Usage : LongWord; const Format : TD3DFormat; const Pool : TD3DPool; out ppTexture : IDirect3DTexture8) : HResult; stdcall;function IDirect3DDevice8_CreateVertexBuffer_Hook(const self:IDirect3DDevice8;const Length : Cardinal; const Usage, FVF : LongWord; const Pool : TD3DPool; out ppVertexBuffer : IDirect3DVertexBuffer8) : HResult; stdcall;function IDirect3DDevice8_UpdateTexture_hook(const self: IDirect3DDevice8; const pSourceTexture, pDestinationTexture : IDirect3DBaseTexture8) : HResult; stdcall;function IDirect3DDevice8_BeginScene_Hook(const self:IDirect3DDevice8): HResult; stdcall;function IDirect3DDevice8_EndScene_Hook(const self:IDirect3DDevice8): HResult; stdcall;function IDirect3DDevice8_SetTransform_Hook(const self: IDirect3DDevice8; const State : TD3DTransformStateType; const pMatrix : TD3DMatrix) : HResult; stdcall;function IDirect3DDevice8_GetTransform_Hook(const self:IDirect3DDevice8;const State : TD3DTransformStateType; out pMatrix : TD3DMatrix) : HResult; stdcall;function IDirect3DDevice8_SetRenderState_Hook(const self:IDirect3DDevice8;const State : TD3DRenderStateType; const Value : LongWord) : HResult; stdcall;function IDirect3DDevice8_SetTexture_Hook(const self:IDirect3DDevice8;const Stage : LongWord; const pTexture : IDirect3DBaseTexture8) : HResult; stdcall;function IDirect3DDevice8_DrawPrimitive_Hook(const self:IDirect3DDevice8;const PrimitiveType : TD3DPrimitiveType; const StartVertex, PrimitiveCount : Cardinal) : HResult; stdcall;function IDirect3DDevice8_DrawIndexedPrimitive_Hook(const self: IDirect3DDevice8;const _Type : TD3DPrimitiveType; const minIndex, NumVertices, startIndex, primCount : Cardinal) : HResult; stdcall;function IDirect3DDevice8_DrawPrimitiveUP_Hook(const self:IDirect3DDevice8;const PrimitiveType : TD3DPrimitiveType; const PrimitiveCount : Cardinal; pVertexStreamZeroData : Pointer; const VertexStreamZeroStride : Cardinal) : HResult; stdcall;function IDirect3DDevice8_DrawIndexedPrimitiveUP_Hook(const self:IDirect3DDevice8;const PrimitiveType : TD3DPrimitiveType; const MinVertexIndex, NumVertexIndices, PrimitiveCount : Cardinal; pIndexData : Pointer; IndexDataFormat : TD3DFormat; pVertexStreamZeroData : Pointer; const VertexStreamZeroStride : Cardinal) : HResult; stdcall;function IDirect3DDevice8_SetVertexShader_Hook(const self:IDirect3DDevice8;const Handle : LongWord) : HResult; stdcall;function IDirect3DTexture8_AddRef_Hook(const self:IDirect3DTexture8) : integer; stdcall;function IDirect3DTexture8_Release_Hook(const self:IDirect3DTexture8) : integer; stdcall;function IDirect3DTexture8_GetSurfaceLevel_Hook(const self:IDirect3DTexture8; const Level : Cardinal; out ppSurfaceLevel : IDirect3DSurface8) : HResult; stdcall;function IDirect3DTexture8_UnlockRect_Hook(const self:IDirect3DTexture8; const Level : Cardinal) : HResult; stdcall;function IDirect3DVertexBuffer8_Lock_Hook(const self:IDirect3DVertexBuffer8; const OffsetToLock, SizeToLock : Cardinal; var ppbData : PByte; const Flags : LongWord) : HResult; stdcall;function IDirect3DVertexBuffer8_Unlock_Hook (const self:IDirect3DVertexBuffer8) : HResult; stdcall;var d3d8dll: THandle;    HookedDirect3D: Boolean;    toggleon: boolean;    tempf1: single;    tempf2: single;    tempf3: single;    tempf4,tempf5: single;    XRotation: single;    YRotation: single;    ZRotation: single;    //ce userinterface    ceimage: TBitmap;    cetexture: IDirect3DBaseTexture8; //;IDirect3DTexture8;    texturestringtexture: IDirect3DTexture8;    Lockedstringtexture: IDirect3DTexture8;    UnLockedstringtexture: IDirect3DTexture8;    cevertices: array of CEVertex;    vertexshaderset: boolean;    dontsetlastvertexshader: boolean;    lastvertexshader: thandle;    lastworldmatrix: TD3dmatrix;    dontsetlastworldmatrix: boolean;    worldmatrixset: boolean;    lastprojectionmatrix,lastprojectionmatrix2: TD3dmatrix;    dontsetlastprojectionmatrix: boolean;    projectionmatrixset: boolean;    lastviewmatrix: TD3dmatrix;    dontsetlastviewmatrix: boolean;    viewmatrixset: boolean;    lockedtexturelist: array of TTextureInfo;    texturelist: array of TTextureInfo;    cefont: ID3dXFont;    mysprite: ID3DXSprite;    myspritetexture: IDirect3DTexture8;    targettexture: IDirect3DTexture8;    locktexture: IDirect3DTexture8;    movementtexture: IDirect3DTexture8;    blackTexture: IDirect3DTexture8;    watchfornextdraw: boolean;    nextdrawstage: dword;    currenttexture: integer;    xylist: array of td3dxvector3;    xylist2: array of td3dxvector3;    oldpos: td3dxvector3;    screencenter: td3dxvector2;    resetdevice: boolean;implementationprocedure SaveAllTextures8;var i: integer;begin  texturelistCS.Enter;  try    for i:=0 to length(texturelist)-1 do      D3DXSaveTextureToFile(pchar('CETEX'+IntToStr(i)+'.bmp'),D3DXIFF_BMP,texturelist[i].texturehandle,nil);  finally    texturelistcs.Leave;  end;end;procedure Removetexture(j: integer);var i: integer;begin  if texturepointer>j then dec(texturepointer);  texturelistcs.Enter;  try    try      for i:=j to length(texturelist)-2 do      begin        texturelist[i].Width:=texturelist[i+1].Width;        texturelist[i].Height:=texturelist[i+1].Height;        texturelist[i].Levels:=texturelist[i+1].Levels;        texturelist[i].Usage:=texturelist[i+1].Usage;        texturelist[i].Format:=texturelist[i+1].Format;        texturelist[i].Pool:=texturelist[i+1].Pool;        texturelist[i].locked:=texturelist[i+1].locked;        texturelist[i].xdelta:=texturelist[i+1].xdelta;        texturelist[i].ydelta:=texturelist[i+1].ydelta;        texturelist[i].zdelta:=texturelist[i+1].zdelta;        copymemory(@texturelist[i].texturehandle,@texturelist[i+1].texturehandle,4);      end;    except      outputdebugstring('error in removing texture (1)');    end;    try      fillmemory(@texturelist[length(texturelist)-1].texturehandle,4,0);    except      outputdebugstring('error in removing texture (2)');    end;    try      setlength(texturelist,length(texturelist)-1);    except      outputdebugstring('error in removing texture (2)');    end;    if texturepointer>=length(texturelist) then texturepointeR:=length(texturelist)-1;  finally    texturelistcs.Leave;  end;end;procedure handlekeypresses;var found: boolean;    i,j: integer;begin  if keys.callibrationmode then  begin    j:=-1;    if checkkeycombo(keys.previoustexture) then if (texturepointer-1)<0 then texturepointer:=length(texturelist)-1 else dec(texturepointer);    if checkkeycombo(keys.nexttexture) then if (texturepointer+1)>=length(texturelist) then texturepointer:=0 else inc(texturepointer);    if checkkeycombo(keys.locktexture) then  //(un)lock    begin      locking:=true;      texturelistcs.Enter;      try        found:=false;        for i:=0 to length(lockedtexturelist)-1 do        begin          if dword(lockedtexturelist[i].texturehandle)=dword(texturelist[texturepointer].texturehandle) then          begin            j:=i;            found:=true;            break;          end;        end;        if found then        begin          imreleasing:=true;          lockedtexturelist[j].texturehandle._Release;          imreleasing:=false;          fillmemory(@lockedtexturelist[j].texturehandle,4,0);          for i:=j to length(lockedtexturelist)-2 do          begin            lockedtexturelist[i].Width:=lockedtexturelist[i+1].Width;            lockedtexturelist[i].Height:=lockedtexturelist[i+1].Height;            lockedtexturelist[i].Levels:=lockedtexturelist[i+1].Levels;            lockedtexturelist[i].Usage:=lockedtexturelist[i+1].Usage;            lockedtexturelist[i].Format:=lockedtexturelist[i+1].Format;            lockedtexturelist[i].Pool:=lockedtexturelist[i+1].Pool;            lockedtexturelist[i].locked:=lockedtexturelist[i+1].locked;            lockedtexturelist[i].xdelta:=lockedtexturelist[i+1].xdelta;            lockedtexturelist[i].ydelta:=lockedtexturelist[i+1].ydelta;            lockedtexturelist[i].zdelta:=lockedtexturelist[i+1].zdelta;            copymemory(@lockedtexturelist[i].texturehandle,@lockedtexturelist[i+1].texturehandle,4);          end;          setlength(lockedtexturelist,length(lockedtexturelist)-1);          texturelist[texturepointer].locked:=false;        end        else        begin          i:=length(lockedtexturelist);          setlength(lockedtexturelist,i+1);          lockedtexturelist[i].Width:=texturelist[texturepointer].Width;          lockedtexturelist[i].Height:=texturelist[texturepointer].Height;          lockedtexturelist[i].Levels:=texturelist[texturepointer].Levels;          lockedtexturelist[i].Usage:=texturelist[texturepointer].Usage;          lockedtexturelist[i].Format:=texturelist[texturepointer].Format;          lockedtexturelist[i].Pool:=texturelist[texturepointer].Pool;          lockedtexturelist[i].locked:=texturelist[texturepointer].locked;          lockedtexturelist[i].xdelta:=texturelist[texturepointer].xdelta;          lockedtexturelist[i].ydelta:=texturelist[texturepointer].ydelta;          lockedtexturelist[i].zdelta:=texturelist[texturepointer].zdelta;          copymemory(@lockedtexturelist[i].texturehandle,@texturelist[texturepointer].texturehandle,4);          lockedtexturelist[i].texturehandle._AddRef;          lockedtexturelist[i].locked:=true;          texturelist[texturepointer].locked:=true;        end;      finally        locking:=false;        texturelistcs.Leave;      end;    end;    try      texturelistcs.Enter;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -