// Win32Project2.cpp : 定义 DLL 应用程序的导出函数。
//
///////////////////////////////////////////////////////////////////////////////////////////////////////
/* DLL名称劫持注入法 当游戏运行加载一个重要的的DLL模块时,我们让他来加载我们需要注入的DLL和原来那个必须加载的游戏DLL模块。 比如说一些游戏加载游戏本身DLL“client.dll”。
游戏DLL“client.dll”重命名为“client- original.dll”。
把我们需要注入的DLL重命名成“client.dll”,并把2个DLL放在一起。
把下面源码的client.exe更换成你需要注入的游戏的进程名。 原理:
游戏运行时先加载我们伪造的DLL“client.dll”,但由于关键函数还在原来的client.dll中。
所以先将自身复制为临时文件“client - temp.dll”
加载后然后卸载本身。替换原来的“client.dll”并加载。
然后,它运行一个bat脚本,将等待游戏退出,一旦游戏退出。
bat脚本将复制临时文件“client - temp.dll”到“client.dll”,
这样它就会在下次游戏启动时继续加载。 */
#include "stdafx.h"
#include "fstream"
using namespace std; void 替换(char* szBuffer, size_t bufferSize, char* from, char* to)
{
char* szpTemp,
*szpTempBuffer,
*szpCurrentBuffer; szpCurrentBuffer = szBuffer;
szpTempBuffer = new char[bufferSize]; while (true)
{
szpTemp = strstr(szpCurrentBuffer, from); if (szpTemp != NULL)
{
if (strlen(szBuffer) - strlen(from) + strlen(to) < bufferSize)
{
strcpy(szpTempBuffer, szpTemp + strlen(from)); *szpTemp = '\0';
strcat(szpTemp, to);
szpCurrentBuffer = szpTemp + strlen(to);
strcat(szpTemp, szpTempBuffer);
}
else
break;
}
else
break;
} delete[] szpTempBuffer;
} DWORD WINAPI ThreadMain(LPVOID lpvParam)
{
MessageBox(, "劫持注入成功", "hello", ); return ;
} BOOL WINAPI DllMain(HMODULE hModule, DWORD dwReason, LPVOID lpvReserved)
{
BYTE* pCave; ifstream in; ofstream out; BOOL bLoad; FARPROC targetFunction; HMODULE hTargetModule; char* szpName; char szFileName[MAX_PATH],
szBuffer[MAX_PATH],
szTempBuffer[MAX_PATH]; char* szpTargetModule; STARTUPINFO si = { sizeof(STARTUPINFO) }; PROCESS_INFORMATION pi; char szCmdLine[MAX_PATH]; bLoad = FALSE; if (dwReason == DLL_PROCESS_ATTACH)
{
GetModuleFileName(hModule, szFileName, sizeof(szFileName));
strcpy(szBuffer, szFileName); // 判断自身是否为临时文件,如果不是临时文件将创建并加载
if (strstr(szFileName, " - temp.dll") == NULL)
{
替换(szBuffer, sizeof(szBuffer), ".dll", " - temp.dll"); if (CopyFile(szFileName, szBuffer, FALSE) != NULL)
{
szpTargetModule = (char*)VirtualAlloc(NULL, , MEM_COMMIT, PAGE_EXECUTE_READWRITE); strcpy(szpTargetModule, szBuffer); hTargetModule = GetModuleHandle("Kernel32.dll");
targetFunction = GetProcAddress(hTargetModule, "LoadLibraryA"); pCave = (BYTE*)VirtualAlloc(NULL, 0x10, MEM_COMMIT, PAGE_EXECUTE_READWRITE);
*pCave++ = 0x68;
*(DWORD*)pCave = (DWORD)szpTargetModule;
pCave += ;
*pCave++ = 0xe8;
*(DWORD*)pCave = (DWORD)((DWORD)targetFunction - (DWORD)pCave - );
pCave += ;
*pCave++ = 0xc2;
*pCave++ = 0x04;
*pCave++ = 0x00;
pCave -= ; CreateThread(, , (LPTHREAD_START_ROUTINE)pCave, , , );
}
}
else
{
// 如果是临时的DLL
替换(szBuffer, sizeof(szBuffer), " - temp.dll", ".dll"); // 等待遊戲主進程是否佔用此DLL 等待寫入權限
do
{
in.open(szBuffer, ios::out); if (in.is_open() == true)
{
in.close();
break;
} Sleep();
} while (true); // 写一个bat脚本,一旦游戏退出,恢复自身文件名,下次可以继续加载
//// 把下面的client.exe改成你需要注入的游戏进程名
out.open("bat.bat", ios::out); if (out.is_open() == true)
{
out << ":WAITLOOP" << endl;
out << "tasklist /FI \"IMAGENAME eq Client.exe\" 2>NUL | find /I /N \"Client.exe\">NUL" << endl;
out << "if \"%ERRORLEVEL%\"==\"0\" goto RUNNING" << endl;
out << "goto NOTRUNNING" << endl; out << ":RUNNING" << endl;
out << "timeout /t 2" << endl;
out << "goto WAITLOOP" << endl; out << ":NOTRUNNING" << endl;
out << "copy \"" << szFileName << "\" \"" << szBuffer << "\"" << endl;
out.close(); strcpy(szTempBuffer, szFileName);
*strrchr(szTempBuffer, '\\') = '\0'; sprintf(szCmdLine, "cmd.exe /C \"%s\\bat.bat\"", szTempBuffer); CreateProcess(NULL, szCmdLine, , , FALSE, CREATE_UNICODE_ENVIRONMENT, NULL, , &si, &pi);
} 替换(szFileName, sizeof(szFileName), " - temp.dll", " - original.dll");
CopyFile(szFileName, szBuffer, FALSE); LoadLibrary(szBuffer); CreateThread(, , ThreadMain, , , );
bLoad = TRUE;
}
} return bLoad;
}

DLL另類劫持注入法的更多相关文章

  1. 注入技术--LSP劫持注入

    1.原理 简单来说,LSP就是一个dll程序. 应用程序通过winsock2进行网络通信时,会调用ws2_32.dll的导出函数,如connect,accept等. 而后端通过LSP实现这些函数的底层 ...

  2. 安全之路 —— 借助DLL进行远程线程注入实现穿墙与隐藏进程

    简介        大多数后门或病毒要想初步实现隐藏进程,即不被像任务管理器这样典型的RING3级进程管理器找到过于明显的不明进程,其中比较著名的方法就是通过远程线程注入的方法注入将恶意进程的DLL文 ...

  3. Sqli labs系列-less-5&6 报错注入法(下)

    我先输入 ' 让其出错. 然后知道语句是单引号闭合. 然后直接 and 1=1 测试. 返回正常,再 and 1=2 . 返回错误,开始猜表段数. 恩,3位.让其报错,然后注入... 擦,不错出,再加 ...

  4. Sqli labs系列-less-5&6 报错注入法(上)

    在我一系列常规的测试后发现,第五关和第六关,是属于报错注入的关卡,两关的区别是一个是单引号一个是双引号...当然我是看了源码的.... 基于报错注入的方法,我早就忘的差不多了,,,我记的我最后一次基于 ...

  5. DLL注入技术之劫持进程创建注入

    劫持进程创建注入原理是利用Windows系统中CreateProcess()这个API创建一个进程,并将第6个参数设为CREATE_SUSPENDED,进而创建一个挂起状态的进程,利用这个进程状态进行 ...

  6. 老树开新花:DLL劫持漏洞新玩法

    本文原创作者:丝绸之路 <img src="http://image.3001.net/images/20150921/14428044502635.jpg!small" t ...

  7. 36.浅谈DLL劫持

    最近在搞内网,需要实现免杀后门,大佬推荐了dll劫持,DLL劫持后,能干很多事情,比如杀软对某些厂商的软件是实行白名单的,你干些敏感操作都是不拦截,不提示的.还有留后门,提权等等.本文主要介绍如何检测 ...

  8. Dll劫持漏洞详解

      一.dll的定义 DLL(Dynamic Link Library)文件为动态链接库文件,又称“应用程序拓展”,是软件文件类型.在Windows中,许多应用程序并不是一个完整的可执行文件,它们被分 ...

  9. 关于dll劫持我的奇思妙想(一)

    0x00  前言 前段时间在研究着windows底层的一些东西,发现这个dll劫持一直没有做过,根据倾旋师傅的视频和文章做了一系列的研究,然后就突发来了兴致研究一些dll劫持提权. 0x01   了解 ...

随机推荐

  1. 用深度学习LSTM炒股:对冲基金案例分析

    英伟达昨天一边发布“全球最大的GPU”,一边经历股价跳水20多美元,到今天发稿时间也没恢复过来.无数同学在后台问文摘菌,要不要抄一波底嘞? 今天用深度学习的序列模型预测股价已经取得了不错的效果,尤其是 ...

  2. navicate for mysql mac 含注册机 亲测可用

    百度网盘:https://pan.baidu.com/s/1hrXnRes

  3. Sass、Less编译器koala及koala不支持中文字体的解决方法

    一款很好用的Sass编译器,还可以编译Less.coffeescript等 去官网下载适合自己电脑的版本 http://koala-app.com/index-zh.html 打开后拖动或者打开项目目 ...

  4. 手贱!使用django,在数据库直接删除了表

    莫名其妙的错误. 删除了migreation文件,并且更换了数据库. 1.直接makemigrations + migrate    error: no change ??  WTF 2.makemi ...

  5. oracle10偶然性卡住登陆

    连接数据库异常:登陆数据库后以"conn /as sysdba"方式登陆正常,数据库轻载,无压力:于是检查数据库的监听器,输入"lsntctl services" ...

  6. 某C电面记

    昨天突然接到某C的电话面试,有点措不及防.15分钟左右的电面后,直接收到了不合适的邮件通知,那个惨~~~~~~~~~~~~~~~ 记录回答得不是很好的几个问题: 1.自动化层面,你做了什么工作,给团队 ...

  7. 解决打开visio2013提示windows正在配置的问题

    由于之前装过office2007.也装过2010版本.新安装visio2013就会出现如下情况 解决办法: 主要是要清理完visio2010及之前的那些没用选项 1.在cmd命令下打开regedit注 ...

  8. DOS系统变量

    %ALLUSERSPROFILE% : 列出所有用户Profile文件位置.%APPDATA% : 列出应用程序数据的默认存放位置.%CD% : 列出当前目录.%CLIENTNAME% : 列出联接到 ...

  9. ABAP-BarCode-1-HTML二维码打印及动态屏幕实现

    很久很久...以前写的一个测试程序,主要是通过ABAP与HTML交互,编写JavaScript实现二维码及动态屏幕实现. 1.ABAP界面效果 2.实现代码 *&--------------- ...

  10. How to Pronounce OPPORTUNITY

    How to Pronounce OPPORTUNITY Share Tweet Share Take the opportunity to learn this word!  Learn how t ...