PDA

View Full Version : جلوگیری از پایان برنامه در process



good_boy
دوشنبه 09 دی 1387, 05:15 صبح
من یه برنامه برای سیستمم دارم می نویسم ونباید از طریق برنامه یا ویروسی End process بشه
می خواستم بدونم کدی هست که جلوی End Process شدن برنامه را بگیرد
من می تونم برنامه رو از process مخفی کنم ولی بازم راهی هست که End process بشه
کسی از دوستان می تونه کمکم کنه؟؟؟!
بعضی از برنامه ها را دیدم که اگر بخوای end process کنی
یک Error می ده با این عبارت :
Access is denied
کسی می دونه دلیلش چیه؟!

3dboy1
دوشنبه 09 دی 1387, 05:59 صبح
با سلام
اين اعمال رو ميتوني با تغيير در رجيستري انجام بدي
به اين مسير برو تا متوجه بشي :
Control Panel/Administrative Tools/Component Services

در اونجا services(local) زو انتخاب كن

ليست برنامه هايي كه ويندوز اين امكانات رو براشون ميزاره ميبيني و قابل تغيير هستند

براي بدست آوردن كد در رجيستري هم
يكي از اين ليست رو تغيير بده بعد در رجيستري دنبالش بگرد

اما با اين كار باز هم ميشود كه برنامه ها رو قطع كرد

به نظر من بهتره كه يك برنامه ديگه كنار برنامت بزاري و چك كنه هر زمان كه برنامت نبود دوباره اون رو اجرا كنه

موفق باشي

ابوذر محمودی
دوشنبه 09 دی 1387, 09:05 صبح
نباید از طریق برنامه یا ویروسی End process بشه
می خواستم بدونم کدی هست که جلوی End Process شدن برنامه را بگیرد

من می تونم برنامه رو از process مخفی کنم ولی بازم راهی هست که End process بشه
بعضی از برنامه ها را دیدم که اگر بخوای end process کنی
یک Error می ده با این عبارت :
Access is denied



سلام.
این که شما می گید بستگی به این داره که شما از چه نرم افزاری برای بستن برنامه استفاده می کنید. اگه از برنامه task manager ویندوز استفاده می کنید همون مخفی کردن از لیست Processes کافیه در غیر اینصوت اگه از برنامه های Process Manager استفاده می کنید باید بگم این کار عملی نیست ، با این برنامه ها هر پروسه ای رو می تونید ببندید.
حتی برنامه های rootkit هم شناسایی می شن.
در کل نمی شه جلوی بستن برنامه ای رو بگیرید ولی می تونید بستن اون رو مشکل تر کنید.
در مورد پیغام هم اگه حرفه ای باشید شاید تو وی بی هم بتونید از hook برای اینکار استفاده کنید.


به نظر من بهتره كه يك برنامه ديگه كنار برنامت بزاري و چك كنه هر زمان كه برنامت نبود دوباره اون رو اجرا كنه
این کار بهتر ، البته شما باید تو این برنامه ها هم مسایل امنیتی بالا رو لحاظ کنید تا کاربر نتونه به این سادگی برنامه رو ببنده و اگه احیانا برنامه بسته شد ، برنامه جایگزین کار خودش رو انجام بده .
اگه خواستید این کار رو انجام بدین یادتون باشه که همیشه هر دو برنامه باید در حال اجرا باشن.
یه چیز دیگه هم هست اینه که من تا حالا Process Manager ی رو ندیدم که دو برنامه رو با هم یکجا ببنده پس می تونید فعلا از این نقص استفاده کنید.
بهتره برنامتون هم نام نباشه که خیلی زود بسته می شن (خودت امتحان کن می بینی)

.:KeihanCPU:.
دوشنبه 09 دی 1387, 15:56 عصر
یه چیز دیگه هم هست اینه که من تا حالا Process Manager ی رو ندیدم که دو برنامه رو با هم یکجا ببنده پس می تونید فعلا از این نقص استفاده کنید.


شما خودت با یه حلقه 10 تا پروسه رو با هم ببند.من خودم واسه از بین بردن ویروسها از این راه استفاده میکنم.
اگه بخوای برنامت بسته نشه یکی اینه که برنامت دسترسی سطح هسته داشته باشه.
دوم اینه که سرویس اجرا بشه.

اگر واسه برنامت هم پروسه محافظ بذاری باز راه واسه بسته شدن داره.

REZADG
دوشنبه 09 دی 1387, 22:24 عصر
دوستان برای این که منهرف نشید برنامه دپفرض (Deep Freeze)رو پیدا کنید و نصب کنید تا حرف دوستمون رو بهتر متوجه بشین در ضمن این برنامه خودشه بصورت سیستمی نشون میده که من نتونستم

good_boy
سه شنبه 10 دی 1387, 05:21 صبح
.:: بسیار متشکرم که به سوال من رسیدگی کردین ::.
3dboy1 (http://barnamenevis.org/forum/member.php?u=77178)

به نظر من بهتره كه يك برنامه ديگه كنار برنامت بزاري و چك كنه هر زمان كه برنامت نبود دوباره اون رو اجرا كنه
این روش رو امتحان کردم ولی به دلیل این که از دستورات api در رابطه با process استفاده می شه برنامه سرعتش کند میشه و نمی تونه در تایمر به خوبی عمل کنه
virus30ya30 (http://barnamenevis.org/forum/member.php?u=60357)

در کل نمی شه جلوی بستن برنامه ای رو بگیرید ولی می تونید بستن اون رو مشکل تر کنید.
در مورد پیغام هم اگه حرفه ای باشید شاید تو وی بی هم بتونید از hook برای اینکار استفاده کنید.

از hook چطور می تونم استفاده کنم یک مثال دارید
.:KeihanCPU:. (http://barnamenevis.org/forum/member.php?u=61344)

شما خودت با یه حلقه 10 تا پروسه رو با هم ببند.من خودم واسه از بین بردن ویروسها از این راه استفاده میکنم.
میشه بگید چطوری این کارو می کنید با استفاده از نرم افزار یا از راه دستی بیشتر توضیح بدین
در ظمن برنامه باید به زبان اسمبلی باشه تا دسترسی هسته بهش داد
REZADG (http://barnamenevis.org/forum/member.php?u=59128)

دوستان برای این که منهرف نشید برنامه دپفرض (Deep Freeze)رو پیدا کنید و نصب کنید تا حرف دوستمون رو بهتر متوجه بشین در ضمن این برنامه خودشه بصورت سیستمی نشون میده که من نتونستم
آره منظورم همین برنامه و امثال اینه
این برنامه رو فکر نکنم با Process manager یا حتی قویتر از این هم بشه بست
ولی در حالتی که نیمه غیر فعال این برنامه رو بستم ولی نه به صورت کامل

مهران رسا
سه شنبه 10 دی 1387, 19:28 عصر
اگه بخوای برنامت بسته نشه یکی اینه که برنامت دسترسی سطح هسته داشته باشه.


لطفاً توضیح بدید . چطور می تونیم برای پروسه ها دسترسی در سطح هسته تعریف کنیم ؟

aminbrleevb
سه شنبه 10 دی 1387, 20:21 عصر
یه راه خیلی آسونش اینه که اسم برنامه ایت رو services.exe بزارین این اسم به وسیله سیستم عامل حفاظت میشه و توسط تسک منیجر (بعضی از برنامه ها میتونن ببندنش) بسته نمیشه

این چیزی که گفتم باعث میشه که فرمتون end proccess نشه ولی شما باید خاصیت unload فورمتون هم به صورت زیر قرار بدین تا دیگه اصلا بسته نشه


Private Sub Form_Unload(Cancel As Integer)
Cancel = 1
End Sub

موفق باشید

.:KeihanCPU:.
پنج شنبه 12 دی 1387, 00:13 صبح
ابتدا بهتره با مفهوم Operating system kernel اشنا شويد . kernel را بعنوان هسته مركزي سيستم عامل تصور كنين . بخشي از سيستم عامل كه اجزاي ديگر را گرد اوري نموده و مجموعه اي از ويژگيها را توليد مي كند . هر برنامه نويس براي دسترسي به هسته سيستم عامل بايد از يك رابط خاص استفاده نمايد .بسياري از برنامه نويسان اين رابط را API يا Application programming interface مي نامند .
هنگامي كه برنامه نويس يك برنامه كاربردي براي ويندوز تهيه مي كند در واقع Api را فراخاني مي كند فراخواني َApiيعني درخواست از سيستم عامل براي اجراي يك وظيفه . كد Api در فايل هاي سيستم ظاهر خواهد شد . البته اين نمايي ساده از Api است .ويندوز XP در واقع از دو Api ويندوز استفاده مي كند . يك Api 16 بيتي و يك Api 32 بيتي . هر Api به حالت User mode برنامه هاي كاربردي اجازه مي دهد تا درخواست هايي را از سيستم عامل داشته باشد كه اين درخواستها در حالت Kernel mode جرا مي شوند .
تفاوتي ندارد كه برنامه هاي كاربرد ي تحت ويندوز شما از كدام Api استفاده مي كنند بهرحال انها از سه مولفه اصلي و هسته اي سيستم عامل استفاده مي كنند . نسخه هاي 16 بيتي اين فايل ها عبارتند از Krnl386.exe . user.exe . Gdi.exe .

نسخه هاي 32 بيتي اين فايل ها عبارتند از Gdi32.dll .User.dll . kernel32.dll ..برنامه نويسان اين مجموعه فايل هارا Win 32 Api مي نامند
البته برنامه نويسان از انواع Api براي انجام ساير وظايف استفاده مي كنند . اغلب اوقات فراخاني يك Api زماني رخ مي دهد كه يك برنامه كاربردي در حال اجراي در حالت User mode از يك مولفه سيستم عامل ( كه در حالت kernel اجرا مي شود ) در خواست اجراي وظيفه اي را داشته باشد



لطفاً توضیح بدید . چطور می تونیم برای پروسه ها دسترسی در سطح هسته تعریف کنیم ؟


من هم اطلاعات زیادی از نحوه کار ندارم.یکم مشکله و وقت گیر.
در گوگل جستجو کنید .شاید به نتیجه برسید

مهران رسا
جمعه 13 دی 1387, 17:13 عصر
یه راه خیلی آسونش اینه که اسم برنامه ایت رو services.exe بزارین این اسم به وسیله سیستم عامل حفاظت میشه و توسط تسک منیجر (بعضی از برنامه ها میتونن ببندنش) بسته نمیشه

این چیزی که گفتم باعث میشه که فرمتون end proccess نشه ولی شما باید خاصیت unload فورمتون هم به صورت زیر قرار بدین تا دیگه اصلا بسته نشه


Private Sub Form_Unload(Cancel As Integer)
Cancel = 1
End Sub
موفق باشید

این هم یک روش برای بستن پروسه هایی با نام های سیستمی :



Shell "Tskill Services"
Shell "Tskill Smss"
Shell "Tskill Lsass"

xxxxx_xxxxx
شنبه 14 دی 1387, 02:56 صبح
از hook چطور می تونم استفاده کنم یک مثال دارید

بحث hook كردن توابع API قبلا پيش امده. مي تونيد جستجو كنيد


لطفاً توضیح بدید . چطور می تونیم برای پروسه ها دسترسی در سطح هسته تعریف کنیم ؟
اول از همه بايد ببينيم كه كنترل ويندوز در مد هسته كي و كجا و چه جوري به مد كاربر تبديل ميشه. اون وقت شايد بتونيم يه كاريش بكنيم.
وقتي سيستم بالا مياد هر سيستم عاملي بر اساس ساختار خودش يك سري فايل هاي سيستمي داره كه اونها رو اجرا مي كنه. تو سيستم عامل ويندوز يكي از اون فايل ها ntldr هست. وظيفه اين فايل انتقال كنترل از مد هسته به مد كاربر هست.
بقيه شو خود دانيد ...



... ولی شما باید خاصیت unload فورمتون هم به صورت زیر قرار بدین تا دیگه اصلا بسته نشه


Private Sub Form_Unload(Cancel As Integer)
Cancel = 1
End Sub


task kill شدن يك پروسه يعني بسته شدن برنامه به طور غير عادي. و رويداد unload در اين حالت اتفاق نمي افته و برنامه بسته ميشه.
ولي گذاشتن نام services ايده خوبي بود.:تشویق: بخصوص اگر اون رو تو ليست پروسس هاي system قرار بديم.

mehrdad.ahw
دوشنبه 16 دی 1387, 15:57 عصر
واقعا از همتون ممنونم. شما باعث میشید که علم خیلی از برنامه نویسای نوپایی مثل من زیاد بشه.