
Това е първата част от поредицата но не е завършена изцяло ще едитвам темата когато направя продължението.. поствам я за ми кажете ако мислите че нещо трябва да се промени или да предложите какво още да обясня
В тази първа статия за вирус програмирането ще обясня колкото
се може повече неща които са необходими да знаете за да можете
да създавате вируси
Тъй като всички вируси от тази поредица ще бъдат направени
главно на C. Ще започна с обяснение на някой неща за C които
повечето от вас сигурно знаят но аз искам да обясня някой
неща за по начинаещите... Тук няма да ви науча на главните
неща на C, вече има такива материали за четене по долу ще дам
линкове Тук само ще подчертая най важното което трябва да знаете
Тъй като разбрах че указателите (pointers) не са ясни на много
хора реших и тях да обясня до колкото мога
Гледайте на указателите като на нищо повече от променливи в които
можете да записвате адресите на променливи и да имате достап до
тяхните стойности
Ето ви един код в който използваме указатели
[code]
int main()
{
int *ptr;
int var = 5;
ptr = &var;
*ptr = 3;
printf("%d\n",var);
return 0;
}
[/code]
Както виждате в този код даваме на ptr адресът на var ( чрез анперсант (&) знака може
да вземете адреса на променлива и указател ) след което
чрез астерикс (*) може да имаме достъп до стойноста която се намира
на адреса към който сочи пойнтера
Ето ви някой примери с които мисля че трябва да разберете за какво
става въпрос:
int *ptr;
int var = 5;
ptr = var; вместо адреса ще запишем в ptr стойноста на var - 5
и ако се опитате да вземете стойноста която се намира на адреса
посочен от ptr със *ptr то тогава ще получете грешка защото
5 е невалиден адрес
ptr = &var; дава на ptr адрес към който да сочи и имено този на
var, в този случей чрез *ptr ще имате достъп до стойноста на var
printf("%X\n",&ptr); извежда на екрана самият адрес на ptr
Много важно е също така и да знаете че низовете са също пойнтери
Самоче един низ е част от няколко на брой елемента, и може да имаме
достъп само до един елемент или до всички наведнъж
Ето ви пример как може пойнтер да сочи към някой от елементите в
низа:
[code]
int array[10];
array[3] = 5;
int *ptr;
ptr = array+3;
printf("%d\n",*ptr);
[/code]
Array е същото като ptr самоче array побира 10 елемента а ptr
само един.Но ако нагласим ptr да сочи към началото на array то
тогава array[1]; ще е същото като *(ptr+1);
А ако случайно имате указател към структура,като:
[code]
struct tag {
int x;
int z;
};
struct tag *StructPtr;
StructPtr->x = 5;
printf("%d\n",StructPtr->x);
[/code]
то за да използвате
някой от членовете на структурата се използва знака ->.
Нека продължим със функцийте. Трябва да знаете че всяка функция
може да върне само ЕДНА стойност.Също така стойноста
която се връща и променливата в която се връща трябва да са от
един и съши тип ;) .Ако не знаете това може да имате
доста главоболия ето ви пример:
[code]
int func();
int main()
{
char c;
c = func();
printf("%d\n",c);
system("PAUSE");
return 0;
}
char func() {
return 127;
}
[/code]
Макар че при пускането този код наистина работи пробвайте да
да смените числото което връща func() на по голямо от 127 ;)
Да не работи защото типа char може да поема стойности от -128
до 127 и като въведем стойност по голяма от максималната която
може да се побере в променливата ( в нашият случей c ) то се получава
препълване (overflow) което води до загуба на данни Такаче
винаги внимавайте с типовете данни които ползвате ;)
А ако не искате някоя функция да връща стойност то тогава може
да я дефинирата да бъде от типа void
Сега теоритично ще ви запозная с главните части на един вирус
Нека разсея всички митове за това че вируса е нещо което прецаква
компа... да много от вирусите са разрушителни но вирус е просто програма
която се саморазпространява.Всеки може да създаде програма която да
унищожи Уиндоус само с няколко реда код но това не е забавно
При програмирането на вируси ще може да усетите как нещо оживява
във вашите ръце . Яко е да търсиш нови методи да минеш покрай
анти вирусните и защитните стени :) Войната между анти вирусните
компаний и създателите на вируси се води от незапомнени времена...
Ако искате и вие да впишете името си в тази история то стягайте
и почвайте да четете :)
Ето една схема с главните части на един вирус:

Това са само частите без които неможе един вирус а иначе
може да се добави PayLoad(по нататък като го използваме
ще разберете какво е това) там където искате :) може да се
добави и код който да криптира/декриптира вашият вирус, а най
модерните вируси ползват даже и мощни инструменти с които
при всяко ново поколение вируса мутира, че даже и инструменти
чрез които вируса смесва своят код със този на на заразената програма.