Прост HLLc вирус

HLLO - Презапис на езика на високо ниво. Такъв вирус замества програмата с тялото си. Така програмата се унищожава и когато потребителят се опита да стартира програмата, вирусът се стартира и „заразява“ допълнително.

HLLC - Езиков спътник на високо ниво. Повечето от тези вируси датират от древната древност (преди 6-7 години), когато потребителите са имали DOS и са били много мързеливи. Тези вируси търсят файла и без да го променят, създават копие от себе си, но с разширение .COM. Ако мързеливият потребител напише само име на файл в командния ред, тогава първият DOS търси COM файл, стартира вирус, който първо си върши работата и след това стартира EXE файла. Има и друга модификация на HLLC - по-модерна: Вирусът преименува файла, запазвайки името, но променяйки разширението - от EXE, да речем, OBJ или MAP. Вирусът замества оригиналния файл с тялото си. По този начин потребителят стартира вирус, който след извършване на акта на възпроизвеждане стартира необходимата програма - всички са доволни.

Работа с файлове - вирусът комуникира с тях доста активно:

1. Връзка с файла: процедура AssignFile (var F; Име на файл: низ);

Например: AssignFile (F1, ’klizma.exe’);

2. Отваряне на файл за четене: процедура Reset (var F [: File; RecSize: Word]);

Например: Нулиране (F1);

3. Четене на информация от файл в буфер: процедура BlockRead (var F: File; var Buf; Count: Integer [; var AmtTransferred: Integer]);

Тук buf е масив, например. Buf: Array [1.65535] от Char;

Пребройте - колко байта искате да прочетете

Например: BlockRead (F1, Buf, 1024);

4. Записване от буфера във файл: процедура BlockWrite (var f: File; var Buf; Count: Integer [; var AmtTransferred: Integer]);

Почти същото като предходното.

5. Отваряне на файл за запис, целият запис ще се извърши в края на файла: Приложение (F: Файл);

6. Отваряне на файл за презаписване:

процедура Rewrite (var F: File [; Recsize: Word]); След това съдържанието на файла се нулира.

7. Потърсете файл. Не можем без него, трябва да търсим жертва J. функция FindFirst (const Path: string; Attr: Integer; var F: TSearchRec): Integer;

Attr - файлови атрибути, например faAnyFile - всеки файл, faArchive - архивиран, faHidden - скрит.

F - променлива от типа TsearchRec, в нея delphi изтласква всички характеристики на намерения файл.

Например: FindFirst (‘* .exe’, faAnyFile, sr);

Sr.Name - име на намерения файл

Sr.Size - неговият размер.

За да търсите следващия същия файл, напишете FindNext (Sr);

Ако файлът бъде намерен, процедурите FindFirst и FindNext връщат 0 (нула). Ето един съвет: можете да създадете интересен цикъл във вашия вирус:

Резултат: = FindFirst (‘* .exe’, faAnyFile, sr);
Докато резултат = 0 правя
Започнете
// Напишете процедурата за заразяване тук
FindNext (sr);
Край;

8. Затваряйки файла, всички наши извращения с него се запазват: процедура CloseFile (var F: File);

9. Преместване на рамка за четене: процедура Seek (var F; N: Longint);

Нека го обясня по-ясно: да кажем, че трябва да прочетете парче от 1000 байта от файл с 3000 байта, така че последният байт да попадне в буфера; ясно е, че четенето трябва да започне (и след това да се задълбочиJ) не от 0, а от 1000 байта! Затова пишем: Търси (F1,1000); И след това BlockRead (...);

10. Понякога, ако нещо не се получи, е важно да бъдете информирани за това. Да предположим, че искате да знаете дали четенето от файл е успяло. Веднага след BlockRead пишем: IF Ioresult = 0 тогава ... Ако нула, тогава всичко е успешно, ако не, се връща код за грешка. Тази техника е възможна само ако !

11. Когато е необходимо да прекратите програмата, без наистина да изненадате потребителя (например при HLLO вируси, когато няма програма за стартиране на J), аз лично наричам добрия стар стек препълване: