ReadConsole Help

Discussion in 'WASM.ASSEMBLER' started by jen140, Jul 26, 2008.

  1. jen140

    jen140 New Member

    Blog Posts:
    0
    Joined:
    Jun 1, 2008
    Messages:
    29
    Добрий день . У меня неболшая проблемка с ReadConsole. Source:
    Code (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

    Blog Posts:
    0
    Joined:
    Sep 26, 2007
    Messages:
    1,240
    Location:
    Russia
    Code (Text):
    1. message BYTE "Hello insert pass plz:"
    2. goodpass DWORD "123"
    3. introducedpass DWORD 3
    4. messageSize = ($-message)
    Code (Text):
    1. messageSize = ($-message)
    сразу за ней должен быть
    Code (Text):
    1. message BYTE "Hello insert pass plz:"
    т.е.
    Code (Text):
    1. message BYTE "Hello insert pass plz:", 0
    2.  
    3. messageSize = ($-message)
    строка заканчивается 0

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

    JCronuz New Member

    Blog Posts:
    0
    Joined:
    Sep 26, 2007
    Messages:
    1,240
    Location:
    Russia
    и что за хендл странный ты передаешь в

    Code (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

    Blog Posts:
    0
    Joined:
    Jun 1, 2008
    Messages:
    29
    Posmotrel paru tutov i vashi posti e pomenial na :
    Code (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

    Blog Posts:
    0
    Joined:
    Jan 15, 2007
    Messages:
    1,494
    push 3
    Code (Text):
    1. goodpass DWORD "123",0
    goodpass BYTE "123",0
     
  6. jen140

    jen140 New Member

    Blog Posts:
    0
    Joined:
    Jun 1, 2008
    Messages:
    29
    Uze zdelal tak kak twgt skazal ,teper pishet message, no vseravno nichego ne chitaet =(
     
  7. jen140

    jen140 New Member

    Blog Posts:
    0
    Joined:
    Jun 1, 2008
    Messages:
    29
    Ok ,vse reshil .
    Code (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 =)