Pokaż wyniki od 1 do 4 z 4

Temat: Art - Autostart programu jako usluga systemowa

  1. #1
    Dawni Moderatorzy Avatar grzonu
    Dołączył
    26-12-2006
    Skąd
    Gdansk, Poland, Poland
    Posty
    1 392

    Domyślnie

    --------Autostart programu .... w dodatku z konta SYSTEM--------

    Czego bedziemy potrzebowali??
    -kompilatora ja uzywam VC++ 2008 moze na dev c++ tez zadziała(powinien)
    -znajomosci WinApi
    -znajomości c++
    -ostatecznie(choć nie polecam) stosowanie metody copiego-pasta


    Naszym celem jest stworzenie usługi systemowej uruchamiającej się ze startem systemu
    napewno ten sposob jest wielu osobom znany lecz wiele osob pyta sie o to na wielu forach.

    Zaczynamy
    na początku dołączamy plik windows.h (#include <windows.h>)

    potem w funkcji main wywołujemy następujacy kod
    Kod:
    SC_HANDLE sh_manager = OpenSCManager(NULL,NULL,SC_MANAGER_ALL_ACCESS);
    ****if(!sh_manager)
    ****{
    return false; //nie udalo sie otworzyc SCManagera
    ****}
    
    SC_HANDLE service_handle=CreateService(sh_manager,"nazwa_naszej_uslugi","nazwa_naszej_uslugi",SERVICE_ALL_ACCESS,SERVICE_WIN32_OWN_PROCESS,SERVICE_AUTO_START,SERVICE_ERR
    OR_NORMAL,"sciezka_do_pliku_exe",NULL,NULL,NULL,NULL,NULL);
    if(!service_handle)
    {
    if(GetLastError()==ERROR_SERVICE_EXISTS)//usluga o tej nazwie juz istnieje
    {
    service_handle= OpenService(sh_manager,"nazwa_naszej_uslugi",SERVICE_ALL_ACCESS);
    }
    else
    {
    CloseServiceHandle(sh_manager);//zamykamy uchwyty
    CloseServiceHandle(service_handle);
    return false;//nie udalo sie stworzyc uslugi
    }
    }
    else
    {
    if(StartService(service_handle,0,NULL)==0)//jesli nie ma zadnych bledow no to mozemy wystartowac nasza usluge :D
    {
    if(GetLastError()==ERROR_SERVICE_ALREADY_RUNNING)
    {
    return true;//zostala juz wczesniej uruchomiona
    }
    }
    }
    CloseServiceHandle(sh_manager);//zamykamy uchwyty
    CloseServiceHandle(service_handle);
    
    return true;//w tym momecie nasza usluga juz chodzi i uruchomi sie tez przy nastepnym uruchomieniu

    Jeslibysmy chcielibyśmy zatrzymac nasza usluge i ja usunac wystarczy posluzyc sie ponizszym kodem

    Kod:
    SC_HANDLE sh_manager = OpenSCManager(NULL,NULL,SC_MANAGER_ALL_ACCESS);
    ****if(!sh_manager)
    ****{
    return false; //nie udalo sie otworzyc SCManagera
    ****}
    
    SC_HANDLE service_handle= OpenService(sh_manager,"nazwa_naszej_uslugi",SERVICE_ALL_ACCESS);
    
    
    SERVICE_STATUS stat;
    if(ControlService(service_handle,SERVICE_CONTROL_STOP,&stat)!=0)
    {
    //rob cos
    //zatrzymano
    }
    else
    {
    //rob cos
    //nie zatrzymano - moze byc tak ze program juz skonczyl dzialanie wiec nie zawsze zwrocenie 0 oznacza ze operacja sie nie powiedzie
    }
    if(DeleteService(service_handle)!=0)
    {
    //rob cos
    //usunieto
    }
    else
    {
    //rob cos
    //nie udalo sie usunac
    }
    
    CloseServiceHandle(sh_manager);
    CloseServiceHandle(service_handle);

    Ale jest pewien problem ktorego jeszcze nie rozgryzlem ale znalazlem sposob na jego obejscie
    a mianowicie program musi miec specjalna funkcje main(dla uslugi) - jest ona opisana na MSDN - chetnych zapraszam do lektury
    jesli nie ma jej to po kilku sekundach sie wylaczy ale wystarczy teraz uzyc w zwyklym mainie funkcji WinExec i wystartowac inny program - on tez bedzie uruchomiony z konta SYSTEM


    powodzenia!!!


    //jak sie spodoba to prosze o przeniesienie do tutkow

    Edit Vandervir:
    Przeniesione
    Filmy online---Grzonu Blog

    1) Moje gg to nie pomoc techniczna w obsludze keyloggerow!!! Na gg i pw pomagam tylko w kwestiach organizacyjnych forum. Masz problem to pisz na forum.
    2) Nie zajmuje sie malware a uprzedzajac pytanie "czemu?" - bo taki mam kaprys!

  2. #2
    Moderator Avatar widmo17
    Dołączył
    16-07-2007
    Skąd
    irc.freenode.net #bimbrownia.org
    Posty
    1 090

    Domyślnie

    Spoko art, tylko chętnie bym sobie poczytał trochę więcej ;] Kod jest troszkę słabo opisany Ale wreszcie coś innego niż delphi xP

    HOMEPAGE - http://widmo.soa1.org - programowanie, security, serwery.

  3. #3
    Dawni Moderatorzy Avatar Dark Smark
    Dołączył
    29-04-2006
    Posty
    1 596

    Domyślnie

    Brawo grzonu! Nie sprawdzałem poprawności kodu ale dzięki temu że bardzo ogromna część to WinApi więc łatwo przepisać na inny język. W sumie każdy sobie poradzi bo tutaj malutko jest C++.
    Brawo za poświęcony czas i otwarcie źródła. Pozdrawiam.

  4. #4
    Dawni Moderatorzy Avatar grzonu
    Dołączył
    26-12-2006
    Skąd
    Gdansk, Poland, Poland
    Posty
    1 392

    Domyślnie

    pozatym wszytkie funkcje sa udokumentowane na MSDN
    Filmy online---Grzonu Blog

    1) Moje gg to nie pomoc techniczna w obsludze keyloggerow!!! Na gg i pw pomagam tylko w kwestiach organizacyjnych forum. Masz problem to pisz na forum.
    2) Nie zajmuje sie malware a uprzedzajac pytanie "czemu?" - bo taki mam kaprys!

Podobne wątki

  1. Uruchomienie programu jako usługa systemowa.
    Przez butek123
    w forum Newbie - Hacking
    Odpowiedzi: 7
    Ostatni post / autor: 26-03-2009, 18:30
  2. win xp autostart programu
    Przez tamil1
    w forum Windows
    Odpowiedzi: 7
    Ostatni post / autor: 24-12-2008, 18:59
  3. uruchamianie programu jako root
    Przez olek1991
    w forum C/C++/C#
    Odpowiedzi: 2
    Ostatni post / autor: 30-09-2007, 16:43
  4. Odpowiedzi: 5
    Ostatni post / autor: 25-08-2007, 08:30
  5. Zapora systemowa Windows
    Przez marc909
    w forum Windows
    Odpowiedzi: 8
    Ostatni post / autor: 09-04-2006, 20:55

Uprawnienia

  • Nie możesz zakładać nowych tematów
  • Nie możesz pisać wiadomości
  • Nie możesz dodawać załączników
  • Nie możesz edytować swoich postów
  •