挂海论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
 友情提示:文字/图片广告均非网站意见,请担保交易勿直接付款,由此产生的责任自负
游戏交易就上寄售网-专注稳定-诚信赢天下玩游戏来117游戏网(H5不下载也能玩手游传奇,吃鸡,竞技都有)天下盾/国内/免实名/免备案CDN无视一切CC/DD攻击
→入驻S9企业发卡网各种全黑号辅助群:475351077 ██【我要租此广告位】██.
.. .
查看: 6159|回复: 15
打印 上一主题 下一主题

[讨论交流] DLL另類劫持注入法

[复制链接]

29

积分

14

主题

2

听众
已帮网友解决0 个问题
好评
0
贡献
15
海币
726
交易币
0
跳转到指定楼层
楼主
发表于 2015-1-17 16:47:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
提醒:若下载的软件是收费的"请不要付款",可能是骗子,请立即联系本站举报,执意要付款被骗后本站概不负责。(任何交易请走第三方中介,请勿直接付款交易以免被骗!切记).

友情提示:文字/图片广告均非本站意见,请担保交易勿直接付款,由此产生的责任自负!!!↑↑


  1. // Win32Project2.cpp : 定义 DLL 应用程序的导出函数。
  2. //
  3. ///////////////////////////////////////////////////////////////////////////////////////////////////////
  4. /*

  5.                                    DLL名称劫持注入法

  6. 当游戏运行加载一个重要的的DLL模块时,我们让他来加载我们需要注入的DLL和原来那个必须加载的游戏DLL模块。

  7. 比如说一些游戏加载游戏本身DLL“client.dll”。
  8. 游戏DLL“client.dll”重命名为“client- original.dll”。
  9. 把我们需要注入的DLL重命名成“client.dll”,并把2个DLL放在一起。
  10. 把下面源码的client.exe更换成你需要注入的游戏的进程名。

  11. 原理:
  12. 游戏运行时先加载我们伪造的DLL“client.dll”,但由于关键函数还在原来的client.dll中。
  13. 所以先将自身复制为临时文件“client - temp.dll”
  14. 加载后然后卸载本身。替换原来的“client.dll”并加载。
  15. 然后,它运行一个bat脚本,将等待游戏退出,一旦游戏退出。
  16. bat脚本将复制临时文件“client - temp.dll”到“client.dll”,
  17. 这样它就会在下次游戏启动时继续加载。


  18. */
  19. #include "stdafx.h"
  20. #include "fstream"
  21. using namespace std;


  22. void 替换(char* szBuffer, size_t bufferSize, char* from, char* to)
  23. {
  24.         char* szpTemp,
  25.                 *szpTempBuffer,
  26.                 *szpCurrentBuffer;


  27.         szpCurrentBuffer = szBuffer;
  28.         szpTempBuffer = new char[bufferSize];

  29.         while (true)
  30.         {
  31.                 szpTemp = strstr(szpCurrentBuffer, from);

  32.                 if (szpTemp != NULL)
  33.                 {
  34.                         if (strlen(szBuffer) - strlen(from) + strlen(to) < bufferSize)
  35.                         {
  36.                                 strcpy(szpTempBuffer, szpTemp + strlen(from));

  37.                                 *szpTemp = '\0';
  38.                                 strcat(szpTemp, to);
  39.                                 szpCurrentBuffer = szpTemp + strlen(to);
  40.                                 strcat(szpTemp, szpTempBuffer);
  41.                         }
  42.                         else
  43.                                 break;
  44.                 }
  45.                 else
  46.                         break;
  47.         }

  48.         delete[] szpTempBuffer;
  49. }

  50. DWORD WINAPI ThreadMain(LPVOID lpvParam)
  51. {
  52.         MessageBox(0, "劫持注入成功", "hello", 0);

  53.         return 0;
  54. }

  55. BOOL WINAPI DllMain(HMODULE hModule, DWORD dwReason, LPVOID lpvReserved)
  56. {
  57.         BYTE* pCave;

  58.         ifstream in;

  59.         ofstream out;

  60.         BOOL bLoad;

  61.         FARPROC targetFunction;

  62.         HMODULE hTargetModule;

  63.         char* szpName;

  64.         char szFileName[MAX_PATH],
  65.                 szBuffer[MAX_PATH],
  66.                 szTempBuffer[MAX_PATH];

  67.         char* szpTargetModule;

  68.         STARTUPINFO si = { sizeof(STARTUPINFO) };

  69.         PROCESS_INFORMATION pi;

  70.         char szCmdLine[MAX_PATH];


  71.         bLoad = FALSE;


  72.         if (dwReason == DLL_PROCESS_ATTACH)
  73.         {
  74.                 GetModuleFileName(hModule, szFileName, sizeof(szFileName));
  75.                 strcpy(szBuffer, szFileName);

  76.                 // 判断自身是否为临时文件,如果不是临时文件将创建并加载
  77.                 if (strstr(szFileName, " - temp.dll") == NULL)
  78.                 {
  79.                         替换(szBuffer, sizeof(szBuffer), ".dll", " - temp.dll");

  80.                         if (CopyFile(szFileName, szBuffer, FALSE) != NULL)
  81.                         {
  82.                                 szpTargetModule = (char*)VirtualAlloc(NULL, 1024, MEM_COMMIT, PAGE_EXECUTE_READWRITE);

  83.                                 strcpy(szpTargetModule, szBuffer);

  84.                                 hTargetModule = GetModuleHandle("Kernel32.dll");
  85.                                 targetFunction = GetProcAddress(hTargetModule, "LoadLibraryA");

  86.                                 pCave = (BYTE*)VirtualAlloc(NULL, 0x10, MEM_COMMIT, PAGE_EXECUTE_READWRITE);
  87.                                 *pCave++ = 0x68;
  88.                                 *(DWORD*)pCave = (DWORD)szpTargetModule;
  89.                                 pCave += 4;
  90.                                 *pCave++ = 0xe8;
  91.                                 *(DWORD*)pCave = (DWORD)((DWORD)targetFunction - (DWORD)pCave - 4);
  92.                                 pCave += 4;
  93.                                 *pCave++ = 0xc2;
  94.                                 *pCave++ = 0x04;
  95.                                 *pCave++ = 0x00;
  96.                                 pCave -= 13;

  97.                                 CreateThread(0, 0, (LPTHREAD_START_ROUTINE)pCave, 0, 0, 0);
  98.                         }
  99.                 }
  100.                 else
  101.                 {
  102.                         // 如果是临时的DLL
  103.                         替换(szBuffer, sizeof(szBuffer), " - temp.dll", ".dll");

  104.                         // 等待遊戲主進程是否佔用此DLL  等待寫入權限
  105.                         do
  106.                         {
  107.                                 in.open(szBuffer, ios::out);

  108.                                 if (in.is_open() == true)
  109.                                 {
  110.                                         in.close();
  111.                                         break;
  112.                                 }

  113.                                 Sleep(1000);
  114.                         } while (true);



  115.                         // 写一个bat脚本,一旦游戏退出,恢复自身文件名,下次可以继续加载
  116.                         ////  把下面的client.exe改成你需要注入的游戏进程名
  117.                         out.open("bat.bat", ios::out);

  118.                         if (out.is_open() == true)
  119.                         {
  120.                                 out << ":WAITLOOP" << endl;
  121.                                 out << "tasklist /FI \"IMAGENAME eq Client.exe\" 2>NUL | find /I /N \"Client.exe\">NUL" << endl;
  122.                                 out << "if \"%ERRORLEVEL%\"==\"0\" goto RUNNING" << endl;
  123.                                 out << "goto NOTRUNNING" << endl;

  124.                                 out << ":RUNNING" << endl;
  125.                                 out << "timeout /t 2" << endl;
  126.                                 out << "goto WAITLOOP" << endl;

  127.                                 out << ":NOTRUNNING" << endl;
  128.                                 out << "copy \"" << szFileName << "\" \"" << szBuffer << "\"" << endl;
  129.                                 out.close();

  130.                                 strcpy(szTempBuffer, szFileName);
  131.                                 *strrchr(szTempBuffer, '\\') = '\0';

  132.                                 sprintf(szCmdLine, "cmd.exe /C \"%s\\bat.bat\"", szTempBuffer);

  133.                                 CreateProcess(NULL, szCmdLine, 0, 0, FALSE, CREATE_UNICODE_ENVIRONMENT, NULL, 0, &si, &pi);
  134.                         }

  135.                         替换(szFileName, sizeof(szFileName), " - temp.dll", " - original.dll");
  136.                         CopyFile(szFileName, szBuffer, FALSE);

  137.                         LoadLibrary(szBuffer);

  138.                         CreateThread(0, 0, ThreadMain, 0, 0, 0);
  139.                         bLoad = TRUE;
  140.                 }
  141.         }

  142.         return bLoad;
  143. }
复制代码




联系我时,请说是在 挂海论坛 上看到的,谢谢!



上一篇:LOL 人物基址特征码
下一篇:LOL无限视距OD特征码
免责声明:
1、本主题所有言论和图片纯属会员个人意见,与本论坛立场无关。一切关于该内容及资源商业行为与www.52ghai.com无关。

2、本站提供的一切资源内容信息仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。

3、本站信息来自第三方用户,非本站自制,版权归原作者享有,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。

4、如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵犯你版权的,请邮件与我们联系删除(邮箱:[email protected]),本站将立即改正。

8资深会员
1320/1800

1320

积分

286

主题

35

听众
已帮网友解决0 个问题
好评
11
贡献
1034
海币
3726
交易币
5
沙发
发表于 2015-1-18 00:27:32 | 只看该作者
锄禾日当午,发帖真辛苦。谁知坛中餐,帖帖皆辛苦!

21

积分

14

主题

2

听众
已帮网友解决0 个问题
好评
0
贡献
7
海币
66
交易币
0
板凳
发表于 2015-1-23 15:10:39 | 只看该作者
支持支持再支持
4中级会员
373/600

373

积分

122

主题

3

听众
已帮网友解决0 个问题
好评
0
贡献
251
海币
735
交易币
0
地板
发表于 2015-1-25 11:36:13 | 只看该作者
沙发???

0

积分

0

主题

3

听众
已帮网友解决0 个问题
好评
0
贡献
0
海币
202
交易币
0
5#
发表于 2015-1-25 14:13:26 | 只看该作者
看到这帖子真是高兴!

0

积分

0

主题

0

听众
已帮网友解决0 个问题
好评
0
贡献
0
海币
5
交易币
0
6#
发表于 2015-2-4 06:52:01 | 只看该作者
楼主呀,,,您太有才了。。。
3正式会员
128/300

128

积分

51

主题

3

听众
已帮网友解决0 个问题
好评
0
贡献
77
海币
6699
交易币
0
7#
发表于 2015-6-12 18:34:43 | 只看该作者
我只是看看楼主,不发表观点。

1

积分

0

主题

2

听众
已帮网友解决0 个问题
好评
0
贡献
1
海币
3
交易币
0
8#
发表于 2015-6-13 01:35:13 | 只看该作者
好高深
回复

使用道具 举报

21

积分

14

主题

2

听众
已帮网友解决0 个问题
好评
0
贡献
7
海币
66
交易币
0
9#
发表于 2015-7-27 08:28:41 | 只看该作者
楼主很给力哈,在此代表需要的人对楼主表示无尽的感激之情

0

积分

0

主题

1

听众
已帮网友解决0 个问题
好评
0
贡献
0
海币
996
交易币
0
10#
发表于 2015-7-28 13:22:20 | 只看该作者
我飘过一下 赚一个海币
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

免责声明|Archiver|手机版|小黑屋|挂海论坛

GMT+8, 2024-5-14 19:50 , Processed in 0.423008 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.2

本站资源来自互联网用户收集发布,如有侵权请邮件与我们联系处理。xhzlw@foxmail.com

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