原理:在目标进程中开启一个线程以执行LoadLibrary(Ex)操作。
步骤:
(1) 提升加载进程的权限
(1) 用VirtualAllocEx函数在远程进程的地址空间中分配一块内存存放参数
(2) 用WriteProcessMemory函数把DLL的路径名复制到(1)步骤分配的内存中
(3) 用GetProcAddress获取LoadLibrary(Ex)函数的实际地址
(4) 用CreateRemoteThread函数在远程进程中创建一个线程,让新线程调用正确的LoadLibrary(Ex)函数并在参数中传入(1)步骤分配的内存地址
(5) 用GetProcAddress获取FreeLibrary函数的实际地址
(6) 用CreateRemoteThread函数在远程进程中创建一个线程,让新线程调用正确的FreeLibrary函数并在参数中传入远程DLL的HMODULE
(7) 用VirtualFreeEx来释放(1)步骤分配的内存
1 | // 远程线程注入DLL |
OpenProcessToken
OpenProcessToken 是 Windows API 中的一个函数,用于打开与指定进程关联的访问令牌(Access Token)。以下是对该函数的详细描述:
1 | #include <windows.h> |
GetCurrentProcess
GetCurrentProcess 是 Windows 操作系统中的一个函数,通常在 Windows API 中使用。该函数用于获取当前执行代码的进程句柄(handle)。
1 | #include <windows.h> |
LookupPrivilegeValue
LookupPrivilegeValue 是 Windows 操作系统中的一个函数,用于查找指定系统的特权(privilege)的本地名称和权限值。
1 | #include <windows.h> |
CloseHandle
CloseHandle 是 Windows 操作系统中的一个函数,用于关闭一个打开的对象句柄。
1 | #include <windows.h> |
AdjustTokenPrivileges
AdjustTokenPrivileges 是 Windows 操作系统中的一个函数,用于修改访问令牌(access token)的权限。以下是其 C 语言描述:
1 | #include <windows.h> |
GetModuleFileName
GetModuleFileName 是 Windows 操作系统中的一个函数,用于获取指定模块的文件名。以下是其 C 语言描述:
1 | #include <windows.h> |
OpenProcess
OpenProcess 是 Windows 操作系统中的一个函数,用于打开一个已存在的进程,并返回该进程的句柄。以下是其 C 语言描述:
1 | #include <windows.h> |
VirtualAllocEx
VirtualAllocEx 是 Windows 操作系统中的一个函数,用于在指定的远程进程中分配内存空间。以下是其 C 语言描述:
1 | #include <windows.h> |
WriteProcessMemory
WriteProcessMemory 是 Windows 操作系统中的一个函数,用于向指定的远程进程写入数据到指定的内存地址。以下是其 C 语言描述:
1 | #include <windows.h> |
GetModuleHandle
GetModuleHandle 是 Windows 操作系统中的一个函数,用于获取指定模块的句柄。以下是其 C 语言描述:
1 | #include <windows.h> |
GetProcAddress
GetProcAddress 是 Windows 操作系统中的一个函数,用于获取指定动态链接库(DLL)中导出函数或变量的地址。以下是其 C 语言描述:
1 | #include <windows.h> |
CreateRemoteThread
CreateRemoteThread 是 Windows 操作系统中的一个函数,用于在远程进程中创建一个新的线程。以下是其 C 语言描述:
1 | #include <windows.h> |
GetLastError
GetLastError 是 Windows 操作系统中的一个函数,用于获取最近一次调用发生错误的错误代码。以下是其 C 语言描述:
1 | #include <windows.h> |
WaitForSingleObject
WaitForSingleObject 是 Windows 操作系统中的一个函数,用于等待一个对象的状态变为 signaled。
1 | #include <windows.h> |
VirtualFreeEx
VirtualFreeEx 是 Windows 操作系统中的一个函数,用于释放在指定的远程进程中分配的虚拟内存空间。
1 | #include <windows.h> |