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

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   С/С++, C#, Delphi, .NET, Asm (https://forum.antichat.xyz/forumdisplay.php?f=24)
-   -   как спрятать программу в ДиспетчереЗадач? (https://forum.antichat.xyz/showthread.php?t=41034)

x-treem 28.05.2007 08:11

как спрятать программу в ДиспетчереЗадач?
 
может где - то писалось - я не нашёл. взникла проблема. Надо спрятать программу на Делфи от Диспетчера Задаач. Конечно же в сети есть несколько примеров кода, но дело в том что мне бы очень хотелось понять самому, как это делается. Может кто нибудь покажет какие нить простенькие методики?

_Great_ 28.05.2007 08:14

x-treem
На выбор перехват ZwQuerySystemInformation (ntdll.dll), написание драйвера ядра для перехвата ZwQuerySystemInformation в ядре или разрыв связей EPROCESS планировщика

x-treem 28.05.2007 08:36

хм... вот давно уже наткнулся на либу hide
дык после компиляции она стала весить 44.5 кб. много для либы. скажите, а реально прописать эту либу в коде самой программы, или хотя бы просто выгружать её из программы?

Joker-jar 28.05.2007 08:58

В самой программе - нет, так как это глобальный хук. А выгружать - да. Храни в ресурсах, либо в массиве. Выгружай при загрузке. Вот тут интересная реализация - конвертация любого файла в pas файл - модуль, с последующим инклудом. В модуле содержится функция сохранения обратно в файл (которая, кстати, мне не нравится из-за ее медлительности, я б сделал так:
Код:

procedure SaveToFile(FileName:String);
var
  F:File;
begin
  AssignFile(F,FileName);
  ReWrite(F,1);
  BlockWrite(F, FileData, FileSize);
  CloseFile(F);
end;

)

slesh 28.05.2007 09:51

Есть еще один специфический способ - постонно отыскивать окно диспечера задач. и с помошью API функций удалять себя из списка.
Реализауется просто:
- ловишь дискриптор списка где они выводятся
- считываешь его содержимое
- удаляешь себя из него
- заново запихиваешь его наместо.
Способ хорошо действует тока на стандартном диспечере задач. т.е. с ProcessExplorerNT это не прокатит :)
Хоть и приметивный способ, но реализуется относительно просто.

bl4ck-cat 28.05.2007 09:58

Код:


 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 нужно удалить..

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

zl0y 28.05.2007 10:18

bl4ck-cat !Ему на Delphi Надо!
Цитата:

может где - то писалось - я не нашёл. взникла проблема. Надо спрятать программу на Делфи от Диспетчера Задаач. Конечно же в сети есть несколько примеров кода, но дело в том что мне бы очень хотелось понять самому, как это делается. Может кто нибудь покажет какие нить простенькие методики?

bl4ck-cat 28.05.2007 10:36

упс :) сорри - не заметил :)

Joker-jar 28.05.2007 10:50

Так ты показывай найденные примеры и тыкай где тебе не понятно, люди помогут. Или пример все-таки нужен?

NetMan 28.05.2007 14:36

bl4ck-cat, этот исходник пашет только на Windows 95 / 98 / ME...


Время: 04:02