首页
社区
课程
招聘
[求助]在文件夹中双击运行exe文件系统调用哪个API
发表于: 2009-5-19 16:30 12094

[求助]在文件夹中双击运行exe文件系统调用哪个API

2009-5-19 16:30
12094
在文件夹中双击运行exe文件系统调用哪个API?是createprocess还是winexec?

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (16)
雪    币: 212
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
调用SHELL,瞎猜得
2009-5-19 16:43
0
雪    币: 612
活跃值: (996)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
3
Explorer.exe的CreateProcess就可以拦截到了
2009-5-19 16:48
0
雪    币: 212
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
先 CreateProcess 如果失败然后 ShellExecuteEx
2009-5-19 17:11
0
雪    币: 612
活跃值: (996)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
5
ShellExecuteEx最后还是调用CreateProcess的
2009-5-19 17:44
0
雪    币: 217
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
我用海风兄的hookapi拦了explorer.exe的createprocess和winexec都没有作用,双击后还是执行了目标程序。看来不是用这两个函数。
2009-5-20 09:32
0
雪    币: 210
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
绝对是CreateProcessW,我测试成功过
直接按Ctrl+Alt+Del弹出任务管理器没拦截到,但双击的程序都拦截到了的
还有一个办法就是用shell钩子
2009-5-20 09:43
0
雪    币: 243
活跃值: (209)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
CreateProcessInternalW
2009-5-20 09:56
0
雪    币: 612
活跃值: (996)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
9
winexec函数的话,CreateProcessInternalW就可以拦截到,LZ自己跟下API不就晓得了~钩住CreateProcessInternalW,CreateProcess,ShellExecute,WinExec这三个API创建的进程都能拦截到~
2009-5-20 10:55
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
任务管理器,是Winlogon进程focker出来的
2009-5-21 13:16
0
雪    币: 217
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
用海风兄的HOOKAPI钩CreateProcessInternalW这个函数,直接出错后explorer.exe退出。是不是CreateProcessInternalW函数的入口不是5字节?如果现在要钩这个函数要怎么改?钩子函数中什么都不做,直接返回也是出错。
但是钩其它程序是可以钩得住的,是不是explorer.exe做了什么手脚?
2009-5-26 09:08
0
雪    币: 367
活跃值: (20)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
12
CreateProcessInternalW 的参数个数你或许弄错了,检查一下
2009-5-26 10:09
0
雪    币: 612
活跃值: (996)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
13
LZ要HOOK这个函数,却不知道它入口是不是5字节,汗....有可能是你没修改它的内存页面的保护属性或者修改不成功的原因~你直接在explorer.exe的CreateProcessInternalW函数下断,跟下,问题出在那不就出来了...
2009-5-26 11:43
0
雪    币: 722
活跃值: (123)
能力值: ( LV12,RANK:300 )
在线值:
发帖
回帖
粉丝
14
首先知道CreateProcessInternalW是肯定要调用的,那么剩下的就是要知道是哪个API调用了CreateProcessInternalW,这个只需要使用栈回溯就可以了。
用windbg,Attach到explorer.exe,加载符号
bp kernel32!CreateProcessInternalW
然后g运行
在资源管理器窗口里双击一个可执行程序,explorer.exe进程在CreateProcessInternalW函数入口被断下
这时进行栈回溯:

0:013> kb
ChildEBP RetAddr  Args to Child              
01aadc80 7c80235e 00000000 023214a4 0231f20c kernel32!CreateProcessInternalW
01aadcb8 7d5d20c4 023214a4 0231f20c 00000000 kernel32!CreateProcessW+0x2c
01aae73c 7d5d1f2e 000400f4 00000000 023218b4 SHELL32!_SHCreateProcess+0x387
01aae790 7d5d1e65 0231dfb8 01aae7b0 7d5d1964 SHELL32!CShellExecute::_DoExecCommand+0xb4
01aae79c 7d5d1964 00000000 00126ab8 0231dfb8 SHELL32!CShellExecute::_TryInvokeApplication+0x49
01aae7b0 7d5d1896 00126ab8 00126ab8 01aae7f0 SHELL32!CShellExecute::ExecuteNormal+0xb1
01aae7c4 7d5d1832 01aae7f0 001496b8 00126ab8 SHELL32!ShellExecuteNormal+0x30
01aae7e0 7d5de563 01aae7f0 00000000 0000003c SHELL32!ShellExecuteExW+0x8d
01aae82c 7d5de4b8 01aaea88 40000000 01aae85c SHELL32!_InvokePidl+0x9f
01aaea68 7d5de3ef 01aaea88 00000000 00126ab8 SHELL32!CShellExecMenu::_InvokeOne+0xa0
01aaeaf4 7d5de33b 001496bc 01aaeb10 0017c038 SHELL32!CShellExecMenu::InvokeCommand+0xa7
01aaeb54 7d5de28d 02305408 01aaeb74 00000000 SHELL32!HDXA_LetHandlerProcessCommandEx+0xa5
01aaede4 7d67512d 0017c038 01aaf130 00000000 SHELL32!CDefFolderMenu::InvokeCommand+0x17f
01aaf114 7d679dc0 0017c038 01aaf130 00000000 SHELL32!CDefView::_InvokeContextMenu+0xb0
01aaf280 7d679ea3 0017c038 00000000 00000000 SHELL32!CDefView::_InvokeContextMenuVerb+0x18c
01aaf2ac 7d6192dd 00000000 00000000 04000000 SHELL32!CDefView::_InvokeContextMenuVerbOnSelection+0x9a
01aaf52c 7d5c1ebb 01aaf8a4 0009bd40 0009bd40 SHELL32!CDefView::_OnLVNotify+0x37a
01aaf544 7d5c1d2d 01aaf8a4 00000000 0009bd40 SHELL32!CDefView::_OnNotify+0x7c
01aaf6b8 7d5c1da1 000601c0 0000004e 00000001 SHELL32!CDefView::WndProc+0x860
01aaf6fc 77d18734 000601c0 0000004e 00000001 SHELL32!CDefView::s_WndProc+0x72

结果就一目了然了吧。我这是在虚拟机里跑的,因为实机安装有安全软件,可能在这个过程中会有安全软件的HOOK。
2009-5-26 12:39
0
雪    币: 118
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
我根据LZ的问题,用WinDbg调试出3个,依次是ShellExecuteExW,CreateProcessW,CreateProcessInternalW。
2009-6-4 11:35
0
雪    币: 348
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
应该是 CreateProcessW
失败后 ShellExecuteExW
CreateProcessInternalW
乱猜的。
2009-6-4 14:10
0
雪    币: 217
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
winxp2的explorer.exe用od跑不了,好象是要用个什么办法,前断时间刚刚看过一下。
我hook CreateProcessInternalW这个函数,在我自己做的建立新进程的程序里可以正常hook并弹出messagebox,但是一注入explorer.exe后,explorer.exe就出错。太奇怪了,为什么注一般的程序中可以但是注入explorer.exe就出错。
2009-6-5 16:15
0
游客
登录 | 注册 方可回帖
返回
//