`
huobengle
  • 浏览: 862366 次
文章分类
社区版块
存档分类
最新评论

使用DLL_THREAD_ATTACH阻止远程线程

 
阅读更多

当进程创建一个线程的的时候,系统会检查当前映射到该进程的地址空间中的所有DLL文件映像,并用DLL_THREAD_ATTACH来调用每个DLL的DllMain函数,新创建的线程负责执行所有DLL的DllMain函数中的代码。系统不会让进程的主线程调用DLL_THREAD_ATTACH的值来调用DllMain函数。
此时新线程已经被创建但尚未执行,更精确的说已经创建了线程内核对象、线程堆栈等资源,正处于初始化阶段。只有在每个DLL都正常处理DLL_THREAD_ATTCH通知,新线程才能开始执行!

远程线程本质与本地线程一样,区别只是由其他进程创建。我们就是要写个DLL,在收到DLL_THREAD_ATTACH时通知结束线程,那么远程线程就无法执行了。

代码:

SetStatus函数要导出一下

为了能使本程序自身正常创建线程

代码:


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics