الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

Access control؟؟؟؟؟؟؟؟؟؟؟؟؟؟

بدأه Rasool Micro في 6 مارس 2012 · 25 رد · 1,498 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام وعليكم

اخوان اريدكم ان تساعدوني في امر قد حيرني ووضعني في متاهة لاكثر من اسبوعين

لقد بحثت في الكوكل الكثير لكن لا استطيع الحصول على ما اريد لاني لا اعرف كيف ابحث في الموضوع او من اين ابدأ او كيف يجري الامر نظرياً

لقد قمت ببرمجة برنامج انتي فايروس ولكن هذا برنامجي لا يتمتع بامكانية الوصول الى ملفات التي من نوع system

سأشرح لكم الامر:

انتم تعرفون ان برامج الانتي فايروس مثل الكاسبر سكاي يستطيع الوصول الى اعلى الملفات التي لديها صلاحية الوصول من قبل النظام فقط

ويستطيع ايضاً الوصول الى الفايروسات في الذاكرة التي لا تظهر في الtask manager وكذلك يتفاعل مع النظام ( اقصد بالتفاعل مع النظام هو مرابقة الانتي الفايروس من قبل security center اي اذا كان قاعدة البيانات للانتي فايروس غير محدثة فسوف ينبه المستخدم من قبل security center)

لكن الانتي فايروس الخاص بي يستطيع القضاء على الفايروسات التي يستطيع اي مستخدم الوصول اليها

خلاصة كلامي :

سؤالي هو : كيف اجعل برنامجي لديه كافة امكانيات الوصول الى الملفات في القرص الصلب وحذفها وكذلك البرامج في الذاكرة حتى لو لم تكن في task manger وكذلك كيف اجعل الsecurity cneter يتعرف على الانتي فايروس الذي برمجته؟

حتى لو لم يكن لديك كود ، اذا كان لديكم روابط او رؤوس مواضيع استطيع البحث عنها او توجيهات او شي استطيع من خلاله البحث لحل مشكلتي فساكون ممتناً لكم

وشكراً جزيلاً

#2

يبدو اني اثقلت عليكم باسألتي :sad:

سأتقبل امري واعمل بمفردي لان لا احد يستطيع مساعدتي :sleep:

شكراً على كل حال :dry:

#3

السلام عليكم

أخي الحل الأنسب هو تشغيل برنامجك في صلاحيات عالية مثل system

بالتوفيق

Be the change you want to see in the world


#4
METEOR كتب:

السلام عليكم

أخي الحل الأنسب هو تشغيل برنامجك في صلاحيات عالية مثل system

بالتوفيق

اخي انت لم تضف شيئاً اني اصلاً اعرف ان يجب تشغيل برنامجي ك system ولكن كيف؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟

#5

السلام عليكم

طيب شوف هذا الرابط يمكن يفيدك

/index.php?showtopic=242282

وبالنسبة لتشغيل البرنامج في system

يمكن عن طريق أداة من أدوات PSTools يوجد مثال عندي سأحاول البحث عنه وأضعه إن شاء الله

بالتوفيق

Be the change you want to see in the world


#6

أنا في انتظارك اخي :happy:

#7

السلام عليكم لقد أتيتك بالحل أخي

ولكن كود سي شارب هذا هو الكود يمكنك إستخدامه في بداية تشغيل البرنامج أي في ملف Program.cs

إستخدم المكتبات التالية:

using System.Diagnostics;
using Microsoft.Win32;
using System.IO;
using System.Security.Principal;

هذا هو الكود:

             	if (WindowsIdentity.GetCurrent().IsSystem == false)
                	{
                    	#region Run LSA(LOCAL SYSTEM ACCOUNT)
                    	string filename = Application.StartupPath + "//lsa.exe";
                    	ProcessStartInfo si = new ProcessStartInfo(); si.FileName = filename;
                    	si.CreateNoWindow = true; si.WindowStyle = ProcessWindowStyle.Hidden;
                    	si.UseShellExecute = false; Application.Exit();
                    	Registry.CurrentUser.CreateSubKey("Software\\Sysinternals\\PsExec").SetValue("EulaAccepted", 1);
                    	si.Arguments = "-i -s " + Application.ExecutablePath;
                    	Process.Start(si);
                    	#endregion
                	}
                	else
                	{
                   	Application.Run(new Form1());
                	}

وهذا هو الملف فك ضغطه و ضعه في مجلد البرنامج:

lsa.zip

بالتوفيق

Be the change you want to see in the world


#8

اخي والله لا اعرف ما اقول لك لاني نفسي لا اعرف ما الذي يحصل

اولا انضر الى هذا الكود

if (WindowsIdentity.GetCurrent().IsSystem == false)
            {
                #region Run LSA(LOCAL SYSTEM ACCOUNT)
                string filename = Application.StartupPath + "//lsa.exe";
                ProcessStartInfo si = new ProcessStartInfo(); si.FileName = filename;
                si.CreateNoWindow = true; si.WindowStyle = ProcessWindowStyle.Hidden;
                si.UseShellExecute = false; Application.Exit();
                Registry.CurrentUser.CreateSubKey("Software\\Sysinternals\\PsExec").SetValue("EulaAccepted", 1);
                si.Arguments = "-i -s " + Application.ExecutablePath;
                Process.Start(si);
                #endregion
            }
            else
            {
                Application.Run(new Form1());
            }
            if (WindowsIdentity.GetCurrent().IsSystem == true) MessageBox.Show("Is a system");
            else MessageBox.Show("Is not a system");
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());

هذا الكود وضعته في program.cs والمفترض من هذا الكود انه اذا اصبح البرنامج في وضع الsystem فسوف يظهر لي رسالة بانه كذلك واذا ليس كذلك فسوف يظهر لي بانه ليس كذلك

وايضاً لم افهم هذا الكود ما علاقة الكود بالملف الذي اعطيتني اياه؟؟؟؟؟ :huh:

هل لديك المصدر الذي اتعمتده لهذا الكود

ارجوا ان تعطيني اياه لكي ادرس الموضوع بنفسي

وشكرا

#9

السلام عليكم

هذا الكود يستعين بالملف الذي أعطيتك إياه لكي يعمل في وضع system

يجب أن تضع الملف بجانب برنامجك

أخي المصدر هو أنا قلي ماهي مشكلتك وسوف أجاوبك

بالتوفيق

Be the change you want to see in the world


#10
METEOR كتب:

السلام عليكم

هذا الكود يستعين بالملف الذي أعطيتك إياه لكي يعمل في وضع system

يجب أن تضع الملف بجانب برنامجك

أخي المصدر هو أنا قلي ماهي مشكلتك وسوف أجاوبك

بالتوفيق

حسناً، المفترض انه عند تشغيل الtask manager سوف يظهر كل برنامج وامامه نوع المستخدم (user,system,adminstrator,local network)

بالنسبة للبرنامج يظهر وامامه اسم المستخدم وليس الsystem المفترض ان يكون system

ارجو ان توضح لي

تم تعديل هذه المشاركة بواسطة Rasool Micro في 15 مارس 2012 في 18:07

#11

اخي ولو اني اثقلت عليك :blush: لكني محتاج الى جوابك فأين انت؟؟؟؟ :blink:

#12

السلام عليكم

أخي سأضع لك مشروع جاهز لهذه العملية في أقرب وقت إن شاء الله

بالتوفيق

Be the change you want to see in the world


#13
METEOR كتب:

السلام عليكم

أخي سأضع لك مشروع جاهز لهذه العملية في أقرب وقت إن شاء الله

بالتوفيق

شكراً اخي METEOR، وانا في انتظارك :)

#14

السلام عليكم

هذا هو المشروع أخي :

RunAsLsa.zip

ولكن إنتبه لايجب أن يكون هناك فراغات في مسار البرنامج ويجب أن تضع الملف lsa.exe

بجانب البرنامج أيضاً

وهذه مشاركة أخرى أرجو أن تستفيد منها:

/index.php?showtopic=246940&st=0&p=1223506&fromsearch=1entry1223506

بالتوفيق

تم تعديل هذه المشاركة بواسطة METEOR في 19 مارس 2012 في 15:41

Be the change you want to see in the world


#15

اولاً:اخي لقد حاولت تشغيل البرنامج الذي اعطيتني اياه لكنه عند تشغيل البرنامج يتوقف في نفس اللحظة :huh:

ثانياً:وقرأت المشاركة ورأيت اداة عن طريقها يتم تشغيل البرنامج لكن يدوياً بينما انا اريد برمجياً

ثالثاً:أيوجد سورس كود للبرنامج lsa.exe الذي ارفقته مع البرنامج ؟؟؟؟؟؟؟

تم تعديل هذه المشاركة بواسطة Rasool Micro في 21 مارس 2012 في 11:11

#16

السلام عليكم

لاأخي لايوجد سورس لبرنامج lsa.exe

هذه أفضل طريقة يمكن إستخدامها في .net

وقد إستخدمتها من قبل ونجهت دون مشاكل

قل لي ماذا فعلت وسوف أساعدك إن شاء الله

بالتوفيق

Be the change you want to see in the world


#17
METEOR كتب:

السلام عليكم

لاأخي لايوجد سورس لبرنامج lsa.exe

هذه أفضل طريقة يمكن إستخدامها في .net

وقد إستخدمتها من قبل ونجهت دون مشاكل

قل لي ماذا فعلت وسوف أساعدك إن شاء الله

بالتوفيق

لقد قمت مباشرتاً بعد تحميل البرنامج الذي اعطيتني اياه مؤخراً بفتحه في الفيجوال بيسك وقمت بتنفيذ البرنامج لكن لم ينفع :sad:

#18

هل وضعت البرنامج في مسار خالي من الفراغات

Be the change you want to see in the world


#19

ماذا تقصد بالبرنامج هل تقصد الlsa.exe ام برنامج المطلوب منه ان يعمل في system ؟

اذا كت تقصد بالنسبة للlsa.exe فلا لقد وضعته في مسار فيه فراغات ولكني قمت بإزالة الفراغات عن طريق الدالة replace عندها ظهرت رسالة خطأ بانه المسار المطلوب لا يمكن ايجاده.

ربما علي ان اضع البرنامج في مسار windows\system32 فهذا المسار في كل الحاسبات ليس فيه فراغات . سوف اجرب هذه الطريقة ومن ثم ارد عليك بالنتيجة.

واذا كنت تقصد البرنامج فعلي ان اجد طريقة اخرى غير طريقتك لاني اريد اشغله في اي مكان اريد حتى لو اردت في مسار فيه فراغات.

هل توافق معي؟

تم تعديل هذه المشاركة بواسطة Rasool Micro في 22 مارس 2012 في 10:29

#20

السلام عليكم

أخي أكرر يجب أن تضع الملف lsa.exe

و ملف البرنامج في مجلد واحد في مسار خالي من الفراغات

مثال:

C:\Myapp

وليس

C:\My App

بالتوفيق

Be the change you want to see in the world


#21
METEOR كتب:

السلام عليكم

أخي أكرر يجب أن تضع الملف lsa.exe

و ملف البرنامج في مجلد واحد في مسار خالي من الفراغات

مثال:

C:\Myapp

وليس

C:\My App

بالتوفيق

حسناً اخي لقد فعلت ذلك والحمد لله نجحت

ولكن هذا الشرط الذي يشترطه علي البرنامج صعب اذا اردت ان اجعل برنامجي يعمل على الاجهزة الباقية يعني لو اردت ان اعمل له برنامج تنصيب وانشره، اكيد المستخدم سوف يثبت البرنامج في مكان يريده وممكن ان يكوف فيه فراغات وهذا ممنوع في برنامجنا الlsa.exe فكيف اتفادا هذه المشكلة ؟

ولكن على العموم لا داعي لان ترد علي لاني اتعبتك معي سوف اكمل الطريق وحدي وسوف اضع الحل الامثل إن شاء الله في المنتدى عندما اجد الحل

شكراً جزيلاً لك اخي ووفقك الله في حياتك :)

#22

السلام عليكم

أهلاً أخي

اقتباس

ولكن هذا الشرط الذي يشترطه علي البرنامج صعب اذا اردت ان اجعل برنامجي يعمل على الاجهزة الباقية يعني لو اردت ان اعمل له برنامج تنصيب وانشره، اكيد المستخدم سوف يثبت البرنامج في مكان يريده وممكن ان يكوف فيه فراغات وهذا ممنوع في برنامجنا الlsa.exe فكيف اتفادا هذه المشكلة ؟

هذا ليس شرطاً بل شيء أساسي في ويندوز وإذا كان هنالك أي مشكلة أخرى أنا جاهز

بالتوفيق

Be the change you want to see in the world


#23

اخي لقد قلت لك

اقتباس
اذا اردت ان اجعل برنامجي يعمل على الاجهزة الباقية يعني لو اردت ان اعمل له برنامج تنصيب وانشره، اكيد المستخدم سوف يثبت البرنامج في مكان يريده وممكن ان يكوف فيه فراغات وهذا ممنوع في برنامجنا الlsa.exe فكيف اتفادا هذه المشكلة ؟

هذه هي المشكلة على ان اضعه في مكان ليس فيه فراغات فقط!!!!!! هذا ليس مقبول عند نشر للبرنامج :mad:

#24

اخي لقد جلبت الحل

هذا هو الكود النهائي وتستطيع ان تشغله في مكان فيه فراغات

if (WindowsIdentity.GetCurrent().IsSystem == false)
            {
                #region Run LSA(LOCAL SYSTEM ACCOUNT)
                string filename = Application.StartupPath + "//lsa.exe";
                ProcessStartInfo si = new ProcessStartInfo(); si.FileName = filename;
                si.CreateNoWindow = true; si.WindowStyle = ProcessWindowStyle.Hidden;
                si.UseShellExecute = false; Application.Exit();
                Registry.CurrentUser.CreateSubKey("Software\\Sysinternals\\PsExec").SetValue("EulaAccepted", 1);
                si.Arguments = "-i -s " + "\"" + Application.ExecutablePath + "\"";
                Process.Start(si);
                #endregion
            }
            else
            { 
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                Application.Run(new Form1());
            }

كيف وجدت الحل؟؟

سوف اقول لك كيف وجدت الحل

قمت بوضع برنامج lsa.exe في system32 حتى استطيع فتحه في cmd وعندما فتحت الcmd قمت بكتابة اسم البرنامج "lsa.exe" ورأيت المعلومات في داخله فوجدت معلومة تفيد بأن اذا اردت فتح برنامج حتى لو كان فيه فراغات فعليك ان تضع المسار ما بين علامتي الاقتباس فقمت بعمل ذلك في برنامجي ووضعت الكود (Application.ExecutablePath) ما بين علامتي الاقتباس فاشتغل البرنامج مئة بالمئة ولم يحصل اي مشاكل

شكراً اخي على مساعدتك وارجوا ان يدخلك الله في فسيح جناته ويوفقنا في حياتنا والى مرضاته

#25

السلام عليكم

بالتوفيق أخي

Be the change you want to see in the world


مواضيع مشابهة