首页
社区
课程
招聘
[讨论]启动进程有这么另类的方法?
发表于: 2010-7-30 15:46 5642

[讨论]启动进程有这么另类的方法?

2010-7-30 15:46
5642
今天调试一个带壳程序,XP系统,发现它是自启动+自己退出的方式运行的。
于是我加了CreateProcessInternalW和ShellExecuteExW的断点,再运行,结果根本没有断下来。后来一步步跟踪,发现它竟然是先取得Explorer的"Program Manager"窗口,然后调用SendMessage往它上面发送0xC131号消息,WPARAM是0x1BC8,LPARAM是1,这样就把进程自启动起来了。
这个原理是什么?Program Manager怎么知道要启动哪个?尚未细致跟踪,先上来问问各位前辈。

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 359
活跃值: (41)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
2
搞清楚原因了,昨天下断SetWindowsHookExW也没有断下,我还以为是什么奇技淫巧。
原来它是首次运行时调用SetWindowsHookExA往Explorer注入一个DLL,类型为WH_CALLPROC,被注入进程的DllMain内部再次调用LoadLibrary增加计数,这样本进程退出后,被注入的Dll不会被卸载。
第二次调用的时候就不再调用SetWindowsHookExA了,所以下断SetWindowsHookEx也就没能断下。
然后调用RegisterWindowMessageA注册一个自定义消息,这个自定义消息由注入的DLL来处理,所以自启动就是往Explorer注册消息的窗口发消息,启动进程的代码在注入的DLL里面。
2010-7-31 09:45
0
雪    币: 276
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
这样能自启动吗?
2010-7-31 10:11
0
雪    币: 276
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
所以自启动就是往Explorer注册消息的窗口发消息
不明白
2010-7-31 10:13
0
雪    币: 359
活跃值: (41)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
5
Explorer进程有一个叫"Program Manager"的窗口,对它调用RegisterWindowMessageA可以注册一个消息值(如果所有程序都遵守这规则就不会有消息值冲突的问题),然后调用SetWindowsHookEx监视该窗口所在线程的所有消息回调,这样就可以响应自己SendMessage发送的消息,响应的处理方法就是启动进程。
2010-7-31 10:23
0
雪    币: 276
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
明白的,但是这个不能做到关机重启动自己的进程呢。
2010-7-31 10:50
0
雪    币: 359
活跃值: (41)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
7
貌似我没有说在调试病毒或者木马吧?
2010-7-31 10:57
0
游客
登录 | 注册 方可回帖
返回
//