首页
社区
课程
招聘
ShellExecute简单流程
发表于: 2008-9-4 01:25 12358

ShellExecute简单流程

2008-9-4 01:25
12358
【求助】钩住了ZwCreateProcessEx,拦不住ShellExecute?
XP下SSDT钩住了ZwCreateProcessEx (2K下ZwCreateProcess),
点击打开的进程可以监控
拦不住程序中ShellExecute创建的进程。

已解决, 是可以拦住ShellExecute, 挥泪感谢各位大侠的提点!!
看到这个帖子的回复,感觉很温暖,谢谢!

下边是ShellExecute简单流程:
ShellExecute->ShellExecuteEx->ShellExecuteExA->ShellExecuteExW->ShellExecuteNormal->SHELL32!CShellExecute::ExecuteNormal->SHELL32!CShellExecute::_TryInvokeApplication->SHELL32!CShellExecute::_DoExecCommand->SHELL32!_SHCreateProcess->SHELL32!_imp__CreateProcessW

ShellExecute:
7D610F40 >  8BFF            mov     edi, edi
7D610F42    55              push    ebp
7D610F43    8BEC            mov     ebp, esp
7D610F45    83EC 3C         sub     esp, 3C
7D610F48    8B45 08         mov     eax, dword ptr [ebp+8]
7D610F4B    8365 E4 00      and     dword ptr [ebp-1C], 0
7D610F4F    8945 CC         mov     dword ptr [ebp-34], eax
7D610F52    8B45 0C         mov     eax, dword ptr [ebp+C]
7D610F55    8945 D0         mov     dword ptr [ebp-30], eax
7D610F58    8B45 10         mov     eax, dword ptr [ebp+10]
7D610F5B    8945 D4         mov     dword ptr [ebp-2C], eax
7D610F5E    8B45 14         mov     eax, dword ptr [ebp+14]
7D610F61    56              push    esi
7D610F62    8945 D8         mov     dword ptr [ebp-28], eax
7D610F65    8B45 18         mov     eax, dword ptr [ebp+18]
7D610F68    57              push    edi
7D610F69    8945 DC         mov     dword ptr [ebp-24], eax
7D610F6C    8B45 1C         mov     eax, dword ptr [ebp+1C]
7D610F6F    6A 06           push    6
7D610F71    8945 E0         mov     dword ptr [ebp-20], eax
7D610F74    59              pop     ecx
7D610F75    33C0            xor     eax, eax
7D610F77    8D7D E8         lea     edi, dword ptr [ebp-18]
7D610F7A    BE 00020000     mov     esi, 200
7D610F7F    C745 C4 3C00000>mov     dword ptr [ebp-3C], 3C
7D610F86    F3:AB           rep     stos dword ptr es:[edi]
7D610F88    56              push    esi
7D610F89    BF 00140000     mov     edi, 1400
7D610F8E    FF15 DC1B597D   call    dword ptr [<&SHLWAPI.#461>]      ; SHLWAPI.#461
7D610F94    85C6            test    esi, eax
7D610F96    75 05           jnz     short 7D610F9D
7D610F98    BF 00150000     mov     edi, 1500
7D610F9D    8D45 C4         lea     eax, dword ptr [ebp-3C]
7D610FA0    50              push    eax
7D610FA1    897D C8         mov     dword ptr [ebp-38], edi
7D610FA4    E8 6CFCFFFF     call    ShellExecuteExA                         <<<<-----
7D610FA9    8B45 E4         mov     eax, dword ptr [ebp-1C]
7D610FAC    5F              pop     edi
7D610FAD    5E              pop     esi
7D610FAE    C9              leave
7D610FAF    C2 1800         retn    18

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 1
支持
分享
最新回复 (21)
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
如今驱动真是像萝卜白菜一样泛滥,动不动“内核”、“SSDT”的字眼就漫天飞,居然连Ring3的API都不会调试跟踪的人,就拿着WinDbg u来u去,实在是无语……
引用小四哥的一句话:“连《Win 9x系统编程》都没看过,却要写个什么隐藏自己的木马,实在是搞笑。”大致是这个意思,

还是先打好基础吧……
2008-9-4 01:46
0
雪    币: 22
活跃值: (443)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
都是源码惹的祸
2008-9-4 08:46
0
雪    币: 7651
活跃值: (523)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
4
如今驱动就像白菜,价格便宜量又足
2008-9-4 10:37
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
cnYzL
标题是求助,不回答是你的权利
你说的这些话对提问者意义何在?

我不是专业的计算机人员
编程是通过网上点滴的信息收集
学的很辛苦

发这个帖子是希望得到高手百忙中的提点
我只会在实在找不到答案的时候才会麻烦别人,
发帖子求教,谢谢~
2008-9-4 13:25
0
雪    币: 247
活跃值: (112)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
WST
6
可以试一下勾PspCreateProcess
2008-9-4 13:52
0
雪    币: 7651
活跃值: (523)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
7

楼主估计SSDT都没整明白, Ring3 API都不会跟踪,让他搞这个岂不是难为人了?
不是非要打击楼主的学习积极性,打好基础要紧啊,那位兄弟一点没说错
2008-9-4 18:24
0
雪    币: 342
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
nuke

不要听这些自认为牛B的人说话,这样的人只会指指点点
真要他做出点好的代码来,他也会很难做出来,不信叫他来做,肯定也要花些天时间
我认为一个真正让人佩服的牛人
应是先给出答案,再指点。像你这样的题
我没做过,过些天我做做试试。现在我还在测试反逆向第4题
有点忙。今天发这里,只是不要让你不要为这些人失去自信心
你内心点测试,一点点来,就算最后做不出,也会学到很多东西
我会支持你。做出来了,请也给我看看,让我学习一下,如做不出
下周我和你一起做。有问题一定有解决的方法。我相信
2008-9-5 13:13
0
雪    币: 398
活跃值: (343)
能力值: (RANK:650 )
在线值:
发帖
回帖
粉丝
9
我要做牛人.
大家来佩服我吧
我的解释如下:
2k下只有ZwCreateProcess
xp下既有ZwCreateProcess也有ZwCreateProcessEx
两个都可能有用到
楼主可以看看xp下的ShellExecute, 最终进的是哪个
2008-9-5 13:20
0
雪    币: 7309
活跃值: (3788)
能力值: (RANK:1130 )
在线值:
发帖
回帖
粉丝
10
佩服 + 膜拜
2008-9-5 13:22
0
雪    币: 709
活跃值: (2420)
能力值: ( LV12,RANK:1010 )
在线值:
发帖
回帖
粉丝
11
我是不懂,不过别对别人冷嘲热讽,指指点点的.

BS 2楼那几个腹中空空,一嘴唾沫的 小白.
2008-9-5 13:58
0
雪    币: 6075
活跃值: (2236)
能力值: (RANK:1060 )
在线值:
发帖
回帖
粉丝
12
[QUOTE=;]...[/QUOTE]
BS 9楼以外的。
2008-9-5 14:13
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
gkf
13
你逆向看看ShellExecute就知道了
2008-9-5 17:18
0
雪    币: 381
活跃值: (140)
能力值: ( LV13,RANK:330 )
在线值:
发帖
回帖
粉丝
14
特地亲自测试了一下, 对于XP SP3下只须ZwCreateProcessEx足以, 绝对能够拦住ShellExecute创建的进程

就用下面的代码来测试的
.386
.model  flat, stdcall
option  casemap:none

include windows.inc
include kernel32.inc
include shell32.inc
                                                      
includelib kernel32.lib
includelib shell32.lib

		.data
szFileName	db	"C:\WINDOWS\NOTEPAD.exe",0
szCmdline	db	"c:\boot.ini",0

		.code
start:
	push	SW_SHOWNORMAL
	push	0
	push	offset szFileName
	push	offset szCmdline
	push	0
	push	0
	call	ShellExecute
	ret
end    start 
上传的附件:
2008-9-5 17:29
0
雪    币: 66
活跃值: (16)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
15
#14正解  顺便去下个《Win 9x系统编程》 免得以后被人骂
2008-9-6 18:55
0
雪    币: 8835
活跃值: (2404)
能力值: ( LV12,RANK:760 )
在线值:
发帖
回帖
粉丝
16
这帖子教我们要常用IDA~~不要发这种引起人bs的东西,问问题要说我挂钩了syscall的派发过程,但是不知道该怎么拦截进程创建——然后表示自己挂钩的地方是个其他组织没有找到得诡异地方~~
2008-9-6 19:22
0
雪    币: 425
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
受教了~~~~~~~
2008-9-7 02:00
0
雪    币: 12
活跃值: (600)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
18
内核下
NtCreateProcess最终还是调用NtCreateProcessEx

lkd> u nt!NtCreateprocess
nt!NtCreateProcess:
805c8420 8bff            mov     edi,edi
805c8422 55              push    ebp
805c8423 8bec            mov     ebp,esp
805c8425 33c0            xor     eax,eax
805c8427 f6451c01        test    byte ptr [ebp+1Ch],1
805c842b 7401            je      nt!NtCreateProcess+0xe (805c842e)
805c842d 40              inc     eax
805c842e f6452001        test    byte ptr [ebp+20h],1
lkd> u
nt!NtCreateProcess+0x12:
805c8432 7403            je      nt!NtCreateProcess+0x17 (805c8437)
805c8434 83c802          or      eax,2
805c8437 807d1800        cmp     byte ptr [ebp+18h],0
805c843b 7403            je      nt!NtCreateProcess+0x20 (805c8440)
805c843d 83c804          or      eax,4
805c8440 6a00            push    0
805c8442 ff7524          push    dword ptr [ebp+24h]
805c8445 ff7520          push    dword ptr [ebp+20h]
lkd> u
nt!NtCreateProcess+0x28:
805c8448 ff751c          push    dword ptr [ebp+1Ch]
805c844b 50              push    eax
805c844c ff7514          push    dword ptr [ebp+14h]
805c844f ff7510          push    dword ptr [ebp+10h]
805c8452 ff750c          push    dword ptr [ebp+0Ch]
805c8455 ff7508          push    dword ptr [ebp+8]
805c8458 e80dffffff      call    nt!NtCreateProcessEx (805c836a)
805c845d 5d              pop     ebp
lkd> u
nt!NtCreateProcess+0x3e:
805c845e c22000          ret     20h
2008-9-12 10:00
0
雪    币: 236
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
《Win 9x系统编程》全名是什么啊?谁知道说一声,我也下载一本看看
2008-11-26 20:04
0
雪    币: 193
活跃值: (26)
能力值: ( LV9,RANK:210 )
在线值:
发帖
回帖
粉丝
20
大家都是从菜鸟开始的,没必要打击!
2008-11-27 17:38
0
雪    币: 21
活跃值: (12)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
21
谁不是一点一点过来的.不要随便鄙视人,你有技术我佩服你,你BS人,我更BS你,不就是比我们早学了几年嘛.
2008-11-28 23:50
0
雪    币: 170
活跃值: (90)
能力值: ( LV12,RANK:210 )
在线值:
发帖
回帖
粉丝
22
先帮楼主解决问题,再提学习意见尊重,都是一点一滴过来的,真没必要BS人
2009-10-19 11:06
0
游客
登录 | 注册 方可回帖
返回
//