线程插入技术详解-Read.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
线程插入技术详解-Read.doc

线程插入技术详解 谷夕 前置知识:DLL、远程线程 难度: 高 编译环境:VC6.0+win2000 测试环境:win2000+天网防火墙 “大家好,今天我们来讨论现在木马或后门比较流行的技术-线程插入技术。” “什么是线程插入技术啊?”一小菜问。 “线程插入技术也叫远程线程技术,指的是将自己的代码入正在运行的进程中的技术这种技术,只要有基本的进线程和动态链接库的知识就可以很轻松地完成,下面就为大家介绍一下远程线程技术。远程线程技术是通过在另一个进程中创建远程线程的方法进入那个进程的内存地址空间。我们知道,在进程中,可以通过CreateThread函数创建线程,被创建的新线程与主线程(就是进程启动时被同时自动建立的那个线程)共享地址空间以及其他的资源。但是,通过CreateRemoteThread也同样可以在另一个进程内创建新线程,被创建的远程线程同样可以共享远程进程(是远程进程)的地址空间,所以,实际上,我们通过一个远程线程,进入了远程进程的内存地址空间,也就拥有了那个远程进程相当的权限。例如在远程进程内部启动一个DLL木马HANDLE CreateRemoteThread( HANDLE hProcess, // handle to process LPSECURITY_ATTRIBUTES lpThreadAttributes, // SD SIZE_T dwStackSize, // initial stack size LPTHREAD_START_ROUTINE lpStartAddress, // thread function LPVOID lpParameter, // thread argument DWORD dwCreationFlags, // creation option LPDWORD lpThreadId // thread identifier ); 参数说明: hProcess [输入] 进程句柄 lpThreadAttributes [输入] 线程安全描述字,指向SECURITY_ATTRIBUTES结构的指针 dwStackSize [输入] 线程栈大小,以字节表示 lpStartAddress [输入] 一个LPTHREAD_START_ROUTINE类型的指针,指向在远程进程中执行的函数地址 lpParameter [输入] 传入参数 dwCreationFlags [输入] 创建线程的其它标志 lpThreadId [输出] 线程身份标志,如果为NULL,则不返回 返回值 成功返回新线程句柄,失败返回NULL,并且可调用GetLastError获得错误值。大家很快可以领略到CreateRemoteThread的神通,它使你的代码可以脱离你的进程,植入到别的进程中运行。大家说,把代码插入到那个进程中突破防火墙最好啊?” “那当然是QQ或者IE啦!因为没有人会傻到不允许这两个程序访问网络啊!” “嗯,是的!这两个程序都很好。但接下来我们会选择IE。因为通常我们会打开多个IE而不是多个QQ,那样我们启动一个没有窗口的IE再把代码插进去隐藏性就比较好了。” “怎样打开一个没有窗口的IE啊?” “要打开一个新的进程,我们利用的是CreateProcess()函数。以下代码实现打开一个IE进程,但窗口被隐藏起来。 STARTUPINFO si; //进程启动时需要初始化的结构 PROCESS_INFORMATION pi; //进程启动后的有关信息 si.cb = sizeof(STARTUPINFO); GetStartupInfo(si); si.wShowWindow = SW_HIDE;//这里设置窗口为隐藏,SW_SHOW为显示窗口 si.dwFlags = STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES; CreateProcess(C:\\Program Files\\Internet Explorer\\IEXPLORE.EXE, NULL,NULL,NULL,TRUE,NULL,NULL,NULL,si,pi); “当然, 不是所有的系统都安装在C盘的,要确保我们能够打开一个隐藏窗口的IE进程,我们可以利用下面的代码: char syspath[256]; GetSystemDirectory(syspath,256); strcat(

文档评论(0)

ailuojue + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档