Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   С/С++, C#, Delphi, .NET, Asm (https://forum.antichat.xyz/forumdisplay.php?f=24)
-   -   невидимое cmd (https://forum.antichat.xyz/showthread.php?t=33205)

Ky3bMu4 11.02.2007 23:11

невидимое cmd
 
Пишу трояна на с++. Всё написал, только осталась полная ерунда. Нуно скрыть cmd. Нашёл
Код:

ShowWindow(hWnd, SW_HIDE);
hWnd - ет вроде имя класса. Помогите плиз. :)

begin_end 11.02.2007 23:38

Может я не понял, но чьё cmd нужно скрыть? Из какого приложения его нужно скрыть?
hWnd - это хэндл окна, котрое нужно скрыть.

Ky3bMu4 12.02.2007 12:31

Нужно скрыть cmd самогу трояна. А тока у жертвы возникнут подозрение: почему висит посреди экрана cmd.))

KEZ 12.02.2007 13:50

Цитата:

Всё написал, только осталась полная ерунда. Нуно скрыть cmd.
судя по твоим вопросам она не осталась а получилась

hWnd - это 4(32b)/8(64b) - байтное значение "идентификатора" окна (хэндла),
используя которое которое этим окном можно манипулировать
получить его можно ф-ией FindWindow() которая требует имя класса/+заголовок окна
и вообще можно обойтись без ShowWindow(), если создавать cmd ф-ией CreateProcess для шелла, заполняя некоторые структуры

надо было идти на поинт и пить а не WinAPI изучать!

:D

limpompo 12.02.2007 14:04

Цитата:

надо было идти на поинт и пить а не WinAPI изучать!

Не всем дано ходить на Поинты =) так что остаться Изучать WinAPI

begin_end 12.02.2007 14:17

Ky3bMu4, я думаю, следующий пример тебе поможет:
Код:

HWND GetConsoleHwnd(void)
{
#define MY_BUFSIZE 1024
    HWND hwndFound;
    char pszNewWindowTitle[MY_BUFSIZE];
    char pszOldWindowTitle[MY_BUFSIZE];
//Запоминаем заголовок консоли
    GetConsoleTitle(pszOldWindowTitle, MY_BUFSIZE);
//Делаем уникальную строку из всякой лабуды
    wsprintf(pszNewWindowTitle,"%d/%d",
                GetTickCount(),
                GetCurrentProcessId());
//Меняем заголовок на уникальный
    SetConsoleTitle(pszNewWindowTitle);
//Немного подождем
    Sleep(40);
//Находим хэндл
    hwndFound=FindWindow(NULL, pszNewWindowTitle);
//Меняем загловок окна обратно
    SetConsoleTitle(pszOldWindowTitle);
    return(hwndFound);
}

int main(int argc, char* argv[])
{
        //прячем окно
        ShowWindow(GetConsoleHwnd(), SW_HIDE);
        //делаем паузу, чтобы убедиться в результате
        Sleep(5000);
        return 0;
}


()leg 12.02.2007 20:14

Г-н
 
Ky3bMu4 если можно скинь исходник мне на мыло. я прграммировать только начинаю интересно было бы посмотреть....
invisible@doma.net.ua

Robin_Hood 12.02.2007 20:29

тебе просто нужно выполнение команд в cmd?если да попробуй system(), если я правильно тебч понял

Ky3bMu4 12.02.2007 20:35

Эх...

Код:

WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)

W!z@rD 14.02.2007 21:28

ShowWindow(хендл окна (для получения используй FindWindow), SW_HIDE)
а воообще лучше
winexec('cmd.exe',SW_HIDE)
либо
CreateProcess()

X-lord 20.02.2007 18:43

чё неужели неясно чё хотит Ky3bMu4????
Код:

function GetDosOutput(const CLine:string;Vr:string):string;
var
SA: TSecurityAttributes;
SI: TStartupInfo;
PI: TProcessInformation;
StdOutPipeRead, StdOutPipeWrite: THandle;
WasOK: Boolean;
Buffer: array[0..255] of Char;
BytesRead: Cardinal;
Line,Com:string;
begin
with SA do
begin
nLength := SizeOf(SA);
bInheritHandle := True;
lpSecurityDescriptor := nil;
end;
CreatePipe(StdOutPipeRead,StdOutPipeWrite,@SA,0);
Com:=Vr+CLine;
try
with SI do
begin
FillChar(SI, SizeOf(SI), 0);
cb := SizeOf(SI);
dwFlags := STARTF_USESHOWWINDOW or STARTF_USESTDHANDLES;
wShowWindow := SW_HIDE;
hStdInput := GetStdHandle(STD_INPUT_HANDLE); // стандартный ввод не перенаправляем
hStdOutput := StdOutPipeWrite;
hStdError := StdOutPipeWrite;
end;
WasOK := CreateProcess(nil, PChar(Com), nil, nil, True, 0, nil, nil, SI, PI);
CloseHandle(StdOutPipeWrite);
if not WasOK then
result:='Could not execute command line!'
else
try
Line := '';
repeat
WasOK := ReadFile(StdOutPipeRead, Buffer, 255, BytesRead, nil);
if BytesRead > 0 then
begin
Buffer[BytesRead] := #0;
Line := Line + Buffer;
end;
until not WasOK or (BytesRead = 0);
WaitForSingleObject(PI.hProcess, INFINITE);
finally
CloseHandle(PI.hThread);
CloseHandle(PI.hProcess);
end;
finally
result:=Line;
CloseHandle(StdOutPipeRead);
end;
end;



Время: 12:37