|
盒子资源分类 |
![]() |
|
|
|
只需一个DLL的线程插入 (98,2K,XP通用) |
![]() |
关键字:Dll Hook Thread 钩子 隐藏 消息 线程 插入 |
来 自:原创 |
平 台:Win9x,Win2k/NT,WinXP |
下载所需:0 火柴 |
深浅度:高级 |
完成时间:2004/9/15 |
发布者:liumazi |
发布时间:2004/9/15 |
编辑器:DELPHI7 |
语 种:简体中文 |
分 类:系统 |
下载浏览:2703/18228 |
|
|
|
|
利用Hook在Explorer进程插入一个线程,只需一个DLL, 98、2k、XP 通用.
大致流程: Start.exe 安装 Insert.dll 中的 WH_GETMESSAGE 钩子.在钩子回调函数中判断当前进程ID是否先前 Start.exe 查找到的 Explorer进程ID, 是的话,则再次LoadLibrary(Insert.dll),并定位到其中ThreadPro函数. 此时创建一个新线程,线程函数就是ThreadPro,该新线程首先往Start.exe消息队列放置一个线程退出消息 WM_QUIT,导致其消息循环结束. 此时插入线程完成..可以看到屏幕左上角不断变化的数字..说明我们的代码正在执行.进程列表却没有Start.exe,用进程工具观察,可发现Explorer进程,的确多了个线程,且来自Insert.dll .. 如果希望插入Explorer的线程结束,按 Alt+L 即可... :) |
本站原创作品,未经作者许可,严禁任何方式转载;转载作品,如果侵犯了您的权益,请联系我们! |
相关文章 |
|
![]() |
|
相关评论 |
![]() |
共有评论16条
当前显示最后6条评论
|
liumazi |
2004/10/25 17:52:10 |
描述不准确 至于保证同一时刻只能插入一个线程,则还需要一个互斥对象....:) 应该是: 保证同一时刻只能存在一个插入的线程,则还需要一个互斥对象 |
liumazi |
2004/10/26 12:39:38 |
汇编代码应该是这样才对,因为是参数先入栈,然后才是返回地址.
procedure ThreadPro; begin asm pop eax //返回EIP pop edx //丢弃参数 Push eax //返回EIP end; end;
不过,如果再加上其他代码.比如使用了局部变量,那上面的方法又不行了. 因为堆栈被用来放置局部变量,过程出入口会自动加上修改堆栈的代码. 看来还是老老实实定义成function ThreadFunc( x: pointer ): DWORD; stdcall;比较好 procedure ThreadFunc( x: pointer ); stdcall; 也行,因为返回值放在EAX中,可忽略. |
magicer |
2004/12/17 23:32:18 |
如何加窗体到DLL中去并运行? 我不要那个一直变的效果 |
liumazi |
2004/12/18 16:18:51 |
to magicer: 请看此例 http://bbs.2ccc.com/topic.asp?topicid=135917 |
tim001 |
2004/12/20 16:13:25 |
好利害哦 |
huoshanlangzhe |
2021/1/13 11:11:25 |
下来学习中,谢谢 |
我要发表评论 |
查看全部评论 |
|
|
|