PDA

View Full Version : حرفه ای: جلو گیری از End Process کردن برنامه



saam_2371369
پنج شنبه 17 آذر 1390, 00:42 صبح
سلام به همه دوستان عزیز


من برنامه ای نوشتم که باید در زمان اجرا بودن برنامه بتونه از خودش مراقبت کنه یعنی برنامه End Process نشه من تمام سایت های ایرانی و خارجی زیرو رو کردم اما نمونه برنامه به این شکل ندیدم , من در سایت برنامه نویس هم کاملا جستجو کردم اما مطلب جالبی نبود
تمام بحث های که انجام شده بود هچکدوم جنبه عملی درستی ندارن مثل :


ساخت فایلی که برنامه اصلی چک کنه اگه برنامه بسته شد دوباره برنامه رو اجرا کنه (که این روش به راحتی قابل شکستن هست !)
ساخت فایل به نام پروسس های هسته ویندوز مثل :
System.exe , ssms.exe , WinLogon.exe و ... (این روش با استفاده از یک نرم افزار جانبی قابل شناسایی هست !)
یا پنهان سازی پروسس (این روش هم با استفاده از یک نرم افزار جانبی قابل شناسایی هست !)


یا بحث هایی در مورد Hook API که هچکدوم سرانجامی نداشت ...


از این روش تمام انتی ویروس ها استفاده میکنن مثل ESET


:قلب: لطفا اگر امکانش هست کمکم کنید با تشکر از همه دوستان سایت برنامه نویس


788527885278852
78853

Esmail Solhkhah
پنج شنبه 17 آذر 1390, 00:48 صبح
یه درایو باید بنویسید که پروسس رو مخفی کنه

موفق باشید.

saam_2371369
پنج شنبه 17 آذر 1390, 00:58 صبح
سلام دوست عزیز

این روشی که گفتید مشه کامل تر توضیح بدید یا نمونه برنامه اپلود کنید
من یک برنامه دیدم که یکی با دلفی نوشته بود این برنامه به صورت تست بود و هیچ کنترلی روی فرم قرار نداشت یا
حداقل پنهان بودن که ایم کارو انجام می داد برنامه از دکمه Close به راحتی بسته می شد ولی از TaskMGR و یا هر
برنامه جانبی که پروسس ها رو کنترل و می بندن قابل بستن نبود و پیامی به این عنوان می داد access denied

Esmail Solhkhah
پنج شنبه 17 آذر 1390, 01:06 صبح
http://www.codeproject.com/KB/system/hide-driver.aspx

این لینک رو ببینید ، درایور که داستانش مشخصه ولی برا برنامه رابط تو این پروژه از C++ استفاده شده شما باید معادل سازی کنید

موفق باشید

saam_2371369
پنج شنبه 17 آذر 1390, 01:32 صبح
دوست عزیز من واقا عذر خواهم ولی این چطروی کار می کنه من زمانی که بهش فایل میدم خطا میده
این متن خطا هست : Can't get handle to driver : The system cannot find the file specified

Esmail Solhkhah
پنج شنبه 17 آذر 1390, 01:44 صبح
از تب Install باید Driver Path رو به مسیر فایل HideDriver.sys ست کنید

پیشنهاد میکنم دو فایل مربوطه رو به یه مسیر ساده کپی کنید مثلا d:\MyDriver

بعد برنامه رو اجرا کنید Driver Oath رو به d:\MyDriver\HideDriver.sys ست کنید

بعد دکمه Install رو بزنید تا درایور نصب بشه بعد نصب Run رو بزنید

بعد در تب Process راست کلیک کرده Add بزنید و پروسس مورد نظر رو انتخاب کنید به محظ انجام اینکار میبینید پروسس دیگه تو Task Manager دیده نمیشه

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

دقت کنید برا کار با درایور ها باید خیلی دقت کنید چون کوچکترین اشتباهی ممکنه سیستم رو ریست کنه (Blue screen) یا دیگه سیستم بوت نشه

saam_2371369
پنج شنبه 17 آذر 1390, 01:55 صبح
اقا اسمائیل شما روشی برای قابل بستن نبود برنامه ندارید( access denied )
اخه برنامه که من نوشتم یجور سی دی آموزشی و قرار هر جایی اجرا بشه که این روش زیاد جالب نیست چون ممکن سیستم یه بنده خدایی خراب بشه !

Esmail Solhkhah
پنج شنبه 17 آذر 1390, 02:03 صبح
اقا اسمائیل شما روشی برای قابل بستن نبود برنامه ندارد( access denied )اگه اشتباه نکنم تو همین سایت یه pdf درموردش هست ولی لینکش یادم نیست
تاپیکهایی هم تو این زمینه هست.


این روش زیاد جالب نیست چون ممکن سیستم یه بنده خدایی خراب بشهاگه دنبال یه روش قدرتمند میگردید این یه راهشه ، روشهای دیگه ای هم هست که تو همون pdf توضیح داده شده.

ضمنا اگه درایور اصولی نوشته شده باشه و لایه ارتباطیش هم کارشو درست انجام بده نگرانی نداره

موفق باشید.

saam_2371369
پنج شنبه 17 آذر 1390, 02:14 صبح
من این روش تست کردم ولی یه مشکل داره که با این کار باعث میشه دیگه پروسس اجرا نمونه یعنی زمانی که این درایور نصب میشه
دیگه مانع از اجرا شدن برنامه میشه !!!
روشی برای جلو گیری از بستن پروسس ندارد ممنون میشم کمکم کنید حاضرم جبران کنم :افسرده:

Esmail Solhkhah
پنج شنبه 17 آذر 1390, 02:20 صبح
درایور رو نصب میکنید و هر موقع لازم شد اونو ران میکنید


روشی برای جلو گیری از بستن پروسس ندارد ممنون میشم کمکم کنید
وقتی پروسس دیده نمیشه شما چطور میخاید اونو ببندید که نگران بسته شدنش هستید ؟


حاضرم جبران کنم
اینجا همه ما داریم یاد میدیم و یاد میگیریم نیازی به این کارا نیس

موفق باشید.

saam_2371369
پنج شنبه 17 آذر 1390, 02:31 صبح
[
اینجا همه ما داریم یاد میدیم و یاد میگیریم نیازی به این کارا نیس
من واقا متشکرم

من این روش تست کردم ولی یه مشکل داره که با این کار باعث میشه دیگه پروسس اجرا نمونه یعنی زمانی که این درایور نصب میشه دیگه مانع از اجرا شدن برنامه میشه !!!

Esmail Solhkhah
پنج شنبه 17 آذر 1390, 02:49 صبح
متوجه نمیشم ، شما دارید چیکار میکنید ؟

فرض اینکه برنامه شما اسمش باشه winapp1.exe
شما یه بار کافیه درایور رو نصب کنید و ران کنید بعد winapp1.exe رو براش معرفی کنید
این باعث نمیشه که جلوی اجرای مجدد winapp1.exe گرفته بشه

saam_2371369
پنج شنبه 17 آذر 1390, 02:54 صبح
شما یه بار کافیه درایور رو نصب کنید و ران کنید بعد winapp1.exe رو براش معرفی کنید


برنامه دو قسمت داره یکی پروسس یکی دیگه فایل از کدون راه معرفی کنم
با تشکر

Esmail Solhkhah
پنج شنبه 17 آذر 1390, 03:04 صبح
از قسمت Process

saam_2371369
پنج شنبه 17 آذر 1390, 03:20 صبح
اقا راه افتاد فقط میمونه تبدیل به #C , کاره جالبی شد .
فقط خدا کنه سیستم های مردم خراب نکنه .
----------------------------------------------------------------------------------------------
اگه تو تبدیل موفق بودم اپلود می کنم تا همه استفاده کنن !

راستی برا اون روش accses dinied راهی پیدا کردین ممنون میشم در جران قرارم بدید

اقا شرمنده سایت دکمه (تشکر X1000) نداشت و گرنه کلیک میکردم :قهقهه:

saam_2371369
پنج شنبه 17 آذر 1390, 11:46 صبح
سلام صبح بخير به همه

اقا كسي نسيت جواب منو بده

ممنون ميشم كسي جواب بده :بوس:

Esmail Solhkhah
پنج شنبه 17 آذر 1390, 12:01 عصر
بخشید اگه نمیرسم تاپیک رو ادامه بدم ،بنده یکم گرفتارم

اگه با WDK آشنایی داشته باشید

http://msdn.microsoft.com/en-us/library/windows/hardware/ff567022(v=vs.85).aspx (http://msdn.microsoft.com/en-us/library/windows/hardware/ff567022%28v=vs.85%29.aspx)

مطالب بیشتر : در مورد ZwOpenProcess یه سرچی بزنید

نکته : بیشتر آنتی ویروسها و فایروالهای معروف درایوری برای محافظت از پروسسهای مهم و حیاطیشون نصب میکنن

موفق باشید.

saam_2371369
پنج شنبه 17 آذر 1390, 22:35 عصر
سلام اقا اسماعیل

ممنونم که تاپیک را پیگیری میکنید

یعنی امکانش هست که با درایور های بشه پروسس access denied درست کرد

راستی من هرکاری کردم نتونستم ++C تبدیل به #C کنم اگر امکانش هست نمونه سورسی با #C اپلود کنید

متشکرم

zarrinnegar
جمعه 18 آذر 1390, 00:07 صبح
این فایل رو ببین شاید کارت راه بیافته
78900

saam_2371369
جمعه 18 آذر 1390, 01:17 صبح
لام دوست عزیز ممنون از اشتراکتون در این تاپیک

این روشی که در pdf توضیح داده به راحتی با دستور TaskKill قابل بستن هست



ساخت فایلی که برنامه اصلی چک کنه اگه برنامه بسته شد دوباره برنامه رو اجرا کنه (که این روش به راحتی قابل شکستن هست !)
ساخت فایل به نام پروسس های هسته ویندوز مثل :
System.exe , ssms.exe , WinLogon.exe و ... (این روش با استفاده از یک نرم افزار جانبی قابل شناسایی هست !)
یا پنهان سازی پروسس (این روش هم با استفاده از یک نرم افزار جانبی قابل شناسایی هست !)



78903

در این روشی که در فایل ضمیمه قرار دادم دیگه نمیشه اون رو ببندی , کسی در این مورد چیزی میدونه ؟؟؟ :متفکر:

saam_2371369
جمعه 18 آذر 1390, 01:55 صبح
مدیران سایت لطفا یه کمکی به من بکنید

تو گل گیرکردم این پروژه خیلی مهم هست برام :افسرده::افسرده::افسرده::افس ده::افسرده:

Esmail Solhkhah
شنبه 19 آذر 1390, 02:01 صبح
گفتم که در مورد ZwOpenProcess تحقیق کنید !!!

http://read.pudn.com/downloads179/sourcecode/windows/vxd/834797/Hook%20ZWopenprocess/stdhook.c__.htm

فقط دقت کنید تو این کد از PID پروسس استفاده کرده که موقع بیلد درایور ثابته پس برای کار واقعی مناسب نیست چون با هر بار لود سیستم عامل یا اجرای دوباره PID پروسس تغییر میکنه بجاش باید از نام پروسس استفاده کنید.

حسنی که این کد داره اینه که دیگه نیازی به برنامه ارتباطی ندارید ، خود درایور مستقل عمل میکنه

این همونیه که شما میخواستید، یعنی پروسس دیده میشه ولی نمیشه Kill کرد.

در مورد هوک هم یه تحقیقی بکنید چون تو این درایو دقیقا از این قضیه استفاده شده(بصورت ساده تو این درایور یه جایگزین برا ZwOpenProcess نوشته شده که تابع جدید کار قبلی رو انجام میده و همچنین بررسی میکنه اگه PID ورودی برابر PID مورد نظر شما شد نمیزاره Kill بشه)

سطرهای DbgPrint اختیاریه میتونید برشون دارید.اینا برای نوشن وضعیت فعلی هستند و برا دیدنشون میتونید از Dbgview استفاده کنید.

برا بیلد درایور از WDK استفاده کنید

http://msdn.microsoft.com/en-us/windows/hardware/gg487463

موفق باشید.

Securebit
شنبه 19 آذر 1390, 17:05 عصر
این فایل رو امتحان کنید در صورت خارج شدن از پروسس BSOD روی میده.

http://www.mediafire.com/?6vc0mxrtbb4aco4

saam_2371369
شنبه 19 آذر 1390, 18:44 عصر
سلام به همه ی بچه های برنامه نویس
مشکل من بدست دوستان عزیز Strong Bytes و Esmail Solhkhan حل شد خیلی خیلی ممنون :قلب:

اینم لینک دانلود برای دوستانی که پیگیر این تاپیک بودن :

http://www.opensc.ws/dotnet-snippets/12362-src-c-protect-process-fuse-no-bsod.html

از دکمه تشکر برای دوستانی که کمکم کردن استفاده کنید ممنونم :بوس:

علی یارتون :لبخندساده:

Mohsen229266
دوشنبه 04 شهریور 1392, 18:56 عصر
سلام
دوستان لینک های دانلود منقضی شدن اگر کسی این برنامه رو داره لطف کنه آپلود کنه

ahmadreza517
دوشنبه 04 شهریور 1392, 19:10 عصر
سلام


using System.Runtime.InteropServices;


[DllImport("user32.dll")]
public static extern IntPtr FindWindow(string lpClassName, string lpWindowName);

[DllImport("user32.dll")]
static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);


IntPtr hWnd = FindWindow(null, "notepad");
if (hWnd != IntPtr.Zero)
{
//Hide the window
ShowWindow(hWnd, 0); // 0 = SW_HIDE
}

Mohsen229266
سه شنبه 05 شهریور 1392, 18:15 عصر
ممنون دوست عزیز ولی این کد واسه مخفی کردن هست
من میخوام تو Task manager نمایش داده بشه ولی موقع end process پیغام accses is dinied بده

Mohsen229266
چهارشنبه 06 شهریور 1392, 10:53 صبح
از دوستان کسی این برنامه رو نداره آپ کنه؟

saam_2371369
سه شنبه 22 بهمن 1392, 12:18 عصر
از دوستان کسی این برنامه رو نداره آپ کنه؟



using System;
using System.Diagnostics;
using System.Windows.Forms;
using System.Runtime.InteropServices;

namespace Protect
{
public partial class fMain : Form
{
public fMain()
{
InitializeComponent();
}

private void fMain_Load(object sender, EventArgs e)
{
// Unload Fuse ~ Anti BSoD
AppDomain.CurrentDomain.ProcessExit += new EventHandler(UnloadFuse);
AppDomain.CurrentDomain.DomainUnload += new EventHandler(UnloadFuse);
Application.ApplicationExit += new EventHandler(UnloadFuse);
}

private void UnloadFuse(object sender, EventArgs e)
{
Protect(0);
}

private void bProtect_Click(object sender, EventArgs e)
{
if (bProtect.Text == "Protect")
{
bProtect.Text = "Unprotect";
Protect(1);
}
else if (bProtect.Text == "Unprotect")
{
bProtect.Text = "Protect";
Protect(0);
}
}

private void Protect(int dwActive)
{
NtSetInformationProcess(Process.GetCurrentProcess( ).Handle, 29, ref dwActive, sizeof(int));
}

// API's
[DllImport("ntdll")]
private static extern int NtSetInformationProcess(IntPtr hProcess, int processInformationClass, ref int processInformation, int processInformationLength);
}
}


موفق باشد

terrorhell
سه شنبه 01 اردیبهشت 1394, 16:20 عصر
جناب Saam این کد شما کار میکنه اما تنها بدیش اینه که access denied نمیده ، بلکه blue screen میده و سیستم ریست میشه که این خیلی ضرر داره و باعث میشه سیستم عامل شما مشکل پیدا کنه

میشه کاری کرد همون access denied بده ؟