看流星社区

 找回密码
 注册账号
查看: 2754|回复: 1

[Delphi] 关于D3D注入受驱动保护的游戏 例如(DNF.exe)

[复制链接]

该用户从未签到

发表于 2011-3-18 16:59:08 | 显示全部楼层 |阅读模式
目前我用的有2种方法 :   
  1:替换游戏要加载的DLL 来达到注入自己DLL ,有些游戏有MD5校验文件 无法替换游戏目录的DLL , 只能替换系统目录的文件、
  2:输入法注入,他游戏再怎么保护不可能不让打字吧! 自己写个输入法的IME文件 安装完给游戏发送个输入发消息
  (WM_INPUTLANGCHANGEREQUEST),让他切换到你自己安装的输入法!
  3:替换SPI文件 也是第一种方法 , 网络流传叫啥网络注入的!囧

  1. library d3d8thk;
  2. {这个编译出来的直接替换System32文件夹里的d3d8thk.dll}
  3. uses
  4. Windows;
  5. {$R *.res}
  6. var
  7. ModHandle: Cardinal;
  8. POldOsThunkD3dContextCreate: Pointer;
  9. POldOsThunkD3dContextDestroy: Pointer;
  10. POldOsThunkD3dContextDestroyAll: Pointer;
  11. POldOsThunkD3dDrawPrimitives2: Pointer;
  12. POldOsThunkD3dValidateTextureStageState: Pointer;
  13. POldOsThunkDdAddAttachedSurface: Pointer;
  14. POldOsThunkDdAlphaBlt: Pointer;
  15. POldOsThunkDdAttachSurface: Pointer;
  16. POldOsThunkDdBeginMoCompFrame: Pointer;
  17. POldOsThunkDdBlt: Pointer;
  18. POldOsThunkDdCanCreateD3DBuffer: Pointer;
  19. POldOsThunkDdCanCreateSurface: Pointer;
  20. POldOsThunkDdColorControl: Pointer;
  21. POldOsThunkDdCreateD3DBuffer: Pointer;
  22. POldOsThunkDdCreateDirectDrawObject: Pointer;
  23. POldOsThunkDdCreateMoComp: Pointer;
  24. POldOsThunkDdCreateSurface: Pointer;
  25. POldOsThunkDdCreateSurfaceEx: Pointer;
  26. POldOsThunkDdCreateSurfaceObject: Pointer;
  27. POldOsThunkDdDeleteDirectDrawObject: Pointer;
  28. POldOsThunkDdDeleteSurfaceObject: Pointer;
  29. POldOsThunkDdDestroyD3DBuffer: Pointer;
  30. POldOsThunkDdDestroyMoComp: Pointer;
  31. POldOsThunkDdDestroySurface: Pointer;
  32. POldOsThunkDdEndMoCompFrame: Pointer;
  33. POldOsThunkDdFlip: Pointer;
  34. POldOsThunkDdFlipToGDISurface: Pointer;
  35. POldOsThunkDdGetAvailDriverMemory: Pointer;
  36. POldOsThunkDdGetBltStatus: Pointer;
  37. POldOsThunkDdGetDC: Pointer;
  38. POldOsThunkDdGetDriverInfo: Pointer;
  39. POldOsThunkDdGetDriverState: Pointer;
  40. POldOsThunkDdGetDxHandle: Pointer;
  41. POldOsThunkDdGetFlipStatus: Pointer;
  42. POldOsThunkDdGetInternalMoCompInfo: Pointer;
  43. POldOsThunkDdGetMoCompBuffInfo: Pointer;
  44. POldOsThunkDdGetMoCompFormats: Pointer;
  45. POldOsThunkDdGetMoCompGuids: Pointer;
  46. POldOsThunkDdGetScanLine: Pointer;
  47. POldOsThunkDdLock: Pointer;
  48. POldOsThunkDdLockD3D: Pointer;
  49. POldOsThunkDdQueryDirectDrawObject: Pointer;
  50. POldOsThunkDdQueryMoCompStatus: Pointer;
  51. POldOsThunkDdReenableDirectDrawObject: Pointer;
  52. POldOsThunkDdReleaseDC: Pointer;
  53. POldOsThunkDdRenderMoComp: Pointer;
  54. POldOsThunkDdResetVisrgn: Pointer;
  55. POldOsThunkDdSetColorKey: Pointer;
  56. POldOsThunkDdSetExclusiveMode: Pointer;
  57. POldOsThunkDdSetGammaRamp: Pointer;
  58. POldOsThunkDdSetOverlayPosition: Pointer;
  59. POldOsThunkDdUnattachSurface: Pointer;
  60. POldOsThunkDdUnlock: Pointer;
  61. POldOsThunkDdUnlockD3D: Pointer;
  62. POldOsThunkDdUpdateOverlay: Pointer;
  63. POldOsThunkDdWaitForVerticalBlank: Pointer;
  64. procedure OsThunkD3dContextCreate; asm jmp POldOsThunkD3dContextCreate end;
  65. procedure OsThunkD3dContextDestroy; asm jmp POldOsThunkD3dContextDestroy end;
  66. procedure OsThunkD3dContextDestroyAll; asm jmp POldOsThunkD3dContextDestroyAll end;
  67. procedure OsThunkD3dDrawPrimitives2; asm jmp POldOsThunkD3dDrawPrimitives2 end;
  68. procedure OsThunkD3dValidateTextureStageState; asm jmp POldOsThunkD3dValidateTextureStageState end;
  69. procedure OsThunkDdAddAttachedSurface; asm jmp POldOsThunkDdAddAttachedSurface end;
  70. procedure OsThunkDdAlphaBlt; asm jmp POldOsThunkDdAlphaBlt end;
  71. procedure OsThunkDdAttachSurface; asm jmp POldOsThunkDdAttachSurface end;
  72. procedure OsThunkDdBeginMoCompFrame; asm jmp POldOsThunkDdBeginMoCompFrame end;
  73. procedure OsThunkDdBlt; asm jmp POldOsThunkDdBlt end;
  74. procedure OsThunkDdCanCreateD3DBuffer; asm jmp POldOsThunkDdCanCreateD3DBuffer end;
  75. procedure OsThunkDdCanCreateSurface; asm jmp POldOsThunkDdCanCreateSurface end;
  76. procedure OsThunkDdColorControl; asm jmp POldOsThunkDdColorControl end;
  77. procedure OsThunkDdCreateD3DBuffer; asm jmp POldOsThunkDdCreateD3DBuffer end;
  78. procedure OsThunkDdCreateDirectDrawObject; asm jmp POldOsThunkDdCreateDirectDrawObject end;
  79. procedure OsThunkDdCreateMoComp; asm jmp POldOsThunkDdCreateMoComp end;
  80. procedure OsThunkDdCreateSurface; asm jmp POldOsThunkDdCreateSurface end;
  81. procedure OsThunkDdCreateSurfaceEx; asm jmp POldOsThunkDdCreateSurfaceEx end;
  82. procedure OsThunkDdCreateSurfaceObject; asm jmp POldOsThunkDdCreateSurfaceObject end;
  83. procedure OsThunkDdDeleteDirectDrawObject; asm jmp POldOsThunkDdDeleteDirectDrawObject end;
  84. procedure OsThunkDdDeleteSurfaceObject; asm jmp POldOsThunkDdDeleteSurfaceObject end;
  85. procedure OsThunkDdDestroyD3DBuffer; asm jmp POldOsThunkDdDestroyD3DBuffer end;
  86. procedure OsThunkDdDestroyMoComp; asm jmp POldOsThunkDdDestroyMoComp end;
  87. procedure OsThunkDdDestroySurface; asm jmp POldOsThunkDdDestroySurface end;
  88. procedure OsThunkDdEndMoCompFrame; asm jmp POldOsThunkDdEndMoCompFrame end;
  89. procedure OsThunkDdFlip; asm jmp POldOsThunkDdFlip end;
  90. procedure OsThunkDdFlipToGDISurface; asm jmp POldOsThunkDdFlipToGDISurface end;
  91. procedure OsThunkDdGetAvailDriverMemory; asm jmp POldOsThunkDdGetAvailDriverMemory end;
  92. procedure OsThunkDdGetBltStatus; asm jmp POldOsThunkDdGetBltStatus end;
  93. procedure OsThunkDdGetDC; asm jmp POldOsThunkDdGetDC end;
  94. procedure OsThunkDdGetDriverInfo; asm jmp POldOsThunkDdGetDriverInfo end;
  95. procedure OsThunkDdGetDriverState; asm jmp POldOsThunkDdGetDriverState end;
  96. procedure OsThunkDdGetDxHandle; asm jmp POldOsThunkDdGetDxHandle end;
  97. procedure OsThunkDdGetFlipStatus; asm jmp POldOsThunkDdGetFlipStatus end;
  98. procedure OsThunkDdGetInternalMoCompInfo; asm jmp POldOsThunkDdGetInternalMoCompInfo end;
  99. procedure OsThunkDdGetMoCompBuffInfo; asm jmp POldOsThunkDdGetMoCompBuffInfo end;
  100. procedure OsThunkDdGetMoCompFormats; asm jmp POldOsThunkDdGetMoCompFormats end;
  101. procedure OsThunkDdGetMoCompGuids; asm jmp POldOsThunkDdGetMoCompGuids end;
  102. procedure OsThunkDdGetScanLine; asm jmp POldOsThunkDdGetScanLine end;
  103. procedure OsThunkDdLock; asm jmp POldOsThunkDdLock end;
  104. procedure OsThunkDdLockD3D; asm jmp POldOsThunkDdLockD3D end;
  105. procedure OsThunkDdQueryDirectDrawObject; asm jmp POldOsThunkDdQueryDirectDrawObject end;
  106. procedure OsThunkDdQueryMoCompStatus; asm jmp POldOsThunkDdQueryMoCompStatus end;
  107. procedure OsThunkDdReenableDirectDrawObject; asm jmp POldOsThunkDdReenableDirectDrawObject end;
  108. procedure OsThunkDdReleaseDC; asm jmp POldOsThunkDdReleaseDC end;
  109. procedure OsThunkDdRenderMoComp; asm jmp POldOsThunkDdRenderMoComp end;
  110. procedure OsThunkDdResetVisrgn; asm jmp POldOsThunkDdResetVisrgn end;
  111. procedure OsThunkDdSetColorKey; asm jmp POldOsThunkDdSetColorKey end;
  112. procedure OsThunkDdSetExclusiveMode; asm jmp POldOsThunkDdSetExclusiveMode end;
  113. procedure OsThunkDdSetGammaRamp; asm jmp POldOsThunkDdSetGammaRamp end;
  114. procedure OsThunkDdSetOverlayPosition; asm jmp POldOsThunkDdSetOverlayPosition end;
  115. procedure OsThunkDdUnattachSurface; asm jmp POldOsThunkDdUnattachSurface end;
  116. procedure OsThunkDdUnlock; asm jmp POldOsThunkDdUnlock end;
  117. procedure OsThunkDdUnlockD3D; asm jmp POldOsThunkDdUnlockD3D end;
  118. procedure OsThunkDdUpdateOverlay; asm jmp POldOsThunkDdUpdateOverlay end;
  119. procedure OsThunkDdWaitForVerticalBlank; asm jmp POldOsThunkDdWaitForVerticalBlank end;
  120. procedure MyCode();
  121. begin
  122.   //这里写你的代码
  123. end;
  124. exports
  125. OsThunkD3dContextCreate,
  126. OsThunkD3dContextDestroy,
  127. OsThunkD3dContextDestroyAll,
  128. OsThunkD3dDrawPrimitives2,
  129. OsThunkD3dValidateTextureStageState,
  130. OsThunkDdAddAttachedSurface,
  131. OsThunkDdAlphaBlt,
  132. OsThunkDdAttachSurface,
  133. OsThunkDdBeginMoCompFrame,
  134. OsThunkDdBlt,
  135. OsThunkDdCanCreateD3DBuffer,
  136. OsThunkDdCanCreateSurface,
  137. OsThunkDdColorControl,
  138. OsThunkDdCreateD3DBuffer,
  139. OsThunkDdCreateDirectDrawObject,
  140. OsThunkDdCreateMoComp,
  141. OsThunkDdCreateSurface,
  142. OsThunkDdCreateSurfaceEx,
  143. OsThunkDdCreateSurfaceObject,
  144. OsThunkDdDeleteDirectDrawObject,
  145. OsThunkDdDeleteSurfaceObject,
  146. OsThunkDdDestroyD3DBuffer,
  147. OsThunkDdDestroyMoComp,
  148. OsThunkDdDestroySurface,
  149. OsThunkDdEndMoCompFrame,
  150. OsThunkDdFlip,
  151. OsThunkDdFlipToGDISurface,
  152. OsThunkDdGetAvailDriverMemory,
  153. OsThunkDdGetBltStatus,
  154. OsThunkDdGetDC,
  155. OsThunkDdGetDriverInfo,
  156. OsThunkDdGetDriverState,
  157. OsThunkDdGetDxHandle,
  158. OsThunkDdGetFlipStatus,
  159. OsThunkDdGetInternalMoCompInfo,
  160. OsThunkDdGetMoCompBuffInfo,
  161. OsThunkDdGetMoCompFormats,
  162. OsThunkDdGetMoCompGuids,
  163. OsThunkDdGetScanLine,
  164. OsThunkDdLock,
  165. OsThunkDdLockD3D,
  166. OsThunkDdQueryDirectDrawObject,
  167. OsThunkDdQueryMoCompStatus,
  168. OsThunkDdReenableDirectDrawObject,
  169. OsThunkDdReleaseDC,
  170. OsThunkDdRenderMoComp,
  171. OsThunkDdResetVisrgn,
  172. OsThunkDdSetColorKey,
  173. OsThunkDdSetExclusiveMode,
  174. OsThunkDdSetGammaRamp,
  175. OsThunkDdSetOverlayPosition,
  176. OsThunkDdUnattachSurface,
  177. OsThunkDdUnlock,
  178. OsThunkDdUnlockD3D,
  179. OsThunkDdUpdateOverlay,
  180. OsThunkDdWaitForVerticalBlank;
  181. begin
  182. ModHandle:= LoadLibrary('C:\WINDOWS\DRT.DLL');  //这里是原来的 d3d8thk.dll 假设你施放到了C:\WINDOWS\DRT.DLL
  183. if ModHandle > 0 then
  184. begin
  185. POldOsThunkD3dContextCreate:= GetProcAddress(ModHandle, 'OsThunkD3dContextCreate');
  186. POldOsThunkD3dContextDestroy:= GetProcAddress(ModHandle, 'OsThunkD3dContextDestroy');
  187. POldOsThunkD3dContextDestroyAll:= GetProcAddress(ModHandle, 'OsThunkD3dContextDestroyAll');
  188. POldOsThunkD3dDrawPrimitives2:= GetProcAddress(ModHandle, 'OsThunkD3dDrawPrimitives2');
  189. POldOsThunkD3dValidateTextureStageState:= GetProcAddress(ModHandle, 'OsThunkD3dValidateTextureStageState');
  190. POldOsThunkDdAddAttachedSurface:= GetProcAddress(ModHandle, 'OsThunkDdAddAttachedSurface');
  191. POldOsThunkDdAlphaBlt:= GetProcAddress(ModHandle, 'OsThunkDdAlphaBlt');
  192. POldOsThunkDdAttachSurface:= GetProcAddress(ModHandle, 'OsThunkDdAttachSurface');
  193. POldOsThunkDdBeginMoCompFrame:= GetProcAddress(ModHandle, 'OsThunkDdBeginMoCompFrame');
  194. POldOsThunkDdBlt:= GetProcAddress(ModHandle, 'OsThunkDdBlt');
  195. POldOsThunkDdCanCreateD3DBuffer:= GetProcAddress(ModHandle, 'OsThunkDdCanCreateD3DBuffer');
  196. POldOsThunkDdCanCreateSurface:= GetProcAddress(ModHandle, 'OsThunkDdCanCreateSurface');
  197. POldOsThunkDdColorControl:= GetProcAddress(ModHandle, 'OsThunkDdColorControl');
  198. POldOsThunkDdCreateD3DBuffer:= GetProcAddress(ModHandle, 'OsThunkDdCreateD3DBuffer');
  199. POldOsThunkDdCreateDirectDrawObject:= GetProcAddress(ModHandle, 'OsThunkDdCreateDirectDrawObject');
  200. POldOsThunkDdCreateMoComp:= GetProcAddress(ModHandle, 'OsThunkDdCreateMoComp');
  201. POldOsThunkDdCreateSurface:= GetProcAddress(ModHandle, 'OsThunkDdCreateSurface');
  202. POldOsThunkDdCreateSurfaceEx:= GetProcAddress(ModHandle, 'OsThunkDdCreateSurfaceEx');
  203. POldOsThunkDdCreateSurfaceObject:= GetProcAddress(ModHandle, 'OsThunkDdCreateSurfaceObject');
  204. POldOsThunkDdDeleteDirectDrawObject:= GetProcAddress(ModHandle, 'OsThunkDdDeleteDirectDrawObject');
  205. POldOsThunkDdDeleteSurfaceObject:= GetProcAddress(ModHandle, 'OsThunkDdDeleteSurfaceObject');
  206. POldOsThunkDdDestroyD3DBuffer:= GetProcAddress(ModHandle, 'OsThunkDdDestroyD3DBuffer');
  207. POldOsThunkDdDestroyMoComp:= GetProcAddress(ModHandle, 'OsThunkDdDestroyMoComp');
  208. POldOsThunkDdDestroySurface:= GetProcAddress(ModHandle, 'OsThunkDdDestroySurface');
  209. POldOsThunkDdEndMoCompFrame:= GetProcAddress(ModHandle, 'OsThunkDdEndMoCompFrame');
  210. POldOsThunkDdFlip:= GetProcAddress(ModHandle, 'OsThunkDdFlip');
  211. POldOsThunkDdFlipToGDISurface:= GetProcAddress(ModHandle, 'OsThunkDdFlipToGDISurface');
  212. POldOsThunkDdGetAvailDriverMemory:= GetProcAddress(ModHandle, 'OsThunkDdGetAvailDriverMemory');
  213. POldOsThunkDdGetBltStatus:= GetProcAddress(ModHandle, 'OsThunkDdGetBltStatus');
  214. POldOsThunkDdGetDC:= GetProcAddress(ModHandle, 'OsThunkDdGetDC');
  215. POldOsThunkDdGetDriverInfo:= GetProcAddress(ModHandle, 'OsThunkDdGetDriverInfo');
  216. POldOsThunkDdGetDriverState:= GetProcAddress(ModHandle, 'OsThunkDdGetDriverState');
  217. POldOsThunkDdGetDxHandle:= GetProcAddress(ModHandle, 'OsThunkDdGetDxHandle');
  218. POldOsThunkDdGetFlipStatus:= GetProcAddress(ModHandle, 'OsThunkDdGetFlipStatus');
  219. POldOsThunkDdGetInternalMoCompInfo:= GetProcAddress(ModHandle, 'OsThunkDdGetInternalMoCompInfo');
  220. POldOsThunkDdGetMoCompBuffInfo:= GetProcAddress(ModHandle, 'OsThunkDdGetMoCompBuffInfo');
  221. POldOsThunkDdGetMoCompFormats:= GetProcAddress(ModHandle, 'OsThunkDdGetMoCompFormats');
  222. POldOsThunkDdGetMoCompGuids:= GetProcAddress(ModHandle, 'OsThunkDdGetMoCompGuids');
  223. POldOsThunkDdGetScanLine:= GetProcAddress(ModHandle, 'OsThunkDdGetScanLine');
  224. POldOsThunkDdLock:= GetProcAddress(ModHandle, 'OsThunkDdLock');
  225. POldOsThunkDdLockD3D:= GetProcAddress(ModHandle, 'OsThunkDdLockD3D');
  226. POldOsThunkDdQueryDirectDrawObject:= GetProcAddress(ModHandle, 'OsThunkDdQueryDirectDrawObject');
  227. POldOsThunkDdQueryMoCompStatus:= GetProcAddress(ModHandle, 'OsThunkDdQueryMoCompStatus');
  228. POldOsThunkDdReenableDirectDrawObject:= GetProcAddress(ModHandle, 'OsThunkDdReenableDirectDrawObject');
  229. POldOsThunkDdReleaseDC:= GetProcAddress(ModHandle, 'OsThunkDdReleaseDC');
  230. POldOsThunkDdRenderMoComp:= GetProcAddress(ModHandle, 'OsThunkDdRenderMoComp');
  231. POldOsThunkDdResetVisrgn:= GetProcAddress(ModHandle, 'OsThunkDdResetVisrgn');
  232. POldOsThunkDdSetColorKey:= GetProcAddress(ModHandle, 'OsThunkDdSetColorKey');
  233. POldOsThunkDdSetExclusiveMode:= GetProcAddress(ModHandle, 'OsThunkDdSetExclusiveMode');
  234. POldOsThunkDdSetGammaRamp:= GetProcAddress(ModHandle, 'OsThunkDdSetGammaRamp');
  235. POldOsThunkDdSetOverlayPosition:= GetProcAddress(ModHandle, 'OsThunkDdSetOverlayPosition');
  236. POldOsThunkDdUnattachSurface:= GetProcAddress(ModHandle, 'OsThunkDdUnattachSurface');
  237. POldOsThunkDdUnlock:= GetProcAddress(ModHandle, 'OsThunkDdUnlock');
  238. POldOsThunkDdUnlockD3D:= GetProcAddress(ModHandle, 'OsThunkDdUnlockD3D');
  239. POldOsThunkDdUpdateOverlay:= GetProcAddress(ModHandle, 'OsThunkDdUpdateOverlay');
  240. POldOsThunkDdWaitForVerticalBlank:= GetProcAddress(ModHandle, 'OsThunkDdWaitForVerticalBlank');
  241. end;
  242. MyCode;      //加载完原DLL函数然后执行我们自定义代码
  243. end.
复制代码

该用户从未签到

发表于 2011-3-22 13:03:27 | 显示全部楼层
没看懂。。
点击按钮快速添加回复内容: 支持 高兴 激动 给力 加油 苦寻 生气 回帖 路过 感恩
您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

小黑屋|手机版|Archiver|看流星社区 |网站地图

GMT+8, 2024-4-20 17:05

Powered by Kanliuxing X3.4

© 2010-2019 kanliuxing.com

快速回复 返回顶部 返回列表