PDA

View Full Version : سوال: بسته نشدن برنامه (غیر تکراری)



daniyal_1363
شنبه 25 اردیبهشت 1389, 18:23 عصر
سلام

قبلاً در مورد بسته نشدن برنامه ها صحبت شده بود که خیلی کاره راحتیه

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

مهران رسا
شنبه 25 اردیبهشت 1389, 18:31 عصر
خودت پیشنهادی نداری ؟

daniyal_1363
شنبه 25 اردیبهشت 1389, 18:53 عصر
خودت پیشنهادی نداری ؟


من در این مورد هیچ اطلاعاتی ندارم

میخوام مثل بعضی از آنتی ویروس که با End Process بسته نمیشه عمل کنه

مهران رسا
شنبه 25 اردیبهشت 1389, 19:22 عصر
من در این مورد هیچ اطلاعاتی ندارم

میخوام مثل بعضی از آنتی ویروس که با End Process بسته نمیشه عمل کنه

تا اونجایی که من میدونم اصولاً با زبانی مثل VB چنین کاری امکان پذیر نیست (مگر استفاده از روش های ابتکاری) . در مورد دلیلش هم بحث های زیادی مطرح شده . میتونید جستجو کنید .

l4tr0d3ctism
شنبه 25 اردیبهشت 1389, 19:34 عصر
بهترهبه عملکرد ویروس ها بیشتر توجه کنی

یک ویروس پروسش رو نمیشه end کرد چون فورا یک فایل دیگه چک میکنه که در صورت نبودن پروسه فایل a.exe مثلا رو اجرا کن دوباره

و همچنین بر عکس اگه اون یکی رو end کنی یاین یکی دوباره اجراش میکنه

بعضی ویروس ها اسم فایل رو میزارن smss و یا lsass اگه اسم فایل اینها باشه خوب نمیشه دیگه اون رو end کرد

----
فایل هم حذف نمیشه تا اون وقت که پروسه فعال باشه

------------------
حالا می تونی از نمایش پروسه ی فایل فعال شده بر روی تسک منیجر جلوگیری کنی که اگه یه سرچ کوچیکی هم بزنی تو همین سایت چیزایی هم میبینی

-------------------

اما در کل می تونی اون رو هم استارت اپ کنی که در هر بار ریستارت شدنم باز اجرا شه


اما همه اینایی که گفتم کامل خصوصیات یک ویروس یا بد افزار بودن

------------
اگه در مورد اونها بیشتز تحقیق کنی می فهمی خودت همه چیو

--------------

با همین ویبی هم میشه

saeedvir
شنبه 25 اردیبهشت 1389, 19:45 عصر
اينجا بحث شده (http://forum.barname.org/showthread.php?t=170)

daniyal_1363
شنبه 25 اردیبهشت 1389, 19:58 عصر
یک ویروس پروسش رو نمیشه end کرد چون فورا یک فایل دیگه چک میکنه که در صورت نبودن پروسه فایل a.exe مثلا رو اجرا کن دوباره



ممنون دوست عزیز

این روش ، روش مناسبی نیست - اول اینکه فکر کنید اگه یه لیبیل روی فرم اصلی برنامه باشه که بخواد اطلاعات همون لحظه رو نشون بده با بسته شدن و اجرای مجددش اطلاعاتش از بین میره (هر چند میشه اطلاعات رو لحضه به لحظه ذخیره کرد ولی این روش باعث میشه برنامه سنگین تر بشه)

چون نرم افزاری که قرار طراحی بشه ویروس نیست و برای استفاده در یک شبکه داخلیه میخوام که در Process دیده بشه - در ضمن برنامه هایی هستند که Process های مخفی رو نمایش میدن

پیغام های زیر رو ببینید

http://up.iranblog.com/Files/8ee2db695cb544a69390.JPG


http://up.iranblog.com/Files/a0502dce981441a08b4f.JPG


یه نمونه پیغام دیگم هست که نتونستم بزارم

daniyal_1363
شنبه 25 اردیبهشت 1389, 20:00 عصر
اينجا بحث شده (http://forum.barname.org/showthread.php?t=170)


ممنون دوست عزیز خیلی گشتم ولی نتونستم بیابم :بامزه:

ولی این نمونه هام کمکی نکرد ، به راحتی با Task manager بسته میشه در نمونه ای هم که قرار سیستم ریستار بشه همچین اتفاقی نمی افته

daniyal_1363
چهارشنبه 29 اردیبهشت 1389, 17:25 عصر
من هنوز به جوابم نرسیدم

کسی راه حل اصولی نداره

یا اینکه اگه برنامه ما بسته بشه سیستم مختل بشه

مثل همون ریستار کامپیوتر ؟:متفکر:

saeedvir
چهارشنبه 29 اردیبهشت 1389, 17:41 عصر
ممنون دوست عزیز خیلی گشتم ولی نتونستم بیابم :بامزه:

ولی این نمونه هام کمکی نکرد ، به راحتی با Task manager بسته میشه در نمونه ای هم که قرار سیستم ریستار بشه همچین اتفاقی نمی افته

يعني سيستم Restart نمي شد ؟

daniyal_1363
پنج شنبه 30 اردیبهشت 1389, 08:26 صبح
يعني سيستم Restart نمي شد ؟


نه متاسفانه

میشه نمونه ای که در سیستم خودتون تست شده رو تو همین سایت آپلود کنید

اگه یه نمونه برای کار با فایل Dll هم بزارین ممنون میشم

saeedvir
پنج شنبه 30 اردیبهشت 1389, 22:42 عصر
این کاملا جواب میده

daniyal_1363
جمعه 31 اردیبهشت 1389, 16:15 عصر
این کاملا جواب میده

این برنامه قراره ریستار کنه ؟

فایل EXE رو میسازم و وقتی اجرا میکنم و با Taskmaneger اون رو Endprocess میکنم هیچ اتفاقی نمیفته:اشتباه::عصبانی++:

daniyal_1363
شنبه 22 خرداد 1389, 08:58 صبح
مدیران محترم ، مهندسین عزیز کسی نیست این مشکل رو تا حالا حل کرده باشه ؟

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

daniyal_1363
دوشنبه 18 مرداد 1389, 08:13 صبح
یعنی توی vb6 هیچ راهی وجود نداره که از بسته شدن برنامه به هر عنوانی جلوگیری کنه ؟:متفکر:

Saman_12
دوشنبه 18 مرداد 1389, 11:32 صبح
سلام.
تا اون جایی که اطلاعات ناقس من قد میده شما باید پیغام های ویندوز رو هوک کنید.مثل پیغام دیستوری که وقتی شما روی دکمه شات دان کلیک می کنید به تمام برنامه ها فرستاده میشه.(من از هوک هیچی نمی دونم:لبخند:)

M.T.P
دوشنبه 18 مرداد 1389, 12:36 عصر
این کاملا جواب میده

این برنامه که خوراک End Process هست!! :لبخند:
کمترین واکنشی از خودش تشون نمیده!

fazelm
دوشنبه 18 مرداد 1389, 15:34 عصر
بذار بسته بشه و بعدش اتوماتیک اجراش کن

یعنی موقع خاموش شدن به زور بسته بشه و موقع بالا اومدن از توی استارت آپ سریع اجرا بشه

حتی ویروس ها هم همین کار رو میکنن

night_secret
سه شنبه 19 مرداد 1389, 22:31 عصر
دوست عزیز vb6 همچین امکانی نداره:ناراحت:

fazelm
سه شنبه 19 مرداد 1389, 23:02 عصر
حرف بسیار مبتدیانه ای زدید

این کار جز کوچک ترین کارایی که میشه با وی بی میشه کرد

daniyal_1363
سه شنبه 30 فروردین 1390, 10:38 صبح
سلام
بعد از مدت ها آمادم (ببخشید آخه سربازم :لبخند:)

یک کوچلو اینجا رو با یه جایه دیگه اشتباه گرفته بودم

دوست عزیز fazelm (http://barnamenevis.member.php?104162-fazelm) شما با اعتماد به نفس بالایی میگی میشه پس چرا راه حلی ارائه نمیدی ؟

asf_pack
دوشنبه 04 فروردین 1393, 16:57 عصر
آقایون مهندسا من کل این سایت و اینترنتو زیرو رو کردم ولی هیچ مطلبی که واقعا کارایی داشته باشه پیدا نکردم لطفا اگه کسی مطلب عملی و تست شده ای درباره اینکه برنامه رو نشه بست یا از تب پروسس مخفی کرد داره بزاره استفاده کنیم واقعا نیاز دارم بش

siyn71
دوشنبه 04 فروردین 1393, 18:16 عصر
بعضی ویروس ها تسک منیجر رو غیر فعال میکنن..شما هم میتونین با غیر فعال کردن تسک منیجر مانع بسته شدن برنامه بشین
تو ضمیمه یه نمونه سورس برای غیر فعال سازی تسک منیجر میزارم

mehran901
پنج شنبه 07 فروردین 1393, 01:36 صبح
با کد زیر میتونید از بسته شدن پروسس جلوگیری کنید البته به زبان سی++ هستاز اونجایی که یا سایت برا من داغون نشون داده میشه یا داغون شده ! کدو نمیتونم تو بلاک کد بذارم ...#include #include typedef VOID ( _stdcall *RtlSetProcessIsCritical ) ( IN BOOLEAN NewValue, OUT PBOOLEAN OldValue, // (optional) IN BOOLEAN IsWinlogon );BOOL EnablePriv(LPCSTR lpszPriv) // by Napalm{ HANDLE hToken; LUID luid; TOKEN_PRIVILEGES tkprivs; ZeroMemory(&tkprivs, sizeof(tkprivs)); if(!OpenProcessToken(GetCurrentProcess(), (TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY), &hToken)) return FALSE; if(!LookupPrivilegeValue(NULL, lpszPriv, &luid)){ CloseHandle(hToken); return FALSE; } tkprivs.PrivilegeCount = 1; tkprivs.Privileges[0].Luid = luid; tkprivs.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; BOOL bRet = AdjustTokenPrivileges(hToken, FALSE, &tkprivs, sizeof(tkprivs), NULL, NULL); CloseHandle(hToken); return bRet;}BOOL ProtectProcess() // by _FIL73R_{ HANDLE hDLL; RtlSetProcessIsCritical fSetCritical; hDLL = LoadLibraryA("ntdll.dll"); if ( hDLL != NULL ) { EnablePriv(SE_DEBUG_NAME); (fSetCritical) = (RtlSetProcessIsCritical) GetProcAddress( (HINSTANCE)hDLL, "RtlSetProcessIsCritical" ); if(!fSetCritical) return 0; fSetCritical(1,0,0); return 1; } else return 0;}int main (void){ProtectProcess(); while(1) { // do your virus thingy }return 0;}

بهروز عباسی
یک شنبه 10 فروردین 1393, 06:09 صبح
بعضی ویروس ها تسک منیجر رو غیر فعال میکنن..شما هم میتونین با غیر فعال کردن تسک منیجر مانع بسته شدن برنامه بشین
تو ضمیمه یه نمونه سورس برای غیر فعال سازی تسک منیجر میزارم
پاک کردن صورت مسئاله ؟
شاید طرف از Process Explorer و یا Process Hacker استفاده می کرد اون وقت چی ؟


با کد زیر میتونید از بسته شدن پروسس جلوگیری کنید البته به زبان سی++ هستاز اونجایی که یا سایت برا من داغون نشون داده میشه یا داغون شده ! کدو نمیتونم تو بلاک کد بذارم ...#include #include typedef VOID ( _stdcall *RtlSetProcessIsCritical ) ( IN BOOLEAN NewValue, OUT PBOOLEAN OldValue, // (optional) IN BOOLEAN IsWinlogon );BOOL EnablePriv(LPCSTR lpszPriv) // by Napalm{ HANDLE hToken; LUID luid; TOKEN_PRIVILEGES tkprivs; ZeroMemory(&tkprivs, sizeof(tkprivs)); if(!OpenProcessToken(GetCurrentProcess(), (TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY), &hToken)) return FALSE; if(!LookupPrivilegeValue(NULL, lpszPriv, &luid)){ CloseHandle(hToken); return FALSE; } tkprivs.PrivilegeCount = 1; tkprivs.Privileges[0].Luid = luid; tkprivs.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; BOOL bRet = AdjustTokenPrivileges(hToken, FALSE, &tkprivs, sizeof(tkprivs), NULL, NULL); CloseHandle(hToken); return bRet;}BOOL ProtectProcess() // by _FIL73R_{ HANDLE hDLL; RtlSetProcessIsCritical fSetCritical; hDLL = LoadLibraryA("ntdll.dll"); if ( hDLL != NULL ) { EnablePriv(SE_DEBUG_NAME); (fSetCritical) = (RtlSetProcessIsCritical) GetProcAddress( (HINSTANCE)hDLL, "RtlSetProcessIsCritical" ); if(!fSetCritical) return 0; fSetCritical(1,0,0); return 1; } else return 0;}int main (void){ProtectProcess(); while(1) { // do your virus thingy }return 0;}
من کدت رو ندیدم ولی تابع Undocumented و دوست داشتنی RtlSetProcessIsCritical فقط باعث میشه پروسه کمی مقاوم بشه و فقط کافیه کد Kill کردن پروسه رو پروسه ای "مثلاً" محافظت میشه تزریق کنی تا به آسونی بسته بشه.


"یکی" از بهترین روش ها استفاده از Callback های-(و یا Hook)- کرنل مده که باید براش Driver بنویسین اگه خواستین بگید تا یه بیشتر توضیح بدم.

asf_pack
دوشنبه 11 فروردین 1393, 01:20 صبح
پاک کردن صورت مسئاله ؟
شاید طرف از Process Explorer و یا Process Hacker استفاده می کرد اون وقت چی ؟


من کدت رو ندیدم ولی تابع Undocumented و دوست داشتنی RtlSetProcessIsCritical فقط باعث میشه پروسه کمی مقاوم بشه و فقط کافیه کد Kill کردن پروسه رو پروسه ای "مثلاً" محافظت میشه تزریق کنی تا به آسونی بسته بشه.


"یکی" از بهترین روش ها استفاده از Callback های-(و یا Hook)- کرنل مده که باید براش Driver بنویسین اگه خواستین بگید تا یه بیشتر توضیح بدم.

---------------------------------------------------------------------------------------------------------------------------
اگه بیشتر توضیح بدین یا سورس کد بزارین ممنون میشم

gorg313
دوشنبه 11 فروردین 1393, 11:05 صبح
سلام

قبلاً در مورد بسته نشدن برنامه ها صحبت شده بود که خیلی کاره راحتیه

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


سلام داداش يه راه حل نصف و نيمه بهت ميگم اما من همش ديپلم دارم نميرم تو کلاس مهندسا

شما بهتره برا برنامتون يه پشتيبان بذاريد

پشتيبان چيه ؟ در مبحث من اينکه شما برنامه اصليتون هستش مثلآ A.EXE اين برنامه شما هست که قراره ايند پروسس(End Process) بشه و شما دوست نداريد اين کار اتفاق بيفته

شما در کنار برنامه A.EXE يه پشتيبان به اسم B.EXE بسازيد که چک کنه ببينه آيا برنامه A.EXE در حال اجرا هست يا نه ؟!!!

وقتي چک کرد و ديد برنامه در حال اجرا هست کار خاصي نکنه

ولي وقتي ببينه که نرم افزار A.EXE اجرا نميشه خودش شل کنه يه بار شل کنه

چند نکته : شما از طريق برنامه A برنامه B را بايد شل کنيد و به صورت مخفي هم اجرا بشه

و به استارت آپ اضافه کنيد خلاصه با بالا اومدن ويندوز بياد بالا


به نظر خودم بهترين و ساده ترين راهش اينه

فقط يه چيزي برنامه تون بسته ميشه شما از دستور SAVESEETING مي تونيد آخرين اطلاعات برنامه را ذخيره کنيد و ...........

بستگي به نوع برنامتون داره و .......



-----------------------------------

خلاصه - شما برا برنامتون يه برنامه دوم درست ميکنيد که از طريق استارت آپ وضعيت برنامه اصلي را بررسي ميکنه

---------------------------------

موفق باشي :متفکر:

Fath32
یک شنبه 07 اردیبهشت 1393, 18:32 عصر
سلام

قبلاً در مورد بسته نشدن برنامه ها صحبت شده بود که خیلی کاره راحتیه

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



در ویندوز های ۳۲ بیتی اصلا بهش فکر هم نکن ! خودتم خسته نکن در ویندوز های ۶۴ بیتی با PG و DSE فعال می تونی بهش فکر کنی ولی قبل اینکه بری سراغ کرنل ببین اصلا می تونی درایورتو sign کنی ! (هزینه sign + دور زدن تحریم)

نوشتن ابزار امنیتی مثل نوشتن اپلیکیشن های معمولی نیست تکنیکی که سورسش رو الان برای شما بزارن تولز بایپسش ۳ سال ‍پیش رو نت بوده و نوشتن این چنین ابزاری مشکل کاربر رو حل نمیکنه و برای شما هم منفعتی نداره البته قاعدتا فایده آموزشی داره ...

اگر هدف نهایی رو بگی شاید راه بهتری بشه پیش نهاد داد.

یاعلی.

بهروز عباسی
پنج شنبه 11 اردیبهشت 1393, 22:41 عصر
در ویندوز های ۳۲ بیتی اصلا بهش فکر هم نکن ! خودتم خسته نکن در ویندوز های ۶۴ بیتی با PG و DSE فعال می تونی بهش فکر کنی ولی قبل اینکه بری سراغ کرنل ببین اصلا می تونی درایورتو sign کنی ! (هزینه sign + دور زدن تحریم)

اگر هدف نهایی رو بگی شاید راه بهتری بشه پیش نهاد داد.

یاعلی.
:|
چرا توی 32 بیتی نباید بهش فکر کرد ؟! وقتی میشه به راحتی SSDT Hooking انجام داد و بدون نیاز به Code Sign درایور هارو نصب و اجرا کرد؟



نوشتن ابزار امنیتی مثل نوشتن اپلیکیشن های معمولی نیست تکنیکی که سورسش رو الان برای شما بزارن تولز بایپسش ۳ سال ‍پیش رو نت بوده و نوشتن این چنین ابزاری مشکل کاربر رو حل نمیکنه و برای شما هم منفعتی نداره البته قاعدتا فایده آموزشی داره ...
کاملاً درسته ولی برخی موارد هستند که میشه همیشه ازشون استفاده کرد مثلا پروسه های محافظت شده چیزهای خیلی عجیبی نیستن حتی خود ویندوز هم برای این کار API ارائه داده.

Fath32
جمعه 12 اردیبهشت 1393, 00:14 صبح
:|
چرا توی 32 بیتی نباید بهش فکر کرد ؟! وقتی میشه به راحتی SSDT Hooking انجام داد و بدون نیاز به Code Sign درایور هارو نصب و اجرا کرد؟

سوال خوبیه !
چون به همون راحتی که شما یک درایور می نویسید و توش SSDT رو هوک می کنید و نهایتا ساین نشده لود میکنید منم یک درایور می نویسم و SSDT رو مثل روز اولش restore می کنم و نهایتا ساین نشده هم لودش میکنم ، به همین سادگی !

البته می دونم شما تجربه خوبی تو این بحث دارید اما ذات این مدل کرنل ها همینه ،نمیشه عوضش کرد ... اگر پچ گارد نباشه شما با DKOM فیها خالدون سیستم رو میتونید بالاپایین کنید ! ... در این شرایط دنبال چه امنیتی تو کرنل هستید ؟


کاملاً درسته ولی برخی موارد هستند که میشه همیشه ازشون استفاده کرد مثلا پروسه های محافظت شده چیزهای خیلی عجیبی نیستن حتی خود ویندوز هم برای این کار API ارائه داده.

دوست عزیز من نگفتم چیزهای عجیبی هستن ! بلکه خیلی هم ناکارامدن اگر توسط یک فرد آشنا به امنیت و معماری سیستم استفاده نشن .

نفهمیدم منظورتون از "حتی خود ویندوز هم برای این کار API ارائه داده " چیه ؟ یوزر مود یا کرنل مود ؟ منظورتون کال بک ها و فیلتر فریم ورک هاست ؟؟

ببینید یک منطق خیلی ساده داره ، زمانی برنامه نویسی در کرنل برای شما ایجاد امنیت میکنه که کد های مخرب دسترسی به کرنل نداشته باشن (فعال بودن PG و DSE )
اگر غیر این باشه خوب همونطور که شما درایور لود می کنید من کاربرم درایور خودم رو لود می کنم و کاسه کوزه درایور شما رو میریزم به هم !

جمع بندی من :
اگر به عنوان یک برنامه نویس اپلیکیشن می خواید از حقوق برنامه تون حفاظت کنید فراگیری یک سری اصول امنیتی و ضد مهندسی معکوس برای شما مفیده و اثر بخش خواهد بود
اما اگر به عنوان یک برنامه نویس اپلیکیشن می خواید مثلا یک برنامه امنیتی برای حفاظت از سیستم های مردم بنویسید اون هم با کپی چند خط کد ، من خیلی توصیه نمیکنم .

یا علی .

بهروز عباسی
شنبه 13 اردیبهشت 1393, 16:48 عصر
چون به همون راحتی که شما یک درایور می نویسید و توش SSDT رو هوک می کنید و نهایتا ساین نشده لود میکنید منم یک درایور می نویسم و SSDT رو مثل روز اولش restore می کنم و نهایتا ساین نشده هم لودش میکنم ، به همین سادگی !

البته می دونم شما تجربه خوبی تو این بحث دارید اما ذات این مدل کرنل ها همینه ،نمیشه عوضش کرد ... اگر پچ گارد نباشه شما با DKOM فیها خالدون سیستم رو میتونید بالاپایین کنید ! ... در این شرایط دنبال چه امنیتی تو کرنل هستید ؟

از این منظر حرف شما درسته ولی متاسفانه یا خوشبختانه همیشه همینجوریه
توی 64 بیتی هم برنامه های مثل Process hacker که هم درایور داره و هم Code sign به آسونی میتونی همه چیز رو خراب کنه ! پس در هرحالت امنیت نداریم ولی توی نسخه های 32 بیتی "پیاده سازی " راحت تره و من هم به این دلیل اینطوری پاسخ دادم چون نمیدونم کسی که سوال کرده تا چه حد در این زمینه تخصص داره ! :D


دوست عزیز من نگفتم چیزهای عجیبی هستن ! بلکه خیلی هم ناکارامدن اگر توسط یک فرد آشنا به امنیت و معماری سیستم استفاده نشن .
به نظر من هست ولی تا وقتی که کسی که میخواد خراب کاری کنه این کاره نباشه :چشمک:



نفهمیدم منظورتون از "حتی خود ویندوز هم برای این کار API ارائه داده " چیه ؟ یوزر مود یا کرنل مود ؟ منظورتون کال بک ها و فیلتر فریم ورک هاست ؟؟
مثلاً همون تابع داکیومنت نشده RtlSetProcessIsCritical




ببینید یک منطق خیلی ساده داره ، زمانی برنامه نویسی در کرنل برای شما ایجاد امنیت میکنه که کد های مخرب دسترسی به کرنل نداشته باشن (فعال بودن PG و DSE )
اگر غیر این باشه خوب همونطور که شما درایور لود می کنید من کاربرم درایور خودم رو لود می کنم و کاسه کوزه درایور شما رو میریزم به هم !
این همه آنتی ویروس داریم بهترین مکانیزم ها رو هم دارن (Kernel , User) اما هر روز داریم Kill شون میکنیم، اونم از یوزر مد بدون درایور و ... .


جمع بندی من :
اگر به عنوان یک برنامه نویس اپلیکیشن می خواید از حقوق برنامه تون حفاظت کنید فراگیری یک سری اصول امنیتی و ضد مهندسی معکوس برای شما مفیده و اثر بخش خواهد بود
اما اگر به عنوان یک برنامه نویس اپلیکیشن می خواید مثلا یک برنامه امنیتی برای حفاظت از سیستم های مردم بنویسید اون هم با کپی چند خط کد ، من خیلی توصیه نمیکنم .
دقیقاً