kernel32!GetThreadContext
功能:获取目标线程的上下文。
函数原型:
BOOL GetThreadContext(HANDLE hThread, LPCONTEXT lpContext);
参数介绍:
hThread:获取信息目标进程的线程句柄。(用OpenThread获取)
lpContext:一个用于接收信息的CONTEXT结构指针
返回值:
如果成功,返回值不为零.如果不成功,返回值为零
备注:
返回一个给定线程的上下文结构。线程上下文结构中存储了所有线程信息,比如寄存器值和目前状态。
kernel32!QueueUserAPC
功能:把一个APC对象加入到指定线程的APC队列中。
函数原型:
DWORD QueueUserAPC(
PAPCFUNC pfnAPC,
HANDLE hThread,
ULONG_PTR dwData
);
参数介绍:
pfnAPC:指向一个用户提供的APC函数的指针
hThread:指定特定线程的句柄
dwData:指定一个被传到pfnAPC参数指向的APC函数的值。
返回值:
成功返回非0,失败返回0
备注:
用来在其他线程中执行代码,恶意代码有时会使用这个函数注入代码到其他进程。
kernel32!VirtualAllocEx
功能:在指定进程的虚拟空间保留或提交内存区域,除非指定MEM_RESET参数,否则将该内存区域置0。
函数原型:
LPVOID VirtualAllocEx(
HANDLE hProcess,
LPVOID lpAddress,
SIZE_T dwSize,
DWORD flAllocationType,
DWORD flProtect
);
参数介绍:
hProcess:
申请内存所在的进程句柄。
lpAddress:
保留页面的内存地址;一般用NULL自动分配 。
dwSize:
欲分配的内存大小,字节单位;注意实际分 配的内存大小是页内存大小的整数倍
flAllocationType:申请空间的类型。
flProtect:申请空间的保护属性。
返回值:
执行成功就返回分配内存的首地址,不成功就是NULL
备注:
一个内存分配的例程,支持在远程进程中分配内存。恶意代码有时会在进程注入中使用此函数。
kernel32!VirtualProtectEx
功能:改变在特定进程中内存区域的保护属性。
函数原型:
BOOL VirtualProtectEx(
HANDLE hProcess, // 要修改内存的进程句柄
LPVOID lpAddress, // 要修改内存的起始地址
DWORD dwSize, // 页区域大小
DWORD flNewProtect, // 新访问方式
PDWORD lpflOldProtect // 原访问方式 用于保存改变前的保护属性 易语言要传址
);
参数介绍:
hProcess:目的进程的句柄。
lpAddress:要修改内存的起始地址。
dwSize:要修改内存的大小
flNewProtect:保护选项
lpflOldProtect:必须指向一个有效的变量,如果是NULL或者无效的变量,函数将失败
返回值:
如果成功,返回非零。失败返回零
备注:
修改一个内存区域的保护机制,恶意代码可能会使用这个函数来将一块只读的内存节修改为可执行代码。