Win32ASM Консольный ввод, томограф IDA и скальпель SoftICE



    d8ef8794     

Задача 1. - часть 2


;вводим invoke ReadConsole, hInput, addr InputBuffer, 10, ADDR nRead, NULL

;печатаем "You typed > " invoke WriteConsole, hOutPut, addr Msg2, 12, addr nWriten, NULL

;печатаем то, что ввели invoke WriteConsole, hOutPut, addr InputBuffer, nRead, addr nWriten, NULL

;задержка, чтобы полюбоваться invoke Sleep, 2000d

;выход invoke ExitProcess,0 Main endp

; ######################################################

end Main

ПРИМЕЧАНИЕ: Ручной подсчет числа выводимых символов хорошим стилем программирования, конечно же, не назовешь :(. Немного попозже я расскажу, как делать это дело правильно ;). И да простят меня продвинутые программеры...

  Строка LOCAL InputBuffer[128] :BYTE резервирует 128 байт памяти под строку символов, которую мы будем запрашивать при помощи апишной функции ReadConsole. Вот ее описание: BOOL ReadConsole( HANDLE hConsoleInput, // handle to console input buffer LPVOID lpBuffer, // data buffer DWORD nNumberOfCharsToRead, // number of characters to read LPDWORD lpNumberOfCharsRead, // number of characters read LPVOID lpReserved // reserved );

  Попутно даю урок английского языка, который сам знаю хреново (академиев не кончал, но высшее образование вам даду): "number of characters to read" переводится как "число символов, подлежащих чтению", а "number of characters read" - как "число прочитанных символов". Наверное. Согласитесь, это существенная разница ;).




Содержание  Назад  Вперед