با سلام
من تمام سایت و حتی در وبلاگ های دیگه هم گشتم .ولی ندیدم.آیا کسی میدونه چطور میشه یک پروسس رو در برگه ""پروسس"" نه در برگه ""برنامه کاربردی"" task manager مخفی کرد .
ممنون میشم.
Printable View
با سلام
من تمام سایت و حتی در وبلاگ های دیگه هم گشتم .ولی ندیدم.آیا کسی میدونه چطور میشه یک پروسس رو در برگه ""پروسس"" نه در برگه ""برنامه کاربردی"" task manager مخفی کرد .
ممنون میشم.
من یه راهی بلدم که برنامه از TaskBar مخفی می شه ، نمی دونم بدرت می خوره ؟
//To hide the task bar use
ShowWindow(FindWindow
('Shell_TrayWnd',nil), SW_HIDE) ;
در ضمن شیطون با این کد می خواهی چکار کنی ؟؟؟؟؟!!!!!!!!!1
با سلام
ممنون از جوابت.میرم تستش کنم.
اینو برای یک قسمت از برنامه کنترل پرسسهای اجرا شده روی کلاینها در شبکه lan میخوام.
!**************************************
! Name: Stealth
! Description:Hide your porgams in the t
! ask manager, and from process lists.
No one will ever know its there!
! By: Dave Bayliss
!
! Assumes:This control does not work und
! er Windows 2000 as the tasking is differ
! ent, I use it on win 95, 98, ME systems
! and it works great!
!
!This code is copyrighted and has ! limited warranties.Please see http://w
! ww.Planet-Source-Code.com/vb/scripts/Sho
! wCode.asp?txtCodeId=420&lngWId=7 !for details. !**************************************
{Created By David Bayliss http://www.dbayliss.com}
unit Stealth;
interface
uses
WinTypes, WinProcs, Classes, Forms, SysUtils, Controls, Messages;
type
TDuplicateComponent = class(Exception);
TFormNotOwner = class(Exception);
TStealth = class(TComponent)
private
FHideForm: Boolean;
fHideApp: Boolean;
OldWndProc: TFarProc;
NewWndProc: Pointer;
function IsIt: Boolean;
procedure SetIt (Value: Boolean);
procedure SetHideApp(Value: Boolean);
procedure HookParent;
procedure UnhookParent;
procedure HookWndProc(var Message: TMessage);
protected
{ Protected declarations }
procedure HideApplication;
procedure ShowApplication;
public
{ Public declarations }
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
procedure Loaded; override;
procedure ProcessEnabled;
published
{ Published declarations }
property HideForm: Boolean read IsIt write SetIt stored true default true;
property HideApp: Boolean read fHideApp write SetHideApp;
end;
function RegisterServiceProcess(dwProcessID, dwType: Integer): Integer; stdcall; external 'KERNEL32.DLL';
procedure Register;
implementation
destructor TStealth.Destroy;
begin
ShowApplication;
UnhookParent;
inherited destroy;
end;
constructor TStealth.Create(AOwner: TComponent);
var
i: Word;
CompCount: Byte;
begin
inherited Create(AOwner);
fHideform := true;
NewWndProc := nil;
OldWndProc := nil;
CompCount := 0;
if (csDesigning in ComponentState) then
if (AOwner is TForm) then
with (AOwner as TForm) do
begin
for i := 0 to ComponentCount - 1 do
if Components[i] is TStealth then Inc(CompCount);
if CompCount > 1 then raise TDuplicateComponent.Create('There is already a TStealth component on this Form');
end
else
raise TFormNotOwner.Create('The owner of TStealth Component is not a TForm');
HookParent;
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 TStealth.Loaded;
begin
inherited Loaded; { Always call inherited Loaded method }
if not (csDesigning in ComponentState) then
ProcessEnabled;
end;
procedure TStealth.ProcessEnabled;
begin
if not (csDesigning in ComponentState) then
if fHideform then
ShowWindow(FindWindow(nil, @Application.Title[1]), SW_HIDE)
else
ShowWindow(FindWindow(nil, @Application.Title[1]), SW_RESTORE);
end;
function TStealth.IsIt: Boolean;
begin
Result := fHideform;
end;
procedure TStealth.SetIt(Value: Boolean);
begin
fHideform := value;
ProcessEnabled;
end;
procedure TStealth.HookParent;
begin
if owner = nil then exit;
OldWndProc := TFarProc(GetWindowLong((owner as TForm).Handle, GWL_WNDPROC));
NewWndProc := MakeObjectInstance(HookWndProc);
SetWindowLong((owner as TForm).Handle, GWL_WNDPROC, LongInt(NewWndProc));
end;
procedure TStealth.UnhookParent;
begin
if (owner <> NIL) and Assigned(OldWndProc) then
SetWindowLong((owner as TForm).Handle, GWL_WNDPROC, LongInt(OldWndProc));
if Assigned(NewWndProc) then
FreeObjectInstance(NewWndProc);
NewWndProc := NIL;
OldWndProc := NIL;
end;
procedure Register;
begin
RegisterComponents('Dbayliss', [TStealth]);
end;
procedure TStealth.HookWndProc(var Message: TMessage);
begin
if owner = NIL then exit;
if (Message.Msg = WM_SHOWWINDOW) then
if (Message.wParam <> 0) then
ProcessEnabled;
Message.Result := CallWindowProc(OldWndProc, (owner as TForm).Handle, Message.Msg, Message.wParam, Message.lParam);
end;
end.
من کد بالا رو تست کردم جواب نمی ده .
لطفاً اگه کسی کامپوننت داره به صورت فایل ضمیمه کنه .
با تشکر
مخفی شدن فایل از process قبلا بحث شده
و روشهایی ارایه شده است
البت نه خیلی خوب
من که گفتم این تکه برنامه برای مخفی کردن برنامه از نوار وظیفه ویندوز هست ، نه از پروسسها .
بنامه ای که آیکنی در Taskbar نداشته باشه در Process نشون داده نمی شه
این کد را ببین:
procedure TForm1.Button1Click(Sender: TObject);
var
hwndOwner: HWnd;
begin
hwndOwner := GetWindow(Handle, GW_OWNER);
ShowWindow(hwndOwner, SW_HIde);
end;
سلامنقل قول:
نوشته شده توسط dkhatibi
کی گفته؟؟؟
یعنی شما تاحالا Task Manager رو باز نکردی و زبانه Process ها رو ندیدی؟؟
شبیر
با سلام
با تشکر از همراهی شما. من تمام روشها رو تست کردم ولی در winxp جواب نداد
تابع registerserviceprocess در kernel32.dll درwin98 جواب میده ولی این تابع در kernel32.dll winxp وجود ندارد.
با تب Application اشتباه شد
بابا شما که دیگه شاهکارید پس چجوری windows explorer اجرا میشه حتماً صفحه مانیتو هم به صورت پیش فرض این جوریهنقل قول:
[]بنامه ای که آیکنی در Taskbar نداشته باشه در Process نشون داده نمی شه
با تب application اشتباه شد یعنی چه؟؟؟؟؟
برای این کار باید از rootkit استفاده کنید
برید به این سایت
rootkit.com
کد قبلی رو به کار برید خواهید دید که نام برنامه وقتی که آیکن حذف شد در تب Application هم حذف می شه.
ضمنا یک تاپیک با همین مضمون قبلا توسط خودم باز شده بود و مباحثی مطرح شد که هیچ یک جوابگو نبود.
اگر منظور شما این است که برنامه ی شما نتواند توسط کاربر EndTask شود نام اونو Winlogon.Exe یا Lsass بگذارید.
در تاپیک برنامه های کاربردی و مهم یه نمونه هست میتونید دریافت کنید
در ویندوز 98 میشد با ثبت برنامه خودمون به عنوان یکی از سرویسها در ویندوز از لیست برنامه ها حذف کرد ولی این کار در windows NT به بعد تقریبا سخت شده(نمیگم غیر ممکن) چون در این ویندوزها سرویسها هم بعنوان یک پروسس در لیست پروسسها نمایش داده می شوند!
استثنا این قضیه برای ویروسها نیز دیده نشده(ویروسهایی همچون Blaster در لیست پروسسها قابل کشف بودند) مگر اینکه بتونی برنامه خودتو که البته باید از حجم خیلی پایینی برخوردار باشه، به انتهای یک برنامه یا سرویس همیشگی ویندوز متصل کنی! یعنی بتونی کدهای معمولا مخرب را در میان کدهای استاندارد ویندوز قرار بدی!
این تنها و تنها و تنها راه حل حذف پروسس خودت از تو لیست پروسسهای ویندوز میباشد! :بامزه:
البته احتمالا :لبخند: :چشمک:
--------------------
نکته:
ویروس هایی که تا بحال طراحی شده اند و قابل کشف نیستند معمولا از سیستمی که گفتم استفاده کرده اند!
( البته کد اونهایی که تا بحال دیدم )