невидимое cmd

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by Ky3bMu4, 11 Feb 2007.

  1. Ky3bMu4

    Ky3bMu4 Elder - Старейшина

    Joined:
    3 Feb 2007
    Messages:
    487
    Likes Received:
    284
    Reputations:
    42
    Пишу трояна на с++. Всё написал, только осталась полная ерунда. Нуно скрыть cmd. Нашёл
    Code:
    ShowWindow(hWnd, SW_HIDE);
    hWnd - ет вроде имя класса. Помогите плиз. :)
     
  2. begin_end

    begin_end Green member

    Joined:
    4 Jan 2007
    Messages:
    265
    Likes Received:
    638
    Reputations:
    476
    Может я не понял, но чьё cmd нужно скрыть? Из какого приложения его нужно скрыть?
    hWnd - это хэндл окна, котрое нужно скрыть.
     
    _________________________
    1 person likes this.
  3. Ky3bMu4

    Ky3bMu4 Elder - Старейшина

    Joined:
    3 Feb 2007
    Messages:
    487
    Likes Received:
    284
    Reputations:
    42
    Нужно скрыть cmd самогу трояна. А тока у жертвы возникнут подозрение: почему висит посреди экрана cmd.))
     
    1 person likes this.
  4. KEZ

    KEZ Ненасытный школьник

    Joined:
    18 May 2005
    Messages:
    1,604
    Likes Received:
    754
    Reputations:
    397
    судя по твоим вопросам она не осталась а получилась

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

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

    :D
     
    #4 KEZ, 12 Feb 2007
    Last edited: 12 Feb 2007
    2 people like this.
  5. limpompo

    limpompo Новичок

    Joined:
    27 Aug 2005
    Messages:
    1,402
    Likes Received:
    308
    Reputations:
    453

    Не всем дано ходить на Поинты =) так что остаться Изучать WinAPI
     
    1 person likes this.
  6. begin_end

    begin_end Green member

    Joined:
    4 Jan 2007
    Messages:
    265
    Likes Received:
    638
    Reputations:
    476
    Ky3bMu4, я думаю, следующий пример тебе поможет:
    Code:
    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;
    }
    
     
    _________________________
  7. ()leg

    ()leg New Member

    Joined:
    30 Jan 2007
    Messages:
    9
    Likes Received:
    1
    Reputations:
    0
    Г-н

    Ky3bMu4 если можно скинь исходник мне на мыло. я прграммировать только начинаю интересно было бы посмотреть....
    [email protected]
     
    1 person likes this.
  8. Robin_Hood

    Robin_Hood Elder - Старейшина

    Joined:
    30 Oct 2006
    Messages:
    144
    Likes Received:
    155
    Reputations:
    47
    тебе просто нужно выполнение команд в cmd?если да попробуй system(), если я правильно тебч понял
     
  9. Ky3bMu4

    Ky3bMu4 Elder - Старейшина

    Joined:
    3 Feb 2007
    Messages:
    487
    Likes Received:
    284
    Reputations:
    42
    Эх...

    Code:
    WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
     
    1 person likes this.
  10. W!z@rD

    W!z@rD Борец за русский язык

    Joined:
    12 Feb 2006
    Messages:
    973
    Likes Received:
    290
    Reputations:
    43
    ShowWindow(хендл окна (для получения используй FindWindow), SW_HIDE)
    а воообще лучше
    winexec('cmd.exe',SW_HIDE)
    либо
    CreateProcess()
     
  11. X-lord

    X-lord Banned

    Joined:
    16 Dec 2006
    Messages:
    27
    Likes Received:
    4
    Reputations:
    1
    чё неужели неясно чё хотит Ky3bMu4????
    Code:
     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;
     
    #11 X-lord, 20 Feb 2007
    Last edited by a moderator: 20 Feb 2007
    2 people like this.