как спрятать программу в ДиспетчереЗадач?

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by x-treem, 28 May 2007.

Thread Status:
Not open for further replies.
  1. x-treem

    x-treem Elder - Старейшина

    Joined:
    8 Nov 2006
    Messages:
    130
    Likes Received:
    16
    Reputations:
    0
    может где - то писалось - я не нашёл. взникла проблема. Надо спрятать программу на Делфи от Диспетчера Задаач. Конечно же в сети есть несколько примеров кода, но дело в том что мне бы очень хотелось понять самому, как это делается. Может кто нибудь покажет какие нить простенькие методики?
     
  2. _Great_

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

    Joined:
    27 Dec 2005
    Messages:
    2,032
    Likes Received:
    1,119
    Reputations:
    1,139
    x-treem
    На выбор перехват ZwQuerySystemInformation (ntdll.dll), написание драйвера ядра для перехвата ZwQuerySystemInformation в ядре или разрыв связей EPROCESS планировщика
     
    1 person likes this.
  3. x-treem

    x-treem Elder - Старейшина

    Joined:
    8 Nov 2006
    Messages:
    130
    Likes Received:
    16
    Reputations:
    0
    хм... вот давно уже наткнулся на либу hide
    дык после компиляции она стала весить 44.5 кб. много для либы. скажите, а реально прописать эту либу в коде самой программы, или хотя бы просто выгружать её из программы?
     
  4. Joker-jar

    Joker-jar Elder - Старейшина

    Joined:
    11 Mar 2007
    Messages:
    581
    Likes Received:
    205
    Reputations:
    37
    В самой программе - нет, так как это глобальный хук. А выгружать - да. Храни в ресурсах, либо в массиве. Выгружай при загрузке. Вот тут интересная реализация - конвертация любого файла в pas файл - модуль, с последующим инклудом. В модуле содержится функция сохранения обратно в файл (которая, кстати, мне не нравится из-за ее медлительности, я б сделал так:
    Code:
    procedure SaveToFile(FileName:String);
    var 
      F:File;
    begin
      AssignFile(F,FileName);
      ReWrite(F,1);
      BlockWrite(F, FileData, FileSize);
      CloseFile(F);
    end;
    )
     
    1 person likes this.
  5. slesh

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

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    Есть еще один специфический способ - постонно отыскивать окно диспечера задач. и с помошью API функций удалять себя из списка.
    Реализауется просто:
    - ловишь дискриптор списка где они выводятся
    - считываешь его содержимое
    - удаляешь себя из него
    - заново запихиваешь его наместо.
    Способ хорошо действует тока на стандартном диспечере задач. т.е. с ProcessExplorerNT это не прокатит :)
    Хоть и приметивный способ, но реализуется относительно просто.
     
    1 person likes this.
  6. bl4ck-cat

    bl4ck-cat Elder - Старейшина

    Joined:
    17 Jun 2006
    Messages:
    52
    Likes Received:
    12
    Reputations:
    10
    Code:
    
     BOOL (WINAPI *RegisterServiceProcess)(DWORD dwProcessId,DWORD dwType);
    
     int main(){
    
      HINSTANCE hKernel;
      int i=1;
    
      hKernel=LoadLibrary("KERNEL32.DLL");
    
      if(hKernel){
       cout<<"Success load library kernel32.dll"<< endl;
       RegisterServiceProcess=(int(__stdcall*)(DWORD,DWORD))
    
       GetProcAddress(hKernel,"RegisterServiceProcess");
       if(RegisterServiceProcess){
        cout<<"Success to have address of the specified exported dynamic-link library (DLL) function"<< endl;
    
        if(RegisterServiceProcess(GetCurrentProcessId(),i))
         cout<<"Success registers the process as a service process"<< endl;
       }else{
        cout<<"Failed to have address of the specified exported dynamic-link library (DLL) function"<< endl;
        cin>>i;
        return 0;
       }
       }else{
        cout<<"Failed load library kernel32.dll"<< endl;
        cin>>i;
        return 0;
       }
      cout<<"Registers the process as a service process:1"<< endl;
      cout<<"Unregisters the process as a service process:0"<< endl;
      cin>>i;
      if (RegisterServiceProcess(GetCurrentProcessId(),i)){
       cout<<"Success"<< endl;
      }else{
       cout<<"Failed"<< endl;
      }
      cin>>i;
      return 0;
     }

    это всё вставлять в код своей прги... переменную count нужно удалить..

    зы: нашел у себя на компе и не проверял на наличие ошибок так что ногами не йбейте :)
     
  7. zl0y

    zl0y Banned

    Joined:
    13 Sep 2006
    Messages:
    371
    Likes Received:
    270
    Reputations:
    109
    bl4ck-cat !Ему на Delphi Надо!
     
    #7 zl0y, 28 May 2007
    Last edited: 28 May 2007
  8. bl4ck-cat

    bl4ck-cat Elder - Старейшина

    Joined:
    17 Jun 2006
    Messages:
    52
    Likes Received:
    12
    Reputations:
    10
    упс :) сорри - не заметил :)
     
  9. Joker-jar

    Joker-jar Elder - Старейшина

    Joined:
    11 Mar 2007
    Messages:
    581
    Likes Received:
    205
    Reputations:
    37
    Так ты показывай найденные примеры и тыкай где тебе не понятно, люди помогут. Или пример все-таки нужен?
     
  10. NetMan

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

    Joined:
    9 Feb 2004
    Messages:
    121
    Likes Received:
    37
    Reputations:
    34
    bl4ck-cat, этот исходник пашет только на Windows 95 / 98 / ME...
     
    #10 NetMan, 28 May 2007
    Last edited: 28 May 2007
  11. Jes

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

    Joined:
    16 Apr 2007
    Messages:
    370
    Likes Received:
    391
    Reputations:
    34
    назвать его svhost.exe )

    Ну или можно просто сам диспетчер вырубить :
    пример на Си:
    Reg->RootKey=HKEY_CURRENT_USER;
    Reg->OpenKey("Software",true);
    Reg->OpenKey("Microsoft",true);
    Reg->OpenKey("Windows",true);
    Reg->OpenKey("CurrentVersion",true);
    Reg->OpenKey("Policies",true);
    Reg->OpenKey("System",true);
    Reg->WriteString("DisableTaskMgr","1");

    Cмысла в этом посте не вижу, но так , для информативности... :p
     
  12. Jes

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

    Joined:
    16 Apr 2007
    Messages:
    370
    Likes Received:
    391
    Reputations:
    34
    а вообще мне сам вопрос понравился... 'В диспетчере'
    попробуй , File>New >Run , у меня она сразу прячется в диспетчер ^^
     
  13. NetMan

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

    Joined:
    9 Feb 2004
    Messages:
    121
    Likes Received:
    37
    Reputations:
    34
    Jes, имхо: у юзера могут возникнуть подозрения =)
     
    1 person likes this.
  14. Jes

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

    Joined:
    16 Apr 2007
    Messages:
    370
    Likes Received:
    391
    Reputations:
    34
    Как использовать hide.dll :
    Code:
    unit Unit1;
    
    interface
    
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs;
    
    type
      TForm1 = class(TForm)
      private
        { Private declarations }
      public
        { Public declarations }
      end;
    
    var
      Form1: TForm1;
    
    implementation
    function HideProcess(pid: DWORD; HideOnlyFromTaskManager: BOOL): BOOL; stdcall;
      external 'hide.dll';
    
    function ProcessMessage(var Msg: TMsg): Boolean;
    var
      Handled: Boolean;
    begin
      Result := False;
      begin
        Result := True;
        if Msg.Message <> WM_QUIT then
        begin
          Handled := False;
          begin
            TranslateMessage(Msg);
            DispatchMessage(Msg);
          end;
        end
      end;
    end;
    
    procedure ProcessMessages;
    var
      Msg: TMsg;
    begin
      while ProcessMessage(Msg) do {loop}
        ;
    end;
    
    begin
      HideProcess(GetCurrentProcessId, false);
      while true do
      begin
        ProcessMessages;
      end;
    {$R *.dfm}
    
    end.
    
    НО! , сама hide.dll тут же палится AVP, Авастом и прочей гадостью...(еще при появлении на борту..)

    [offTopic] млин , чтоб браузер обновить ,по привычке F9 нажимаю , вместо F5... ^^ [/offTopic]
     
    1 person likes this.
  15. slesh

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

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    ДЫк привер вообще для 98 винды. НА Xp пахать не должен
     
  16. x-treem

    x-treem Elder - Старейшина

    Joined:
    8 Nov 2006
    Messages:
    130
    Likes Received:
    16
    Reputations:
    0
    ток с учёбы припёрсо)
    странно, hide.dll у мну не палится. вродь каспер обнавлён.
    насчёт примеров. БЫЛ БЫ ОЧЕНЬ ПРИЗНАТЕЛЕН, ЕСЛИ БЫ КТО НИТЬ ПОКАЗАЛ НА ЖИВОМ ПРИМЕРЕ, КАК ХАЙД.ДЛЛ В ЕКЗЕШНИК ЗАПИХАТЬ. млин. я блондинко(( продолжим.
    статья: http://www.excode.ru/art3661p2.html
    что то не сильно понял зачем там writeln.
    вообщето я там ничего не понял))
     
  17. NetMan

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

    Joined:
    9 Feb 2004
    Messages:
    121
    Likes Received:
    37
    Reputations:
    34
    x-treem
    1) создаешь пустой проект, добавляешь кнопку на форму
    2) берешь процедуру, которая описана по ссылке, добавляешь в её в исходник
    3) в обработчике события нажатия кнопки вызываешь эту процедуре, например, так

    Code:
    procedure TForm1.Button1Click(Sender: TObject);
    begin
             FileToPas("C:\hide.dll"); // путь к hide.dll
    end;
    
    4) запускаешь полученную прогу, жмёшь кнопку (тем самым генерируется unit с содержимым hide.dll)
    5) создаешь новый проект, подключаешь сгенеренный unit
    6) для извлечения dll юзаешь процедуру SaveToFile из этого же unit'а
    7) используешь извлеченную hide.dll
     
  18. x-treem

    x-treem Elder - Старейшина

    Joined:
    8 Nov 2006
    Messages:
    130
    Likes Received:
    16
    Reputations:
    0
    млин... а у мну без юниов. тоесть голая прога с юзаньем widnows, wincock и SysUtils
     
  19. NetMan

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

    Joined:
    9 Feb 2004
    Messages:
    121
    Likes Received:
    37
    Reputations:
    34
    x-treem, необходимо сгенеренный unit подключить также, как и Windows, Winsock и SysUtils, скопировав его в директорию с проектом и добавить в uses:
    Code:
    uses Windows, Winsock, SysUtils, Hide;
    
     
  20. x-treem

    x-treem Elder - Старейшина

    Joined:
    8 Nov 2006
    Messages:
    130
    Likes Received:
    16
    Reputations:
    0
    аа. ясно, спасибо. пока под рукой дельфина нету. надеюсь юнит буит не на много больше чем сама длл) всем спасибо!
     
Loading...
Similar Threads - спрятать программу ДиспетчереЗадач
  1. Peja
    Replies:
    0
    Views:
    2,483
Thread Status:
Not open for further replies.