Assembler е лесно! Да се научим да п освобождаване програма 020 (вирус) (BLER) бюлетин
Преди да се впусне в изучаването на материала в тази версия, трябва да прочетете предишните.
Въпросите, които получавам от начинаещи (моля, прочетете ги!):
моите приятели! Не очаквах, че ще се получи около 300 Щастлива Нова Година! Благодаря на всички ви много! Четене на многото писма, които дори се просълзявам! Честно казано! Много хубаво! Мога да, от своя страна, Пожелавам на всички Весела Коледа. Въпреки, че в миналото, но все пак.
Днес ние имаме юбилей, ХХ издание. Радвам се, че най-накрая стигнахме този номер. Надявам се, че заедно ще отиде по-далеч. Достигане до стотици. Представете си "Освобождаването на N 126 (силует на браузъра)". Да. Eyed сънува.
Аз все още получаваме много писма с въпроси като: "Ще ходим ли да вземе инструкции MMX, и т.н." Разбира се, ние ще! След финала на DOS, ние стигнем до Windows, където цялото очарование и помисли процесорите Pentium. Най-малко, надявам се.
За пореден път някои podpschiki очакват с нетърпение програмиране на асемблер под Windows. Но по-голямата част от нашия екип е непознат с DOS. Смятам, че би било подходящо да се премине на DOS, така да се каже ", се чувствам, като риба във вода." След това започнете да prespokoynenko програмиране под Windows. Аз дори докато прави планове за обединение на двете писма: програмиране в езика на високо ниво, като например: C ++, Pascal и т.н., както и от нашите монтажници ..
Може би, тъй като ние се премине към Windows, в нашия бюлетин ще съвместно домакинство. Т.е. бюлетин ще носи 2-3 души на равни начала. Няма да има повече дискусии, дебати, различни дискусии и така нататък. Сега основно се научат пишат алгоритмите на програмата, която аз ще ястие. Естествено, те не винаги са оптимални на 100%. В крайна сметка, същия проблем може да бъде решен по няколко начина. Не е ли? Аз мисля, че ние ще направим онлайн дискусионен форум, където всеки може да напусне за общ преглед своето решение на проблем, алгоритъм, програма и т.н. Е, това вече мога да използвам CGI, SSI, и т.н. Какво мислите, че ще се интересуват? Какво друго можем да ви предложим?
Как да се пренапише досие за заявление за текстови файлове от DOS?
- марка "мишка" всичко, което е в горния прозорец (десен бутон на "мишката" ---> Select All (Избери всички));
- Натиснете Ctrl + Insert;
- стартирате DOS Navigator, Norton Commander, Volcov Commander или FAR;
- Натиснете Shift + F4;
- VIRUS20.ASM въведете името на файла;
- натиснете Shift + Insert;
- Натиснете F2;
- изход към DOS и Сглобете!
готови да научите в емисията годишнина зарази други програми ли сте? е дошло времето. Сега нашата Virus е напълно функционален. Бъдете внимателни! Случайно заразяване желания файл, ще трябва да прекарат известно време, за да го излекува ръчно. Веднага ви предупреждавам: не са писали анти-вирус. Аз го имам от двамата. Така че, бъдете много внимателни!
1) Virus местно. Това означава, че той ще зарази само програми, ако ви свършат заразен ком-файл. В памет не остане нищо!
2) вирусът не прави нищо, но заразява файлове.
3) Никоя от антивирусната програма не лекува файл заразен от вирус ни! Така че, не очаквам д-р Web, или на нещо друго.
4) вирус заразява само * .com-файлове в текущата директория. Какво означава това? Така например, в директорията C: \ assm имат следните файлове:
1. test.com
2. dn.com
3. nc.exe
и, test.com заразен от нашия вирус. Стартиране test.com да изпълнява, той заразява dn.com. Dn.com работи тогава не се заразяват с вируса, тъй като в тази директория и вече не ни неинфектирани вирусни * .com-файлове.
НО! Ако сте в пътя (в autoexec.bat) на стойност път до директорията C: \ ASSM, течаща test.com от текущата директория, например, C: \ не е проверено, вирус ще зарази първата ни контра-ком-файл в директорията C: \ не е проверено. Бъдете внимателни.
Ако, обаче, не е беда, а вие не знаете как да се премахне вирусът, който е заразил целия компютър, а след това веднага да ми изпратите имейл. Аз ще ви обясни как да се възстанови заразения файл. Макар че, ако преди да изпълните virus20.com да изпълнява, можете да прочетете описанието към него и да го разбера по цялото тяло, работата за възстановяване на заразения файл, че няма да бъде. Ако имате време, ще бъдат изложени на сайта на антивируса на началната страница (за всеки случай. И изведнъж някой дойде по-удобно?). И като цяло може да се напише антивирусна? Разбира се! Ще се радвам да се запознаят с творчеството си. Изпрати опции!
5) * .Ком-файлове в директорията C: \ Windows \ команда, след инфекция отказват да работят правилно. Каква е причината - не е съвсем ясно. Стискайки тези файлове PKLite, резултатът е един и същ (т.е. неправилно определяне на командния ред). Най-вероятно, те разчитат контролна или нещо друго. Може би, кой знае - пишат. Аз нямам време да се разбере. За експериментите ще трябва да се търсят други * .com-файлове.
В бъдещите версии, ще напишем антивирусна и дойдох до този лош, безвреден, но интересна и се охлажда до направим вирус.
Сега е по-важно.
Въпрос: Възможно ли вместо RET ли е и за обаждания JMP? И вместо да JMP - RET?
Разбира се, че можеш! Ето един прост пример:
В някои случаи е полезно да се използват нестандартни команди.
Защо казвам това? Моля, обърнете внимание, ние сега се обръщат към етикета на инициализация вирус (Init):
натиснете компенсира Init; 3 байта
задържане 1 байт
Как заразяване на файл?
Какво е "жертва файла" след инфекция?
Файл Заразяването става по следния начин (виж процедура Infect_file). Пропуснете търсенето на файла. Ние ще приемем, че файлът вече е открит. Остава само да се провери нейната дължина:
Mov брадва, CS: [1 Летописи]; получи втората дума на заразения дължината на файла
или брадва, брадва; Ако не е 0, а след това излизане.
jnz Error_infect ;. Това означава, че размерът на файла е по-голям от 64K.
Mov бд, CS: [1Ah]; получи нисък ред дума (т.е., размер на файла)
Защо ние проверяваме дължината на ком-файла, ако е известно, че най-COM-файлове не могат да бъдат повече от 64K? Фактът, че DOS определя какъв тип файл не е започнал да се разширява, а в първите си два байта на съдържанието на файла. Ако това е "MZ" или "ZM", след това файла - COM - EXE, в противен случай. Можете да проверите. По този начин, нищо не пречи на никого, за да преименувате файл, например, test.exe 450Kb дължина test.com. DOS все още ще се определи, че това EXE файл в първите два байта.
Един пример е COMMAND.COM, която заема 95KB DOS 7.0. разширение COM са напуснали за съвместимост с програми, написани за по-старите версии на DOS.
И така, какво се случва, ако се опитаме да зарази COMMAND.COM същото, което по същество е COMMAND.EXE? О, нищо! Просто ще го прецакаш! Т.е. тя ще спре да работи. Ето за това и трябва да се провери размера на факта, че е по-малко от 64K.
Забележете как го правим. След 4Fh функция (4EH) намери файла в DTA при офсетов 1Ah влезе размера на файла. защото два байта могат да съхраняват брой до 65 535, и двете думи се използват за определяне на размера на файла. Първият (офсет 1Ah) - най-младата половина на второто (офсет - 1 Летописи) - по-възрастен. Ние помним, че данните се съхраняват в паметта на противното ( "назад").
Това, което не му направих на вируса, така че това е - ако не сме проверили посочените (MZ) символ. Защо? И какво, ако Търсейки-файл е с дължина по-малко от 64K, но разширяването на общата организация на пазара? Това също може да бъде. Ами, просто някой се пошегува. Надявам се, че го правите сами лесно.
- отворите намерен файл за четене / запис (3D02h);
- първите шест байта него (3FH) четат;
- Ние проверяваме дали файлът е заразен с вирус, за да ни вече или все още.
Тук спираме за кратко. В нашия пример, ние използваме т.нар 1122h подпис да се определи дали заразен файл намерени нашия вирус или не. Този подпис трябва да се намира на 4 компенсира от началото на файла. Моля, имайте предвид, че ние проверяваме
CMP дума PTR [BX + 4], 1122h
и 1122h файл ще бъде изпратен напротив: 2211h. Тук имате още едно доказателство, че данните се съхраняват в компютъра "назад".
И какво, ако в някои неинфектирани файл с отместване 4 от началото вече имат такава линия? Оказва се, че ние почувствахме, че файлът вече е заразен? Да. Но какво мислите, каква е вероятността, че подписът ще бъде във файла за такава промяна? Може би, дори и файл нещо не го прави. Но ако все още се съмнявате, можете да си направите подпис по-дълго. Например, 6 байта. Това е въпрос на време.
Така че ние проверихме. След това поставете показалеца на файл в края на файла. Ние ще се основава на нашия вирус файл опашка.
Както можете да видите, ние използваме функцията 4202h, за да преместите курсора в края на файла. Ето, погледнете тази функция:
Функция 4202h 21ч прекъсва: Създаване на курсора в края на файла.
AX = 4202h
BX = брой файл
CX, DX = брой байтове nobhodimosti брои от края на файла и да го инсталирате на своя индекс.