Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.10.28;
Скачать: CL | DM;

Вниз

Раскрытие процесса   Найти похожие ветки 

 
Cj ©   (2007-04-23 05:41) [0]

Всем привет. Проблема такая: есть пример по скрытию процесса и эту программу не видит Диспетчер задач и моя прога, но его видет например PROCESS EXPLORER от SYSINTERNALS.com, как мне раскрыть этот процесс?


 
cj ©   (2007-04-23 05:45) [1]

В примере идет перехват NtQuerySystemInformation посредством присоединения DLL. Пытался делать FREE всем лишним DLL`кам и при установке фокуса с Диспетчера залдач на мою программу она вызывала ошибку и закрывалась


 
Kedge ©   (2007-04-23 10:15) [2]

А как ты определял, что DLL - "лишняя" ?
Пройдись поиском по форуму. Кто-то выкладывал что-то подобное. Игорь Шевченко и, afair Riply, занимались этим вопросом.


 
cj ©   (2007-04-23 10:38) [3]

ну сначала пример не запускал и списал все DLL у своего процесса (имена и пути) и лишня dll была hide.dll, и при ее Free програ вызывала ошибку и закрывалась. я думаую что надо на старте программы определить адрес NtQuerySystemInformation и затем его прописывать а то когда идет освобождение перехватывающей dll адрес этой процедуры не верен и прога ERROR-ит.


 
cj ©   (2007-04-23 10:44) [4]


> Пройдись поиском по форуму. Кто-то выкладывал что-то подобное.
>  Игорь Шевченко и, afair Riply, занимались этим вопросом.
> искал и не нашел только =ненайденные ветки=


 
Kedge ©   (2007-04-23 10:59) [5]

> [4] cj ©   (23.04.07 10:44)
> искал и не нашел только =ненайденные ветки=
Тогда спроси в "Прочее". Здесь у могих есть архивы сарых веток.


 
cj ©   (2007-04-23 11:51) [6]

но все таки, почему ProcessExplorer видит процесс а через Tolhelp32 моя прога - нет


 
SLoW.AlfaMoon.Com   (2007-04-23 11:53) [7]

Например, можно самому написать функцию NtQuerySystemInformation.

{
Системный вызов ZwQuerySystemInformation для Windows XP.
(C) Ms-Rem
}
Function XpZwQuerySystemInfoCall(ASystemInformationClass: dword;
                                ASystemInformation: Pointer;
                                ASystemInformationLength: dword;
                                AReturnLength: pdword): dword; stdcall;
asm
pop ebp
mov eax, $AD ;--- syscall number
call @SystemCall
ret $10
@SystemCall:
mov edx, esp
sysenter
end;

{
 Системный вызов ZwQuerySystemInformation для Windows 2000.
 (C) Ms-Rem
}
Function Win2kZwQuerySystemInfoCall(ASystemInformationClass: dword;
                                   ASystemInformation: Pointer;
                                   ASystemInformationLength: dword;
                                   AReturnLength: pdword): dword; stdcall;
asm
pop ebp
mov eax, $97 ;--- syscall number
lea edx, [esp + $04]
int $2E
ret $10
end;


 
cj ©   (2007-04-23 11:54) [8]

Да , это круто, но как получить ВСЕ процессы?


 
Kedge ©   (2007-04-23 12:10) [9]

> [8] cj ©   (23.04.07 11:54)
>Да , это круто, но как получить ВСЕ процессы?
Тебе  [7] SLoW.AlfaMoon.Com   (23.04.07 11:53) дал код вызова QuerySystemInformation,
который библиотекой "Hide" не перехватывается. Что тебе еще нужно?
Или не можешь получить список процессов при помощи оной функции ?


 
cj ©   (2007-04-23 12:14) [10]

ежели бы не конечно же но,,, да не умею, прошу пожалуйста киньте примерчик


 
cj ©   (2007-04-23 12:39) [11]

ну киньте примерчик пожалуйста, на коленях, склонив голову прошу


 
Kedge ©   (2007-04-23 12:42) [12]

>[10] cj ©   (23.04.07 12:14)
>ежели бы не конечно же но,,, да не умею, прошу пожалуйста киньте примерчик
>ну киньте примерчик пожалуйста, на коленях, склонив голову прошу
Большой по объему примерчик получится :) Там еще структуры определять надо.
Игорь Шевченко выкладывал хорошие примеры работы с NativeAPI.
Вроде(могу ошибаться) назывались: "QuerySystemInformation60". К сожалению, где - не помню. Поищи.
P.S.
Найдешь - скажи. Я бы тоже скачал.


 
Rouse_ ©   (2007-04-23 12:50) [13]

В свое время Игорь Шевченко написал небольшую утилитку - которая вытаскивает такие процессы. Ищи либо в старых ветках этой конференции, либо в архиве.


 
cj ©   (2007-04-24 06:31) [14]

нашел решение: из примера по скрытию вставил вашу проце-дуру и вставил в свою прогу. вот только моя програ работает вместе с ней видит пример и Диспетчер задач


 
Leonid Troyanovsky ©   (2007-04-24 09:12) [15]


> Kedge ©   (23.04.07 12:42) [12]

> Найдешь - скажи. Я бы тоже скачал.

http://www.schevchenko.net.ru/SRC/ QuerySystemInformation _60.zip ?

--
Regards, LVT.


 
SLoW.AlfaMoon.Com   (2007-04-24 09:43) [16]

program process_seeker;

{$APPTYPE CONSOLE}

uses
 SysUtils, windows;

type
 NTStatus = cardinal;
 PVOID    = pointer;
 USHORT = WORD;
 UCHAR = byte;
 PWSTR = PWideChar;

CONST  //Статус константы
 STATUS_SUCCESS              = NTStatus($00000000);
 STATUS_ACCESS_DENIED        = NTStatus($C0000022);
 STATUS_INFO_LENGTH_MISMATCH = NTStatus($C0000004);
 SEVERITY_ERROR              = NTStatus($C0000000);

const SystemProcessesAndThreadsInformation = 5;

 type
PClientID = ^TClientID;
TClientID = packed record
UniqueProcess:cardinal;
UniqueThread:cardinal;
end;

PUnicodeString = ^TUnicodeString;
 TUnicodeString = packed record
   Length: Word;
   MaximumLength: Word;
   Buffer: PWideChar;
end;

PVM_COUNTERS = ^VM_COUNTERS;
VM_COUNTERS = packed record
  PeakVirtualSize,
  VirtualSize,
  PageFaultCount,
  PeakWorkingSetSize,
  WorkingSetSize,
  QuotaPeakPagedPoolUsage,
  QuotaPagedPoolUsage,
  QuotaPeakNonPagedPoolUsage,
  QuotaNonPagedPoolUsage,
  PagefileUsage,
  PeakPagefileUsage: dword;
 end;

PIO_COUNTERS = ^IO_COUNTERS;
IO_COUNTERS = packed record
  ReadOperationCount,
  WriteOperationCount,
  OtherOperationCount,
  ReadTransferCount,
  WriteTransferCount,
  OtherTransferCount: LARGE_INTEGER;
 end;

PSYSTEM_THREADS = ^SYSTEM_THREADS;
SYSTEM_THREADS = packed record
 KernelTime,
 UserTime,
 CreateTime: LARGE_INTEGER;
 WaitTime: dword;
 StartAddress: pointer;
 ClientId: TClientId;
 Priority,
 BasePriority,
 ContextSwitchCount: dword;
 State: dword;
 WaitReason: dword;
end;

PSYSTEM_PROCESSES = ^SYSTEM_PROCESSES;
SYSTEM_PROCESSES = packed record
  NextEntryDelta,
  ThreadCount: dword;
  Reserved1 : array [0..5] of dword;
  CreateTime,
  UserTime,
  KernelTime: LARGE_INTEGER;
  ProcessName: TUnicodeString;
  BasePriority: dword;
  ProcessId,
  InheritedFromProcessId,
  HandleCount: dword;
  Reserved2: array [0..1] of dword;
  VmCounters: VM_COUNTERS;
  IoCounters: IO_COUNTERS; // Windows 2000 only
  Threads: array [0..0] of SYSTEM_THREADS;
 end;

Function ZwQuerySystemInformation(ASystemInformationClass: dword;
                                 ASystemInformation: Pointer;
                                 ASystemInformationLength: dword;
                                 AReturnLength:PCardinal): NTStatus;
                                 stdcall;external "ntdll.dll";
{
Function ZwQuerySystemTime(var CurrentTime: LARGE_INTEGER): NTStatus;
stdcall;external "ntdll.dll";
}

{ Получение буфера с системной информацией }
Function GetInfoTable(ATableType:dword):Pointer;
var
mSize: dword;
mPtr: pointer;
St: NTStatus;
begin
Result := nil;
mSize := $4000; //начальный размер буфера
repeat
  mPtr := VirtualAlloc(nil, mSize, MEM_COMMIT or MEM_RESERVE, PAGE_READWRITE);
  if mPtr = nil then Exit;
  St := ZwQuerySystemInformation(ATableType, mPtr, mSize, nil);
  if St = STATUS_INFO_LENGTH_MISMATCH then
     begin //надо больше памяти
       VirtualFree(mPtr, 0, MEM_RELEASE);
       mSize := mSize * 2;
     end;
until St <> STATUS_INFO_LENGTH_MISMATCH;
if St = STATUS_SUCCESS
  then Result := mPtr
  else VirtualFree(mPtr, 0, MEM_RELEASE);
end;

var info, info2: PSystem_Processes;
   i, j, k: integer;
   t, t1: LARGE_INTEGER;
begin

   //--- получаем список процессов
   info := GetInfoTable(SystemProcessesAndThreadsInformation);
   info2 := info;

   //--- проход по полученному списку
   while (info2^.NextEntryDelta <> 0) do
   begin
     //--- я для простоты просто вывожу Process Id
     writeln(info2^.ProcessId);

     info2 := Pointer(dword(info2)+info2^.NextEntryDelta);
   end;

   VirtualFree(info, 0, MEM_RELEASE);

   
end.


 
Kedge ©   (2007-04-24 14:13) [17]

> [15] Leonid Troyanovsky ©   (24.04.07 09:12)
>http://www.schevchenko.net.ru/SRC/ QuerySystemInformation _60.zip ?
Именно то. Спасибо.


 
cj ©   (2007-04-25 08:32) [18]

все таки я сделал прогу без этих процедур, которая видит все процессы, включая те 4 примера по скрытию, и не использует TLHELP, PSAPI, ZwQuerySystemInformation. но все равно спасибо.


 
SLoW.AlfaMoon.Com   (2007-04-25 09:31) [19]

http://wasm.ru/article.php?article=hiddndt


 
cj ©   (2007-04-25 10:47) [20]

Удалено модератором


 
Cj ©   (2007-04-25 19:08) [21]

Сорри за предидущее. Просто хотел сказать, что методом перебора получал процессы.



Страницы: 1 вся ветка

Текущий архив: 2007.10.28;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.02 c
11-1174920329
ElectriC
2007-03-26 18:45
2007.10.28
после OnMinimize


8-1168554278
Infinityx93
2007-01-12 01:24
2007.10.28
Динамический Tseries в chart


15-1190994505
TwentyTwo
2007-09-28 19:48
2007.10.28
Может ли компьютер быть судьей?


11-1174985923
dca
2007-03-27 12:58
2007.10.28
KOLWebBrowser/ TWebBrowser конфликтует с TThread


9-1162107438
Alexseve
2006-10-29 10:37
2007.10.28
хочу повернуть бочку