-
-
[讨论]ExitPorcess退出进程时为什么会出错?[我已经简单的搞定了,设置线程SEH再退一次]
-
发表于:
2009-2-19 20:55
9082
-
[讨论]ExitPorcess退出进程时为什么会出错?[我已经简单的搞定了,设置线程SEH再退一次]
我已经解决了,公布一下我用的比较简单的方法,设置线程SEH,在SEH中再退一次,就不会弹错误框了。
由于已经解决了没有错误框图片了,等空些时候我重新编译一次,把错误框发上来
=========================================================
我用ASM写的程序,带多窗体,多线程,随便在那个线程用ExitProcess退出进程都完全正常,
但写的DLL给MFC写的程序用,DLL中ExitPorcess时会弹出一个错误对话框!说什么内存读写错误,真是奇怪了!!
ExitProcess的地址完全正确的,我跟踪过了,出错的地方是在调用ExitPorcess后,竟然是MFC的领空出的错!
我又改用TerminateProcess,还是会弹出错误框。
我又设置进程SEH,竟然没拦截下来!ExitPorcess后错误框还是照弹
我又先挂起所有线程(当前线程除外),再TerminateProcess或者ExitPorcess,还是弹错误框!
真是神奇了,网上搜索了下,果然又意外发现:
“ExitProcess作为api函数却bug多多,不得不令人失望。
下面列举两个ExitProcess在使用中存在的bug:
一、如果调用了公用对话框比如CFiledlg之类的,就不可以再用ExitProcess退出程序了,
否则将导致内存的非法访问!用exit却可以正常退出。
二、如果在程序中用ShellExecute等启动了另一个程序,那么就不可以再用ExitProcess退出程序了,否则将导致内存的非法访问!”
那还有什么好的办法可以安全的退出进程啊??
大家R0玩腻了,来点简单的吧
[课程]FART 脱壳王!加量不加价!FART作者讲授!