چطوری می شه برنامه ای در Process خای ویندوز نمایش داده نشه؟
چطوری می شه برنامه ای در Process خای ویندوز نمایش داده نشه؟
در رویداد TForm1.FormCreate فرمت این کد رو استفاده کن
(SetWindowLong(Application.Handle,GWL_EXSTYLE,WS_E X_TOOLWINDOW
این دستور برنامه رو از TaskBar مخفی می کنه نه از TaskManagerنوشته شده توسط AlirezaBahredar
آخرین ویرایش به وسیله interrupt21 : جمعه 01 اردیبهشت 1385 در 10:48 صبح
بعد از اضافه کردن اون کد توی رویداد TForm1.FormClose این کد رو اضافه کن
Action:=ncNone;
Form1.hide;
یه راه اینکه از پروسس اینجکشن استفاده کنید
آخرین ویرایش به وسیله Arash_j13 : یک شنبه 03 اردیبهشت 1385 در 04:55 صبح
اگر به system32 دسترسی داری فایل task.exe ( البته فکر کنم فایلش همینه )را برای نوشتن باز کن دیگه ctrl+alt+del کار نمی کنه
یا سرویس درست کن که دیده نشه و حق دسترسی رو مخفی کن
یه راه اینکه از سروسس اینجکشن استفاده کنید
اگر به system32 دسترسی داری فایل task.exe ( البته فکر کنم فایلش همینه )را برای نوشتن باز کن دیگه ctrl+alt+del کار نمی کنه
یا سرویس درست کن که دیده نشه و حق دسترسی رو مخفی کن
لطفا بیشتر توضیح دهید.
چی شد هیچ کی راهی بلد نیست یا نمی خواهد بگه
در روش پروسس اینجکشن شما باید کد ها برنامتون رو به یه پروسه دیگه در حال اجرا تزریق کنید و به کمک اون پروسه کد ها رو اجرا کنید یه نمونه از پروسس اینجکش رو می تونید اینجا ببینید
http://www.salarsoft.somee.com/magal..._injection.htm
در ویندوز اکس پی حتی سرویسها هم تو لیست پروسسها نمایش داده میشه! پس مسلما نمیتونی با اعلام اینکه برنامت یک سرویس، خودت رو از لیست حذف کنی (;
تنها یک روش میمونه که همون اینجکشنه و البته یک روش ساده و در عین حال جالب! و اون اسفاده از مهندسی اجتماعی!!!
یعنی در یک کلام!!! سعی کن پروسست رو یک پروسس بیخطر و حتی لازم برای سیستم به کاربر معرفی کنی!!! یعنی یه جورایی خودت رو شبیه یک پروسس سیستمی کنی!!! این کار رو میتونی با حذف یک پروسس معمول سیستم که البته نباید برای سیستم ضروری باشه و شبیه کردن خودت - حتی با یک تغییر نام ساده - به اون پروسس، به کارت در سیستم مشغول بشی!!!
ctfmon.exe رو بعنوان مثال میتونی ازش کمک بگیری!!!
با سلام
دوست عزیز در حالت کلی اون طوری که من قبلا ها جستجو کرده بودم نمی شه
شایدم بشه و من نتونستم پیدا کنم
ولی
دوست عزیز چند راه برای این کار هستش
یکی اینکه تسک منجر را کلا ببندی که برای برنامه های گارد کننده خیلی خوبه .
راه دیگه اینکه فایلت رو با یک اسمس که شبیه به اسم ها فایل های سیستمی باشه با یک آیکون سیستمی وارد پوشه سیستم 32 کن بعدش اسم تایتل برنامت رو هم متفاوت با نام فایل اجرایی کن که تو داخل پوشه سیستم 32 هستش .بعد بگو اجرا بشه.
حالت سوم که به نظر من بهترین هستش و من خودم هم در یک برنامه ای که به سفارش برای ساختن صفحه ی گارد استفاده کرده بودم ایه که از هر دو روش بالا برای امنیت استفاده کنی.
با تشکر
می شه یک مثال اجرایی ارائه دهید.
من یه تئوری ساده و فکر کنم عملی دارم :
1.برنامه شما با یک Theard و یا یک Timer چک کنه و وقتی پنجره Task Manager باز شد.
سعی کنه که ListBox مربوط به Proccess ها رو پیدا کنه که تمام این کارها با API
FindWindow به راحتی قابل اجراست.
2.شما اسم برنامه خودت رو توی اون لیست پیدا و اون رو حذف کن تمام این کارها هم به راحتی
و با استفاده از API ساده SendMessage انجام میشه.
موفق باشید.
یا حق.
خوب دوست عزیز
می توانید یک سورس بگذارید
کلا من با Messages به خوبی آشنا نیستم.
سعی میکنم.
اما اگر قبلا با Visual C کسی کار کرده باشه اینجور کارها رو خوب درک میکنه.
شما هم میتونید توی MSDN و یا Help دلفی بخصوص D9 و D10 مطالب کاملی گیر میارید.
منم سعی میکنم یک سورس واستون بنویسم و بزارم اینجا.
ممنون می شم
منتظرم
این سورس رو توی یک Thread و یا یک Timer که البته Thread بهتر بگذارید.
و ثابت APPNAME رو برابر با نام فایل exe کنید.
unit HiddenTskMgrX;
interface
procedure RemoveFromTskMgr();
implementation
uses
Windows,
CommCtrl;
const
APPNAME = 'HiddenTskMgr.exe';
procedure RemoveFromTskMgr();
var
hTskMgr,
hDlgProc,
hLstProc : HWND;
hProc: THandle;
dwProcID: DWORD;
LvFindInfo : TLVFindInfo;
pLvFindInfo : ^TLVFindInfo;
iItem: Integer;
sz: array [0 .. 512] of char;
rd: Cardinal;
begin
hTskMgr := FindWindow(WC_DIALOG, 'Windows Task Manager');
if (hTskMgr <> 0) then begin
hDlgProc := FindWindowEx(hTskMgr, 0, WC_DIALOG, '');
if (hDlgProc <> 0) then begin
hLstProc := FindWindowEx(hDlgProc, 0, WC_LISTVIEW, 'Processes');
if (hLstProc <> 0) then begin
GetWindowThreadProcessId(hLstProc, dwProcID);
hProc := OpenProcess(PROCESS_VM_OPERATION or
PROCESS_VM_READ or
PROCESS_VM_WRITE or
PROCESS_QUERY_INFORMATION, False, dwProcID);
pLvFindInfo := VirtualAllocEx(hProc, nil, sizeof(TLVFindInfo) , MEM_COMMIT, PAGE_READWRITE);
try
LvFindInfo.psz := VirtualAllocEx(hProc, nil, 512 , MEM_COMMIT, PAGE_READWRITE);
try
LvFindInfo.flags:= LVFI_STRING;
sz := APPNAME;
WriteProcessMemory(hProc, LvFindInfo.psz, @sz , 512 , rd);
WriteProcessMemory(hProc, pLvFindInfo , @LvFindInfo , sizeof(TLVFindInfo) , rd);
iItem := SendMessage(hLstProc, LVM_FINDITEM, WPARAM(-1), LPARAM(pLvFindInfo));
finally
VirtualFreeEx(hProc, LvFindInfo.psz, 0, MEM_RELEASE);
end;
finally
VirtualFreeEx(hProc, pLvFindInfo, 0, MEM_RELEASE);
end;
if (iItem > -1) then begin
ListView_DeleteItem(hLstProc, iItem);
end;
end;
end;
end;
end;
end.
موفق باشید.
یا حق.
این یونیت وجود خارجی دارد؟HiddenTskMgrX
نه خودم نوشتم.
تست کردم جواب میده.
خوب من کجا اونو به دست بیارم؟
خوب از همینجا کپی کن ببر توی یه فایل pas ذخیره کن. همین بعد ازش استفاده کن.
اگر خواستی برنامه کامل رو واستون بزارم.
موفق باشی.
یا حق.
متشکر می شم
من از اون کپی گرفتم و انجامش دادم اما با یک پیام خطا در نشناختن متغیر مواجه می شم.
اگه سورس کامل بگذارید خیلی بهتره
چه متغیری ؟
میش پیغام رو بگید !
اینم یه برنامه کامل که با Thread کار میکنه در ضمن کاری کردم که خودش اسم فایل exe رو
پیدا میکنه و از Task Manager حذفش میکنه.
موفق باشید.
یا حق.
خیلی خوب بود
اما به نظر می رسه برنامه مرتب این نام را حذف می کنه
یعنی فایل بلافاصله بعد از حذف اضافه شده و دوباره برنامه اونو حذف می کنه
درسته؟
ضمنا من متوجه نشدم کجا از Thread استفاده کردید؟
درسته.
توی OnCreate فرم Class
Thread رو Create و راهاندازی میشه. و اونم دائم داره کار خودش رو انجام میده.
البته دوست من شما میتونید این برنامه رو Optimize تر هم کنید.
من وقت ندارم و گرنه بیشتر روش کار میکردم.
موفق باشی.
یا حق.
منظور از Optimize؟
Optmize یعنی بهینه کردن کد برای سرعت و یا Size برنامه.
یعنی شما کاری کنید که برنامه بهتر و سریعتر عمل بکنه.
موفق باشید.
یا حق.
آیا می شه کاری کرد که کاربر متوجه حذف و آشکار شدن Procee نشه؟
شاید باید کمی روش کار کرد.
البته راه دگیه هم نوشتن یک TaskManager و که شبیه Taskmanager ویندوز باشه ولی برنامه شما
رو نمایش نده.
می تونی یه کاره دیگه هم بکنی از listbox injectionاستفاده کن برایtaskmgrکه تو قسمت نکات برنامه نویسی در دلفی هست شاید به دردت بخوره
اما این روش قبلی شما آقای کشاورز پدر Cpu را در می آورد
Cpu Usage همیشه روی 100 وا میسته
دوستان عزیز یک مثال گذاشتم :
یادم رفت بگم بعد از اجرا کردن برنامه notepad اجرا میشه و این برنامه خودشو تو حافظه
به اون میچسبونه البته بعد از اجرا میتونید فایل اجرایی را پاک کنید و یا TaskList را هم نگاه کنید
خبری از Project1.exe نیست !!! ولی برنامه در حال اجراست !!!
ایا این کار با هر برنامه ی دلخواهی می شه کرد؟
اگه نخواسته باشیم یک فایل اجرایی دیگه اجرا بشه چه جور؟
برای هر پروسسی میتوانید اینکار را انجام بدهید حتی میتوانید به Kernel32 در حافظه نیز
پروسس خود را لینک کنید.
در واقع ویروسهای مقیم در حافظه تحت ویندوز هم همین کار را انجام میدهند
شما حتی میتوانید یکی از توابع موجود در سیستم را نیز Inject کرده و تابع خودتان را قرار دهید
آدرس تابع قبلی را نگه داشته تا در صورت لزوم شما آنرا صدا بزنید.
اگر این کار را انجام دهیم آیا هر بار باید عمل Inject انجام شود.
من دنبال راهی هستم که برنامه لازم نباشد هر بار اجرا گردد
در این صورت شما میبایست مثل ویروسها عمل کنید یعنی بخشی از کد خود را به یکی از
فایلهای اجرایی بچسبانید مثلا فایلهای ویندوز تا با اجرا شدن آنها کد شما هم اجرا شود
در یکی از تاپیکها طریقه اضافه کردن کدی به فایل اجرایی داده شده.
می شه آدرس بدبد؟