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



    d8ef8794     

Задача 1.


В прошлый раз мы разобрались с консольным выводом. Сегодня - разберемся с консольным вводом. Для этого напишем простую программу, запрашивающую строку символов, а затем её же (строку) и выводящую. Это будет очередной маленький шажок, который для вас вполне может стать решающим, так как именно эта программа впоследтвии послужит нам жертвой для негуманных экспериментов, в которых мы впервые используем два хирургических инструмента - отладчик SoftIce (на правах скальпеля) и дизассемблер IDA Pro (на правах томографа). И если при виде окровавленных внутренностей программы вам не поплохеет, более того - если вам ЭТО понравится, значит вы имеете неплохие шансы стать либо серийным маньяком (крэкером), либо - исследователем программ (реверсером). Все же остальные профессии отныне перестанут для вас существовать ;)
  Итак, открываем ASM Editor и набиваем там следующий текст: .386 .model flat, stdcall option casemap :none ; case sensitive

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

include \tools\masm32\include\windows.inc include \tools\masm32\include\kernel32.inc includelib \tools\masm32\lib\kernel32.lib

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

.data

Msg1 db "Type something > " Msg2 db "You typed > " ConsoleTitle db 'Input & Output',0

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

.code

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

Main proc LOCAL InputBuffer[128] :BYTE ;буффер для ввода LOCAL hOutPut :DWORD ;хэндл для вывода LOCAL hInput :DWORD ;хэндл для ввода LOCAL lpszBuffer :DWORD ;адрес буфера LOCAL nRead :DWORD ;прочитано байт LOCAL nWriten :DWORD ;напечатано байт

;устанавливаем титл окна invoke SetConsoleTitle, addr ConsoleTitle

;получаем хэндл для вывода invoke GetStdHandle, STD_OUTPUT_HANDLE mov hOutPut, eax

;печатаем "Type something > " invoke WriteConsole, hOutPut, addr Msg1, 17, addr nWriten,NULL

;получаем хэндл для ввода invoke GetStdHandle,STD_INPUT_HANDLE mov hInput, eax




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