Оригинальный DVD-ROM: eXeL@B DVD !
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 2 июня!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

ПРОГРАММИРОВАНИЕ НА C и С++



Возможности языков семейства Си по истине безграничны, однако, в этой свободе кроются и недостатки: всегда нужно программисту держать ухо востро и контроллировать "переполнение буфера", чтобы потом программа не вылетала в "синий экран" на массе разнообразных версий Windows и железа у пользователей. Те же крэкеры и реверсеры специально ищут в коде программ на Си уязвимости, куда можно подсадить любой вирусный код, об этом более подробно автор рассказывал в своём видеокурсе здесь. Я там многое узнал и теперь мой код стал значительно более безопасный.

Сети и Интернет

  1. [+] Как послать сообщение компьютеру в локальной сети
  2. [+] Как скачать файл из Интернета с конкретного сайта
  3. [+] Получение IP-адреса локальной машины
  4. [+] Получение имени локального компьютера
  1. Как послать сообщение компьютеру в локальной сети

    // Для того чтобы послать сообщение компьютеру в локальной сети
    // напишите следующие функции:
    bool SendNetMessage(AnsiString Komp, AnsiString Mes)
    {
    AnsiString From;
    char CompName[10];
    DWORD size=10;
    //Откуда
    if(!GetComputerName(CompName,&size)) return false;
    From=CompName;
    if(Mes.Length()==0) return false;
    HANDLE hSlot = CreateFile(("\\\\"+Komp+"\\mailslot\\messngr").c_str(),
    GENERIC_WRITE, FILE_SHARE_READ, NULL,
    OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
    if (hSlot == INVALID_HANDLE_VALUE) return false;
    DWORD cb=0;
    BOOL ret;
    char *buf=new char[From.Length()+1+Komp.Length()+1+Mes.Length()+1];
    //1. From
    memcpy(&buf[cb],From.c_str(),From.Length()+1);
    cb +=From.Length()+1; //+1 на конце должен быть 0
    //2. To
    memcpy(&buf[cb],Komp.c_str(),Komp.Length()+1);
    cb +=Komp.Length()+1;
    //3. Само сообщение
    memcpy(&buf[cb],Mes.c_str(),Mes.Length()+1);
    cb +=Mes.Length()+1;
    //ConvertToDos
    CharToOemBuff(buf,buf,cb);
    ret=WriteFile(hSlot, buf,cb, &cb, NULL);
    CloseHandle(hSlot);
    delete[] buf;
    if(!ret) return false;
    return true;
    }

    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
    AnsiString Komp,Mes;
    //Кому
    Komp=Edit1->Text; //Имя компьютера
    //Сообщение
    Mes=Edit2->Text; //Message
    bool ret;
    int Kol=UpDown1->Position;
    for(int i=1;i<=Kol;i++)
    {
    ret=SendNetMessage(Komp,Mes);
    }
    }

  2. Как скачать файл из Интернета с конкретного сайта

    // напишите следующуй код:
    NMHTTP1->InputFileMode=true;
    NMHTTP1->Get(" http://www.xxx.ru/pic.gif");
    NMHTTP1->Body="pic.gif"; //на винт скинуть

  3. Получение IP-адреса локальной машины

    // напишите следующуй код:
    #include <winsock.h>
    #include <stdio.h>

    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
    WORD wVersionRequested;
    WSADATA wsaData;
    wVersionRequested = MAKEWORD(1, 0);
    int err = WSAStartup(wVersionRequested, &wsaData);
    if(err == 0)
    {
    char hn[1024];
    struct hostent *adr;
    if(gethostname((char *)&hn, 1024))
    {
    int err = WSAGetLastError();
    Beep();
    };
    adr = gethostbyname(hn);
    if(adr)
    {
      char *LocalIp = new char[15];
      sprintf(LocalIp,"%d.%d.%d.%d",
      (unsigned char)adr->h_addr_list[0][0],
      (unsigned char)adr->h_addr_list[0][1],
      (unsigned char)adr->h_addr_list[0][2],
      (unsigned char)adr->h_addr_list[0][3]);
      Label1->Caption=LocalIp; //Выводим IP адрес
    }
    }
    }

  4. Получение имени локального компьютера

    // напишите следующуй код:
    #include <winsock.h>

    WORD wVersionRequested;
    WSADATA wsaData;
    wVersionRequested = MAKEWORD(1, 0);
    int err = WSAStartup(wVersionRequested, &wsaData);
    if(err == 0)
    {
    char name[1024];
    if(gethostname((char *)&name, 1024))
    {
    int err = WSAGetLastError();
    Beep();
    };
    Label1->Caption=name; //выводим имя
    }



<< ВЕРНУТЬСЯ В ПОДРАЗДЕЛ

<< ВЕРНУТЬСЯ В ОГЛАВЛЕНИЕ




Материалы находятся на сайте https://exelab.ru/pro/



Оригинальный DVD-ROM: eXeL@B DVD !


Вы находитесь на EXELAB.rU
Проект ReactOS