Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2007.10.28;
Скачать: [xml.tar.bz2];

Вниз

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

 
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 вся ветка

Форум: "WinAPI";
Текущий архив: 2007.10.28;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.51 MB
Время: 0.042 c
2-1191499151
два_программера
2007-10-04 15:59
2007.10.28
paradox, adoconnection,adoquery


15-1190894467
hochu
2007-09-27 16:01
2007.10.28
Нужна помощь срочно!!!


15-1191409720
PPop
2007-10-03 15:08
2007.10.28
Ну как указать этот Main-Class в файле manifest.mf?


15-1190704588
Некто
2007-09-25 11:16
2007.10.28
Сообщение: "Автономные файлы - Автономная работа"


2-1191498875
xayam
2007-10-04 15:54
2007.10.28
Почему DISTINCT не работает?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский