Проблемы с программой (по книги)

Тема в разделе "WASM.BEGINNERS", создана пользователем Linkey, 19 авг 2009.

  1. Linkey

    Linkey Александр

    Публикаций:
    0
    Регистрация:
    15 авг 2009
    Сообщения:
    11
    Адрес:
    Челябинск
    Здравствуйте помогите пожалуйста! Я читаю одну книгу по программ. в вин32? В ней есть такой текст:

    .386
    .model flat, stdcall
    option casemap:none

    ExitProcess proto :dword
    GetStdHandle proto :dword
    WriteConsoleA proto :dword,:dword,:dword,:dword,:dword
    includelib lib\kernel32.lib

    .data
    stdout dd ?
    msg db 'Hello World',0dh,0ah
    cWritten dd ?
    .code
    start:
    invoke GetStdHandle, -11

    mov stdout, eax

    invoke WriteConsoleA, stdout, ADDR msg,sizeof msg,ADDR cWritten,0

    invoke ExitProcess,0
    end start


    Программа компилируется все как и должно asm. obj. exe
    Ну при запуске программы ни чего не наблюдаю! Почему?
    Пробывал через OllyDbg тоже ничего невижу!

    Надеюсь на вашу помощь!
     
  2. XshStasX

    XshStasX New Member

    Публикаций:
    0
    Регистрация:
    9 авг 2008
    Сообщения:
    991
    Потому что программа быстро выводить надпись и сразу выходить через
    invoke ExitProcess,0
    перед
    push 1000
    call sleep
     
  3. XshStasX

    XshStasX New Member

    Публикаций:
    0
    Регистрация:
    9 авг 2008
    Сообщения:
    991
    точнее перед
    поставь этот код:
    push 1000
    call sleep
    тогда программа немного приостановиться и будет видно консоль с текстом.
     
  4. Forever

    Forever Виталий

    Публикаций:
    0
    Регистрация:
    12 апр 2008
    Сообщения:
    244
    А лучше просто запусти ее из консоли.
     
  5. max7C4

    max7C4 New Member

    Публикаций:
    0
    Регистрация:
    17 мар 2008
    Сообщения:
    1.203
    а если ее откомпилировать как консольную, то и в OllyDbg все будет видно
     
  6. max7C4

    max7C4 New Member

    Публикаций:
    0
    Регистрация:
    17 мар 2008
    Сообщения:
    1.203
    или добавить вызов AllocConsole в самом начале
     
  7. Microedition

    Microedition Active Member

    Публикаций:
    0
    Регистрация:
    5 июн 2008
    Сообщения:
    814
    Linkey
    с консолью все-таки надо подружиться..
     
  8. Linkey

    Linkey Александр

    Публикаций:
    0
    Регистрация:
    15 авг 2009
    Сообщения:
    11
    Адрес:
    Челябинск
    ОК Попробую! Я тока начал свой путь))) Спасибо!
     
  9. XshStasX

    XshStasX New Member

    Публикаций:
    0
    Регистрация:
    9 авг 2008
    Сообщения:
    991
    А разве программа сразу через invoke ExitProcess,0 не закроеться?
     
  10. Linkey

    Linkey Александр

    Публикаций:
    0
    Регистрация:
    15 авг 2009
    Сообщения:
    11
    Адрес:
    Челябинск
    Блин чё то не получается

    Вы бы не могли полностью исправить текст как надо! Плиз Плиз Плиз =(

    Чтоб я потом скомпил. и посмотрел просто я такой чел. пока не разберусь дальше не иду(

    call sleep я так понел что sleep ето процедура как её объявить?

    и с AllocConsole тоже ни чё не ясно

    Я таких слов даже не слышел и не видел - я же еще чайник пока)
     
  11. max7C4

    max7C4 New Member

    Публикаций:
    0
    Регистрация:
    17 мар 2008
    Сообщения:
    1.203
    XshStasX
    но ведь под олли можно остановиться перед ExitProcess
    ставишь курсор на строку call [xxxxx] | kernel32.dll@ExitProcess
    и жмешь F4
     
  12. max7C4

    max7C4 New Member

    Публикаций:
    0
    Регистрация:
    17 мар 2008
    Сообщения:
    1.203
    хотя это масм и там будет jmp to kernel32@ExitProcess
     
  13. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
    и не "@" а "." ,
    и не масм а олька, ей на то чем компилилось пофиг
     
  14. XshStasX

    XshStasX New Member

    Публикаций:
    0
    Регистрация:
    9 авг 2008
    Сообщения:
    991
    .386
    .model flat, stdcall
    option casemap:none

    ExitProcess proto :dword
    Sleep proto :dword
    GetStdHandle proto :dword
    WriteConsoleA proto :dword,:dword,:dword,:dword,:dword
    includelib lib\kernel32.lib

    .data
    stdout dd ?
    msg db 'Hello World',0dh,0ah
    cWritten dd ?
    .code
    start:
    invoke GetStdHandle, -11

    mov stdout, eax

    invoke WriteConsoleA, stdout, ADDR msg,sizeof msg,ADDR cWritten,0
    invoke Sleep,1000
    invoke ExitProcess,0
    end start
     
  15. Linkey

    Linkey Александр

    Публикаций:
    0
    Регистрация:
    15 авг 2009
    Сообщения:
    11
    Адрес:
    Челябинск
    Автор описывает действие данной программы так:
    Что GetStdHandle - помещает результат своей работы в регистр eax,
    mov stdout, eax - сохраняет в памяти!
    *****
    **** Прикол в том что через OllyDbg я вообще не наблюдаю ни каких изменений в регистре eax
    (выполняю по шагам F8)
    ****
    *****
    Может винт не тот у меня XP SP3 2008 но консоли всегда запускаются без проблем!
     
  16. Linkey

    Linkey Александр

    Публикаций:
    0
    Регистрация:
    15 авг 2009
    Сообщения:
    11
    Адрес:
    Челябинск
    XshStasX спасибо -> скомпилировал начинаю запускать доли сек тупит но консоль так и не выводит( и регистр eax (через Ollydbg) в состояние покоя)

    Скажи плиз какая у тя система?
     
  17. XshStasX

    XshStasX New Member

    Публикаций:
    0
    Регистрация:
    9 авг 2008
    Сообщения:
    991
  18. Linkey

    Linkey Александр

    Публикаций:
    0
    Регистрация:
    15 авг 2009
    Сообщения:
    11
    Адрес:
    Челябинск
    а точнее sp какой и год выпуска
     
  19. XshStasX

    XshStasX New Member

    Публикаций:
    0
    Регистрация:
    9 авг 2008
    Сообщения:
    991
    ХР сп 2.6, тебе надо скомпилировать прогу как консольную, тогда сразу при запуске должна консоль появиться...а через "invoke GetStdHandle, -11" ты получаешь как бы на нее хендл
     
  20. Linkey

    Linkey Александр

    Публикаций:
    0
    Регистрация:
    15 авг 2009
    Сообщения:
    11
    Адрес:
    Челябинск
    Плин Спасибо понел я просто её так компилировал по обычному! а ща с консол попробывал все заработала!

    *** Спасибо огромное XshStasX и Тем кто откликнулся *** Ура!!!)))