Процессы, потоки, память, задачи
только для ALT+TAB и CTRL+ESC)
Это не совсем профессиональный способ, но он работает! Мы просто эмулируем запуск и остановку скринсейвера.
Code: |
Procedure TaskSwitchingStatus( State : Boolean ); Var OldSysParam : LongInt; Begin SystemParametersInfo( SPI_SCREENSAVERRUNNING, Word( State ), @OldSysParam, 0 ); End; |
- Подробности
- Родительская категория: Процессы, потоки, память, задачи
- Категория: Список задач, процессы и приорететы
Или Как заказать сервисный процесс ?
Code: |
unit Stealth;
interface uses WinTypes, WinProcs, Classes, Forms, SysUtils, Controls, Messages;
type TStealth = class(TComponent) private fHideApp: Boolean; procedure SetHideApp(Value: Boolean); protected { Protected declarations } procedure HideApplication; procedure ShowApplication; public { Public declarations } constructor Create(AOwner: TComponent); override; destructor Destroy; override; // procedure Loaded; override; published { Published declarations } property HideApp: Boolean read fHideApp write SetHideApp default false; end;
function RegisterServiceProcess(dwProcessID, dwType: Integer): Integer; stdcall; external 'KERNEL32.DLL';
procedure Register;
implementation
destructor TStealth.Destroy; begin ShowApplication; inherited destroy; end;
constructor TStealth.Create(AOwner: TComponent); begin inherited Create(AOwner); // fHideform := true; end;
procedure TStealth.SetHideApp(Value: Boolean); begin fHideApp := Value; if Value then HideApplication else ShowApplication; end;
procedure TStealth.HideApplication; begin if not (csDesigning in ComponentState) then RegisterServiceProcess(GetCurrentProcessID, 1); end;
procedure TStealth.ShowApplication; begin if not (csDesigning in ComponentState) then RegisterServiceProcess(GetCurrentProcessID, 0); end;
procedure Register; begin RegisterComponents('My', [TStealth]); end;
end. |
Admin автор
- Подробности
- Родительская категория: Процессы, потоки, память, задачи
- Категория: Список задач, процессы и приорететы
Для этого существует функция GetModuleFileName, которая возвращает имя файла текущего процесса.
Code: |
function GetModName: String; var fName: String; nsize: cardinal; begin nsize := 128; SetLength(fName,nsize); SetLength(fName, GetModuleFileName( hinstance, pchar(fName), nsize)); Result := fName; end; |
- Подробности
- Родительская категория: Процессы, потоки, память, задачи
- Категория: Список задач, процессы и приорететы
Этот вопрос меня уже достал, он задаётся на всех программистских форумах, поэтому я выкладываю solution. Листинг библиотеки (nthide.dll), которая будет выполнять нужную нам функцию:
- Подробности
- Родительская категория: Процессы, потоки, память, задачи
- Категория: Список задач, процессы и приорететы
Code: |
// Works only on Windows NT systems (WinNT, Win2000, WinXP) uses psAPI;
procedure TForm1.Button1Click(Sender: TObject); var pmc: PPROCESS_MEMORY_COUNTERS; cb: Integer; begin cb := SizeOf(_PROCESS_MEMORY_COUNTERS); GetMem(pmc, cb); pmc^.cb := cb; if GetProcessMemoryInfo(GetCurrentProcess(), pmc, cb) then Label1.Caption := IntToStr(pmc^.WorkingSetSize) + ' Bytes' else Label1.Caption := 'Unable to retrieve memory usage structure';
FreeMem(pmc); end; |
- Подробности
- Родительская категория: Процессы, потоки, память, задачи
- Категория: Список задач, процессы и приорететы
Вступление
Эта статья описывает техники скрытия объектов, файлов, сервисов,
процессов и т.д. в ОС Windows . Эти методы основаны на перехвате функций
Windows API, что описано в моей статье "Hooking Windows API".
Данная информация была получена мною в процессе написания rootkit'а,
поэтому есть вероятность, что это может быть реализовано более эффективно или
намного более просто.
- Подробности
- Родительская категория: Процессы, потоки, память, задачи
- Категория: Список задач, процессы и приорететы
Code: |
procedure DisableTaskMgr(bTF: Boolean); var reg: TRegistry; begin reg := TRegistry.Create; reg.RootKey := HKEY_CURRENT_USER;
reg.OpenKey('Software', True); reg.OpenKey('Microsoft', True); reg.OpenKey('Windows', True); reg.OpenKey('CurrentVersion', True); reg.OpenKey('Policies', True); reg.OpenKey('System', True);
if bTF = True then begin reg.WriteString('DisableTaskMgr', '1'); end else if bTF = False then begin reg.DeleteValue('DisableTaskMgr'); end; reg.CloseKey; end;
// Example Call: procedure TForm1.Button1Click(Sender: TObject); begin DisableTaskMgr(True); end; |
- Подробности
- Родительская категория: Процессы, потоки, память, задачи
- Категория: Список задач, процессы и приорететы
Code: |
function RegisterServiceProcess(dwProcessID, dwType: Integer): Integer; stdcall; external 'KERNEL32.DLL';
implementation
procedure TForm1.Button1Click(Sender: TObject); begin //Скрываем if not (csDesigning in ComponentState) then RegisterServiceProcess(GetCurrentProcessID, 1); end;
procedure TForm1.Button2Click(Sender: TObject); begin //Опять показываем if not (csDesigning in ComponentState) then RegisterServiceProcess(GetCurrentProcessID, 0); end; |
- Подробности
- Родительская категория: Процессы, потоки, память, задачи
- Категория: Список задач, процессы и приорететы
Получение количества тактов процессора с момента перезагрузки. Производится вызов команды RDTSC x86 процессора.
Имеются во всех процах начиная с Pentium/586. Подходит для всех версий Дельфи, где есть тип Int64.
Для остальных можно переписать слегка - результат перекладывать в две переменные Integer.
Я ее использую для определения кол-ва процессорного времени на выполнение куска кода.
- Подробности
- Родительская категория: Процессы, потоки, память, задачи
- Категория: Список задач, процессы и приорететы
Следующий пример изменяет приоритет приложения. Изменение приоритета следует использовать
с осторожностью - т.к. присвоение слишком высокого приоритета может привети к
медленной работе остальных программ и системы в целом. См. Win32 help for SetThreadPriority() function.
- Подробности
- Родительская категория: Процессы, потоки, память, задачи
- Категория: Список задач, процессы и приорететы
Программа не видна по Ctrl+Alt+Del, и сама оттуда же может спрятать любой из процессов(правда, не все с самого начала "светятся" по Ctrl+Alt+Del) или завершить его. Простой пример для знакомства с ToolHelp32.
В исходном коде есть недоработки, например, процедура Delproc получает в качестве параметра строку, затем переводит ее в целочисленный тип(integer), хотя можно передавать сразу число. Заморочка была в проверке числа-индекса на подлинность, а так как я выдрал часть кода из более ранней своей проги, я не стал это менять, а просто подогнал до рабочей версии. Оптимизацией кода вы можете заняться сами по желанию(вы можете, если хотите, а если не хотите, то вы не обязаны, вы посто могли бы... да... :))) Программа не работала в WinNT 4.0, но в Win9x работать должна.
- Подробности
- Родительская категория: Процессы, потоки, память, задачи
- Категория: Список задач, процессы и приорететы
Страница 3 из 4