View Full Version : بستن پروسه های سیستمی
شبیر کریمی
چهارشنبه 25 آذر 1388, 19:00 عصر
سلام
چطور میشه یک پروسه ی سیستمی مانند winlogon.exe یا svchost.exe رو ببندیم؟
Nima NT
چهارشنبه 25 آذر 1388, 19:02 عصر
اینها رو فکر نکنم بشه بست ، چون سیستم بعد از بسته شدن اونها Crash میکنه.
شبیر کریمی
چهارشنبه 25 آذر 1388, 19:14 عصر
ولی خیلی از برنا مه های process manager این کارو انجام میدن
میخوام بدونم چطور در دلفی میشه اینکارو کرد؟
Nima NT
چهارشنبه 25 آذر 1388, 19:57 عصر
میتونید از کد زیر استفاده کنید.
procedure KillProcess(PID: Cardinal);
var
exitcode:UINT;
x:THandle;
begin
x:=Openprocess(PROCESS_ALL_ACCESS,false,PID);
GetExitCodeProcess(x,ExitCode);
TerminateProcess(x,Exitcode);
end;
lord_viper
چهارشنبه 25 آذر 1388, 21:52 عصر
برای بستن پروسه های سیستمی باید دسترسیتونو privilage بالا ببرین
دسترسی debuge privilage
function DebugPrivilege(ToEnable:Boolean):Boolean;
var
OldTokenPrivileges, TokenPrivileges: TTokenPrivileges;
ReturnLength: DWORD;
hToken: THandle;
Luid: Int64;
begin
Result:=True;
Result:=False; hToken:=0;
if not OpenProcessToken(GetCurrentProcess,TOKEN_ADJUST_PR IVILEGES,hToken) then Exit;
try
if not LookupPrivilegeValue(nil,'SeDebugPrivilege',Luid) then Exit;
TokenPrivileges.Privileges[0].luid:=Luid;
TokenPrivileges.PrivilegeCount:=1;
TokenPrivileges.Privileges[0].Attributes:=0;
AdjustTokenPrivileges(hToken,False,TokenPrivileges ,SizeOf(TTokenPrivileges),OldTokenPrivileges,Retur nLength);
OldTokenPrivileges.Privileges[0].luid:=Luid;
OldTokenPrivileges.PrivilegeCount:=1;
if ToEnable then OldTokenPrivileges.Privileges[0].Attributes:=TokenPrivileges.Privileges[0].Attributes or SE_PRIVILEGE_ENABLED
else OldTokenPrivileges.Privileges[0].Attributes:=TokenPrivileges.Privileges[0].Attributes and (not SE_PRIVILEGE_ENABLED);
Result:=AdjustTokenPrivileges(hToken,False,OldToke nPrivileges,ReturnLength,PTokenPrivileges(nil)^,Re turnLength);
finally
CloseHandle(hToken);
end;
end;
vcldeveloper
چهارشنبه 25 آذر 1388, 23:04 عصر
چطور میشه یک پروسه ی سیستمی مانند winlogon.exe یا svchost.exe رو ببندیم؟
بستگی داره منظور از سیستمی چی باشه، اگر منظور پروسس هایی هست که از طریق حساب System اجرا میشند، با داشتن مجوزهای مناسب میشه آنها را بست.
اگر منظور بستن پروسس های بخصوصی هست، باید دید آن پروسس سیستمی چه نقشی در سیستم داره، مثلا پروسسی مثلIsass.exe اگر بسته بشه، ویندوز بطور خودکار Shutdown میکنه تا امکان سوء استفاده های امنیتی فراهم نشه.
برای کار با پروسس ها، و یا بستن آنها می تونید از TProcessInfo (http://vcldeveloper.com/tag/tprocessinfo/) استفاده کنید. در صورتی که کاربر اجرا کننده کد دسترسی Admin داشته باشه، TProcessInfo (http://vcldeveloper.com/tag/tprocessinfo/) خودش مجوز Debug رو اخذ میکنه.
drstrike
پنج شنبه 23 اردیبهشت 1389, 12:33 عصر
اقای کشاورز....
من از کامپوننت شما واسه بستن پروسه های سیستمی استفاده کردم ولی به مشکل برخوردم!
مثال: واسه بستن پروسه ekrn.exe که سیستمی هست و مربوط به نود32، از کامپوننت شما استفاده کردم و به گفته خودتون از کد زیر:
Process := ProcessInfo1.RunningProcesses.FindByName('ekrn.exe ');
if Assigned(Process) then
Process.TerminateProcess;
متاسفانه کار نکرد و پروسه بسته نشد!!
ممنون میشم راهنمایی کنید
مهران رسا
پنج شنبه 23 اردیبهشت 1389, 12:53 عصر
البته تاپیک یه خورده قدیمی هست.
اگر منظور بستن پروسس های بخصوصی هست، باید دید آن پروسس سیستمی چه نقشی در سیستم داره، مثلا پروسسی مثلlsass.exe اگر بسته بشه، ویندوز بطور خودکار Shutdown میکنه تا امکان سوء استفاده های امنیتی فراهم نشه.من فکر میکنم با بستن چنین پروسه هایی ویندوز ناچاراً خاموش میشه . یعنی اختیاری در کار نیست .
Felony
پنج شنبه 23 اردیبهشت 1389, 14:37 عصر
من به وسیله کد زیر تست کردم و درست کار میکنه :
ProcessInfo1.RunningProcesses.FindByName('Test.exe ').TerminateProcess;
در ضمن اگر از نسخه قبلی ProcessInfo استفاده میکنید باید قبل از هرکاری متد UpdateList رو فراخوانی کنید تا لیست پروسه های کامپوننت به روز رسانی بشه .
شبیر کریمی
پنج شنبه 23 اردیبهشت 1389, 16:41 عصر
پروسه ای که میخواهید ببندید متعلق به nod 32 هست و از اون حفاظت میشه و به همین راحتی قابل بستن نیست.
drstrike
پنج شنبه 23 اردیبهشت 1389, 17:23 عصر
من به وسیله کد زیر تست کردم و درست کار میکنه
این کد واسه رو واسه پروسه ekrn.exe هم تست کردید؟
در ضمن اگر از نسخه قبلی ProcessInfo استفاده میکنید باید قبل از هرکاری متد UpdateList رو فراخوانی کنید
نسخه 2.1 (اگه اشتباه نکنم) که اخرین نسخه اش بود دانلود کردم که نیاز به این کار نیست. اون کدی هم که گذاشتم خود اقای کشاورز تو سایتش پست داده بود (How To Use ...)
پروسه ای که میخواهید ببندید متعلق به nod 32 هست و از اون حفاظت میشه و به همین راحتی قابل بستن نیست.
چون به همین راحتی بسته نشد مجبور شدم ریپلای بزنم:لبخند: . توی یکی از پست ها دیدم که اقای کشاورز گفته اگه دسترسی ادمین داشته باشی، این کامپوننت دسترسی Debug Privilege رو میده که میشه باهاش پروسه های سیستمی رو بست.
اگه ممکنه این کد رو واسه بستن پروسه ekrn.exe تست کنید، بعد جواب بدید.
ممنون
Felony
پنج شنبه 23 اردیبهشت 1389, 18:37 عصر
در ویندوز 7 و نسخه جدید Nod32 پروسه ای با نام ekrn وجود نداره بلکه آنتی ویروس به عنوان یک سرویس اجرا میشه و یک سرویس با نام ekrn وجود داره .
vcldeveloper
پنج شنبه 23 اردیبهشت 1389, 18:47 عصر
توی یکی از پست ها دیدم که اقای کشاورز گفته اگه دسترسی ادمین داشته باشی، این کامپوننت دسترسی Debug Privilege رو میده که میشه باهاش پروسه های سیستمی رو بست.
اون در شرایط عادی هست. یک آنتی ویروس مثل NOD32 ممکنه برای حفاظت از Process خودش راهکارهای مختلفی رو به کار بگیره، مثلا تمامی توابع مرتبط با بستن Processها را در سطح کرنل هوک کنه، تا بستن همه Processها در کنترلش باشند، و اگر برنامه ایی خواست Process مربوط به آنتی ویروس را ببنده، درخواستش را لغو کنه.
اگر NOD32 همچین کاری کرده باشه، شما نمی تونید با کدهایی مثل ProcessInfo آن را ببندید. باید اول ببینید به چه شیوه ایی از خودش حفاظت میکنه. اگر همین هوک کردن توابع در سطح کرنل باشه، اون وقت باید شما همون توابع یا توابع پایین تر از آن را در سطح کرنل هوک کنید که در اون صورت از حوزه بحث برنامه نویسی دلفی خارج میشه.
amirtaji
دوشنبه 16 خرداد 1390, 00:42 صبح
اقا بحث تازه داشت جالب ميشد
من شديدا به جواب اين مبحث نياز دارم
كار وب سايت ما ايجاد نرم افزار هاي جانبي براي انتي ويروس هاست
الان مشكل كه نه سد بزرگي كه روبرومون شده همين سرويس هاي انتي ويروس هاست كه نميزاره كاري روشون انجام بدي
اگر بتونيد راهنماييمون كنميد چطور و با چه كدي ميشه بستشون حتي اگر شده در مورد نود32 يك كد مثال بياريد خيلي خيلي ممنون ميشم
و ما ميتونيم برنامه هاي رايگان بسيار زيادي براي انتي ويروس ها بنويسيم
من منتظر جوابتون هستم
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.