Форум: "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