CreateRemoteThreadWriteProcessMemory技术 简要的
来源:互联网 发布:开淘宝店要交押金吗 编辑:程序博客网 时间:2024/05/16 12:21
本文前面已经介绍过CreateRemoteThread的函数原型,注意以下几点:
1、 hProcess参数是CreateRemoteThread的附加参数,它是进程决定创建哪个线程的句柄。
2、 lpStartAddress参数是线程在远程进程地址空间中的开始地址。它必须存在于远程进程中,因此不能简单的拷贝一个地址句柄传递给本地的ThreadFunc,而必须先将代码拷贝到远程进程中。
3、 对于lpParameter参数也一样,也必须将他拷贝到远程进程中。
下面概括一下使用CreateRemoteThread和WriteProcessMemory的具体步骤。
1、返回远程进程的句柄HANDLE(OpenProcess)
2、在远程进程的地址空间中为待注入的代码分配内存(VirtualAllocEX)
3、将已初始化后的INJDATA结构的一个拷贝写入分配的内存(WriteProcessMemory)
4、在远程进程的地址空间中为注入的代码分配内存
5、将ThreadPunc的一个拷贝写入分配的内存
6、使用CreateRemoteThread来执行远程的ThreadFunc拷贝
7、等待远程线程的终止(WaitForSingleObject)
8、从远程进程中返回执行结果(ReadProcessMemory或GetExitCodeThread)
9、释放已申请的内存,包括步骤2和步骤4中的申请(VirtualFreeEx)
10、 关闭返回的句柄,包括步骤1和步骤6中的HANDLE(CloseHandle)
上述步骤中需要定义INJDATA结构:
typedef struct {
HWND hwnd;
SENDMESSAGE fnSendMessage; // pointer to user32!SendMessage
BYTE pbText[128 * sizeof(TCHAR)];
} INJDATA, *PINJDATA;
构造ThreadFunc时将INJDATA作为传递的参数:
static DWORD WINAPI ThreadFunc (INJDATA *pData)
{
return 0;
}
- CreateRemoteThreadWriteProcessMemory技术 简要的
- NAT技术的简要概述
- 勃勃生机的J2ME技术简要标准介绍
- Magento的结构技术简要-EAV模型
- Magento的结构技术简要-EAV模型
- IPv6技术简要解析
- servlet技术简要总结
- 校内网基于aflax的推技术简要分析
- 基于Web的实验室管理系统技术简要报告
- 如何优雅的写作与分享技术?-Markdown 语法简要
- 10本比较鸡肋的技术类书籍,简要回顾
- 三种动态网页技术的简要分析
- 对异常检测技术的简要概述(干货)
- QuestionAnsweringSystem技术实现简要分析
- Mapnik简要与技术说明
- QuestionAnsweringSystem技术实现简要分析
- 很好很强大——简要评述当前所接触的技术玩意儿
- 最近看了《VC++技术内幕》,做些源代码的简要摘抄(1)
- QMAIL控制文件详解
- 通用存储过程之三:根据主键的值,查询记录的存储过程
- 程序员眼中的qmail(qmail源代码分析)(qmail-send)
- 在文本文件中追加数据
- NFace TreeViewer 和ListViewer(JFace Viewer在.Net中的简单实现)
- CreateRemoteThreadWriteProcessMemory技术 简要的
- byshell v0.64编程
- 通用存储过程之四: 生成某一个表分页的存储过程
- 每个学Java的人都应该搞懂的问题
- DOS学习全过程(一步通)
- 通用存储过程之五: 根据查询条件,获取表记录数的存储过程。
- 内部资料泄密,电信拨号软件系最大流氓软件
- css的定义
- 工作心得(6)——备忘 [原]