能力值:
( LV12,RANK:450 )
|
-
-
2 楼
如果没有破坏堆栈的话,ret应该可以代替ExitProcess.
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
使用RET指令结束程序系统会自动调用ExitProcess结束进程。
|
能力值:
( LV12,RANK:210 )
|
-
-
4 楼
非也
楼主可以试试写一个多线程的程序(例如使用mciSendCommand之类函数播放音频文件),然后在主线程中使用ret指令返回,如果其他线程没有结束的话就程序不会退出.
如果某个线程使用ret指令返回,Windows会自动替它调用ExitThread函数,而如果这是进程的最后一个线程的话,ExitThread函数又会自动去调用ExitProcess函数,这样进程就终止了
|
能力值:
( LV13,RANK:330 )
|
-
-
5 楼
原来如此,不过目前我还没有使用多线程写程序,一般都采用单线程
|
能力值:
( LV7,RANK:100 )
|
-
-
6 楼
最初由 thebutterfly 发布 非也 楼主可以试试写一个多线程的程序(例如使用mciSendCommand之类函数播放音频文件),然后在主线程中使用ret指令返回,如果其他线程没有结束的话就程序不会退出. 如果某个线程使用ret指令返回,Windows会自动替它调用ExitThread函数,而如果这是进程的最后一个线程的话,ExitThread函数又会自动去调用ExitProcess函数,这样进程就终止了
主线程ret自动exitprocess
非主线程ret自动exitthread
主线程exitthread自动exitprocess
请参考windows源码。
对于播音频这种,如果非主线程还在系统空间未返回用户空间,操作系统可能有一定等待时间。
|
能力值:
( LV4,RANK:50 )
|
-
-
7 楼
最好不要用RET代替ExitProcess来退出主线程.
在Win9x中要注意保存EBP,否则RET时会出现非法操作.
有些壳(如Upack,MEW,FSG)是不保存EBP的.
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
看后觉得有收获。
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
有收获
|
能力值:
( LV5,RANK:60 )
|
-
-
10 楼
主线程ret自动exitprocess
非主线程ret自动exitthread
主线程exitthread自动exitprocess
请参考windows源码。
总结啊!强,
|
|
|