ReadConsole Help

Тема в разделе "WASM.ASSEMBLER", создана пользователем jen140, 26 июл 2008.

  1. jen140

    jen140 New Member

    Публикаций:
    0
    Регистрация:
    1 июн 2008
    Сообщения:
    29
    Добрий день . У меня неболшая проблемка с ReadConsole. Source:
    Код (Text):
    1. .386
    2. .model flat,stdcall
    3. includelib c:\masm32\lib\kernel32.lib
    4. ExitProcess proto :DWORD
    5. GetStdHandle proto :DWORD
    6. EXTRN WriteConsoleA@20 :NEAR
    7. EXTRN ReadConsoleA@20 :NEAR
    8. .data
    9. message BYTE "Hello insert pass plz:"
    10. goodpass DWORD "123"
    11. introducedpass DWORD 3
    12. messageSize = ($-message)
    13. bytesWritten DWORD ?
    14. consoleHandleo DWORD 0
    15. consoleHandlei DWORD 0
    16. .code
    17. start:
    18. invoke GetStdHandle,1
    19. mov consoleHandleo,edx
    20. invoke GetStdHandle,0
    21. mov consoleHandlei,edx
    22. push 0
    23. push offset bytesWritten
    24. push messageSize
    25. push offset message
    26. push consoleHandleo
    27. call WriteConsoleA@20
    28.  
    29. push 0
    30. push 3
    31. push 3
    32. push offset introducedpass
    33. push consoleHandlei
    34. call ReadConsoleA@20
    35.  
    36. invoke ExitProcess,0
    37. end start
    Надо чтобы в introducedpass читало 3 дигита, но место етово делает оутпут "321 ♥". Не ругаете строго ,только начал асм учит =).
     
  2. JCronuz

    JCronuz New Member

    Публикаций:
    0
    Регистрация:
    26 сен 2007
    Сообщения:
    1.240
    Адрес:
    Russia
    Код (Text):
    1. message BYTE "Hello insert pass plz:"
    2. goodpass DWORD "123"
    3. introducedpass DWORD 3
    4. messageSize = ($-message)
    Код (Text):
    1. messageSize = ($-message)
    сразу за ней должен быть
    Код (Text):
    1. message BYTE "Hello insert pass plz:"
    т.е.
    Код (Text):
    1. message BYTE "Hello insert pass plz:", 0
    2.  
    3. messageSize = ($-message)
    строка заканчивается 0

    Код (Text):
    1. goodpass DWORD "123", 0
    И раз уж ты использовал invoke, то продолжай дальше.
     
  3. JCronuz

    JCronuz New Member

    Публикаций:
    0
    Регистрация:
    26 сен 2007
    Сообщения:
    1.240
    Адрес:
    Russia
    и что за хендл странный ты передаешь в

    Код (Text):
    1. invoke GetStdHandle,1
    STD_INPUT_HANDLE=-10
    STD_OUTPUT_HANDLE=-11
    STD_ERROR_HANDLE=-12



    http://wasm.ru/article.php?article=1022006
     
  4. jen140

    jen140 New Member

    Публикаций:
    0
    Регистрация:
    1 июн 2008
    Сообщения:
    29
    Posmotrel paru tutov i vashi posti e pomenial na :
    Код (Text):
    1. .386
    2. .model flat,stdcall
    3. includelib c:\masm32\lib\kernel32.lib
    4. ExitProcess proto :DWORD
    5. GetStdHandle proto :DWORD
    6. EXTRN WriteConsoleA@20 :NEAR
    7. EXTRN ReadConsoleA@20 :NEAR
    8. .data
    9. message BYTE "Hello insert pass plz:",0
    10. messageSize = ($-message)
    11. goodpass DWORD "123",0
    12. introducedpass BYTE 3 DUP(?),0,0   
    13. bytesWritten DWORD ?
    14. bytesRead DWORD ?
    15. consoleHandleo DWORD 0
    16. consoleHandlei DWORD 0
    17. .code
    18. start:
    19. push -11
    20. call GetStdHandle
    21. mov consoleHandleo,edx
    22. push -10
    23. call GetStdHandle
    24. mov consoleHandlei,edx
    25. push 0
    26. push offset bytesWritten
    27. push messageSize
    28. push offset message
    29. push consoleHandleo
    30. call WriteConsoleA@20
    31.  
    32. push 0
    33. push offset bytesRead
    34. push 10
    35. push offset introducedpass
    36. push consoleHandlei
    37. call ReadConsoleA@20
    38.  
    39. invoke ExitProcess,0
    40. end start
    No teper daze nichego ne pishet =(
    No esli dlia GetStdHandle peredaiu 1 (consoleHandleo) i GetStdHandle peredaiu 0 (consoleHandlei) , hotabi pishet message.
     
  5. twgt

    twgt New Member

    Публикаций:
    0
    Регистрация:
    15 янв 2007
    Сообщения:
    1.494
    push 3
    Код (Text):
    1. goodpass DWORD "123",0
    goodpass BYTE "123",0
     
  6. jen140

    jen140 New Member

    Публикаций:
    0
    Регистрация:
    1 июн 2008
    Сообщения:
    29
    Uze zdelal tak kak twgt skazal ,teper pishet message, no vseravno nichego ne chitaet =(
     
  7. jen140

    jen140 New Member

    Публикаций:
    0
    Регистрация:
    1 июн 2008
    Сообщения:
    29
    Ok ,vse reshil .
    Код (Text):
    1. .386
    2. .model flat,stdcall
    3. includelib c:\masm32\lib\kernel32.lib
    4. ExitProcess proto :DWORD
    5. GetStdHandle proto :DWORD
    6. ReadConsoleA PROTO,
    7. handle:DWORD,
    8. pBuffer:PTR BYTE,
    9. maxBytes:DWORD,
    10. pBytesRead:PTR DWORD,
    11. notUsed:DWORD
    12. GetConsoleMode Proto,
    13. hConsoleHandle:DWORD,
    14. ipMode: PTR Dword
    15. SetConsoleMode Proto,
    16. hConsoleHandle:Dword,
    17. dwMode:DWORD
    18. BufSize = 80
    19. .data
    20. STD_INPUT_HANDLE EQU -10
    21. stdInHandle DWORD 0
    22. buffer BYTE BufSize DUP(?),0,0
    23. bytesRead DWORD ?
    24. saveFlags DWORD ?
    25. .code
    26. start:
    27. invoke GetStdHandle,STD_INPUT_HANDLE
    28. mov stdInHandle,eax
    29. invoke GetConsoleMode, stdInHandle, ADDR saveFlags
    30. invoke SetConsoleMode,stdInHandle,0
    31. invoke ReadConsoleA,stdInHandle, ADDR buffer, 1, ADDR bytesRead,0
    32. invoke SetConsoleMode, stdInHandle, saveFlags
    33. invoke ExitProcess,0
    34. end start
    Vsem thanks za pomosh =)