1 // Win32Project2.cpp : 定义 DLL 应用程序的导出函数。 2 // 3 /////////////////////////////////////////////////////////////////////////////////////////////////////// 4 /* 5 6 DLL名称劫持注入法 7 8 当游戏运行加载一个重要的的DLL模块时,我们让他来加载我们需要注入的DLL和原来那个必须加载的游戏DLL模块。 9 10 比如说一些游戏加载游戏本身DLL“client.dll”。 11 游戏DLL“client.dll”重命名为“client- original.dll”。 12 把我们需要注入的DLL重命名成“client.dll”,并把2个DLL放在一起。 13 把下面源码的client.exe更换成你需要注入的游戏的进程名。 14 15 原理: 16 游戏运行时先加载我们伪造的DLL“client.dll”,但由于关键函数还在原来的client.dll中。 17 所以先将自身复制为临时文件“client - temp.dll” 18 加载后然后卸载本身。替换原来的“client.dll”并加载。 19 然后,它运行一个bat脚本,将等待游戏退出,一旦游戏退出。 20 bat脚本将复制临时文件“client - temp.dll”到“client.dll”, 21 这样它就会在下次游戏启动时继续加载。 22 23 24 */ 25 #include "stdafx.h" 26 #include "fstream" 27 using namespace std; 28 29 30 void 替换(char* szBuffer, size_t bufferSize, char* from, char* to) 31 { 32 char* szpTemp, 33 *szpTempBuffer, 34 *szpCurrentBuffer; 35 36 37 szpCurrentBuffer = szBuffer; 38 szpTempBuffer = new char[bufferSize]; 39 40 while (true) 41 { 42 szpTemp = strstr(szpCurrentBuffer, from); 43 44 if (szpTemp != NULL) 45 { 46 if (strlen(szBuffer) - strlen(from) + strlen(to) < bufferSize) 47 { 48 strcpy(szpTempBuffer, szpTemp + strlen(from)); 49 50 *szpTemp = '