Выход из программы под WIN32

Тема в разделе "WASM.BEGINNERS", создана пользователем _HmcmP_, 25 июл 2008.

  1. _HmcmP_

    _HmcmP_ New Member

    Публикаций:
    0
    Регистрация:
    25 июл 2008
    Сообщения:
    8
    Привет!

    Только начал изучать ASM. Поэтому не судите строго.

    Почему будет работать данный код?:

    Код (Text):
    1. .386
    2. .model FLAT
    3.  
    4. .data
    5. .code
    6. main:
    7.    ret
    8. end main
    Я в том смысле что ret применяется для выхода из процедур. Т.е. получается как в C/C++ программа состоит минимум из одной процедуры. Тогда если это так зачем
    выходят через ExitProcess?
     
  2. wsd

    wsd New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2007
    Сообщения:
    2.824
    _HmcmP_
    это документировано гарантирует безутечность ресурсов
    а ретом теоретически возможны лики :)
     
  3. Novi4ek

    Novi4ek New Member

    Публикаций:
    0
    Регистрация:
    3 авг 2007
    Сообщения:
    317
    ехитпроцессом можно завершиться из любого потока любой функции программы
     
  4. Magnum

    Magnum New Member

    Публикаций:
    0
    Регистрация:
    29 дек 2007
    Сообщения:
    925
    _HmcmP_
    Ты можешь самостоятельно проследить, какой код выолняется после ret

    проклацай в OllyDbg F7



    рет из мейна приводит к ExitThread
    т.е. завершается текущий поток.
    НО НЕ ПРОЦЕСС!


    Если поток единственный - тогда процесс завершиться
    Но если какой-либо перехватчик, легальный или не очень, подгрузил в каждый процесс свой код и создал еще один поток, процесс не завершиться, освобождение занятых ресурсов не произойдет.


    Чтобы наверняка грохнуть процесс - используется ExitProcess();
     
  5. _HmcmP_

    _HmcmP_ New Member

    Публикаций:
    0
    Регистрация:
    25 июл 2008
    Сообщения:
    8
    При трассировки после ret'а. Вызывается ExitThread - выход из потока единственного, а значит ии из процесса.
     
  6. _HmcmP_

    _HmcmP_ New Member

    Публикаций:
    0
    Регистрация:
    25 июл 2008
    Сообщения:
    8
    2 Magnum

    Ясно.