技术分享 | DLL注入之远线程注入

0x00 远线程注入

远线程注入是指一个进程在另一个进程中创建线程的技术。

0x01 函数介绍

OpenProcess

作用: 打开现有的本地进程对象。

函数声明:

HANDLE WINAPI OpenProcess(
    _In_ DWORD dwDesiredAccess,
    _In_ BOOL  bInheritHandle,
    _In_ DWORD dwProcessId
)

参数:
dwDesiredAccess:
想拥有该进程的访问权限,若进程启动了SeDebugPrivilege权限,则无论安全描述符内容是什么,都会授予请求的访问权限。

bInheritHandle:
若该值为TRUE,则此进程创建的进程将继承该句柄。

dwProcessId:
本地进程的PID。

返回值:
成功:返回进程打开句柄
失败:返回NULL

VirtualAllocEx

作用: 在指定进程的虚拟地址空间内保留、提交或更改内存的状态。

函数声明:

LPVOID WINAPI VirtualAllocEx(
    _In_     HANDLE hProcess,
    _In_opt_ LPVOID lpAddress,
    _In_     SIZE_T dwSize,
    _In_     DWORD  flAllocationType,
    _In_     DWORD  flProtect
)

参数:
hProcess:
过程的句柄。句柄必须有PROCESS_VM_OPERATION(允许远程VM操作)权限。

lpAddress:
指定要分配页面所需起始地址指针。若为NULL,则自动分配内存。

dwSize:
要分配的内存大小,单位为字节。

flAllocationType:
内存分配类型。具体参数参考官方手册。

flProtect:
要分配的页面区域的内存保护。

返回值:
成功:返回分配页面基址
失败:返回NULL

WriteProcessMemory

作用: 在指定的进程中将数据写入内存区域,要写入的整个区域必须可访问,否则操作失败。

函数声明:

BOOL WINAPI WriteProcessMemory(
    _In_  HANDLE  hProcess,
    _In_  LPVOID  lpBaseAddress,
    _In_  LPCVOID lpBuffer,
    _In_  SIZE_T  nSize,
    _Out_ SIZE_T  *lpNumberOfBytesWritten
)

参数:
hProcess:
要修改的进程内存的句柄。句柄必须具有PROCESS_VM_WRITE和PROCESS_VM_OPERATION访问权限。

lpBaseAddress:
指向指定进程中写入数据的基地址指针。

lpBuffer:
指向缓冲区的指针,其中包含要写入指定进程的地址空间中的数据。

nSize:
要写入指定进程的字节数。

lpNumberOfBytesWritten:
指向变量的指针,该变量接收传输到指定进程的字节数。

返回值:
成功:返回不为0
失败:返回0

CreateRemoteThread

作用: 在另一个进程的虚拟地址空间中创建运行的线程。

函数声明:

HANDLE WINAPI CreateRemoteThread(
    _In_  HANDLE                 hProcess,
    _In_  LPSECURITY_ATTRIBUTES  lpThreadAttributes,
    _In_  SIZE_T                 dwStackSize,
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值