yinsel 发表于 2024-8-22 10:07

ShellExecuteA执行完毕程序未退出

本帖最后由 yinsel 于 2024-8-22 11:00 编辑

代码如下

```
#include<windows.h>

int main() {
   ShellExecuteA(NULL, "open", "calc.exe", NULL, NULL, SW_SHOWMAXIMIZED);
   return 0;
}
```

运行后为什么程序没有退出,调试发现卡住了:



跟进去:



执行syscall指令就卡住了,有佬知道嘛

Xiaosesi 发表于 2024-8-22 10:22

看看报错提示

无闻无问 发表于 2024-8-22 10:38

int main
没有return 0;

yinsel 发表于 2024-8-22 10:51

无闻无问 发表于 2024-8-22 10:38
int main
没有return 0;

加了也一样

JuncoJet 发表于 2024-8-22 11:02

本帖最后由 JuncoJet 于 2024-8-22 11:06 编辑

被杀软拦截了,是这样的
不会退出,因为内核没有返回
哦,这个是本程序无法完成自主结束
内核没有返回,依旧适用
解决办法 添加 ExitProcess

yinsel 发表于 2024-8-22 11:07

JuncoJet 发表于 2024-8-22 11:02
被杀软拦截了,是这样的
不会退出,因为内核没有返回
哦,这个是本程序无法完成自主结束


主要就是为什么调用shellexecute就会无法自主结束呢我不调用就正常

JuncoJet 发表于 2024-8-22 11:48

yinsel 发表于 2024-8-22 11:07
主要就是为什么调用shellexecute就会无法自主结束呢我不调用就正常
特征估计是这样的
CreateProcess+TerminateThread
就拦截并阻塞,想办法避开就行
页: [1]
查看完整版本: ShellExecuteA执行完毕程序未退出