تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
ملفات dll
#1
السلام عليكم ايها الاساتذة الكرام

اريد حماية المشروع بطريقة تحويله الى ملفات dll ثم استدعيها داخل المشروع Smile Smile
اتمنى ان يكون سؤالي واضح وشكرا
الرد }}}
تم الشكر بواسطة:
#2
الموضوع ده تحديدا صداع كبير جدا
لكن
اسهل طريقة هي انك تبني ملفات dll و تقوم بتحويل تلك الملفات الي مصفوفة Byte ثم تحفظها في ملف عادي علي هيئة مصفوفة او تحفظ المصفوفة في ملف داتابيز  مثلا
هذا الملف سيكون جزءا من برنامجك الرئيسي

ثم وحين تحتاج ملف dll معين تقرأ المصفوفة الخاصة به من الملف
و تمررها الي Assembly.Load وهي تقبل متغيرا عبارة عن مصفوفة Byte
بمجرد ان تفعل هذا سيكون ملف dll اصبح في ذاكرة الكمبيوتر
ثم بعد ان يكون الملف في ذاكرة الكمبيوتر هنا تحتاح ان تستخدم Assembly GetType بأن تمرر اسم اي كلاس تريد استخدامه حتي تحصل عليه من ملف dll
ولتفعل ذلك بسهولة أنت تحتاج الي كوبري يربط برنامجك مع ملف dll
هذا الكوبري سيكون عبارة عن Interface بين ملف dll و بين برنامجك

فقط المشكلة الوحيدة التي سوف تقابلك لاحقا هي أن ملف dll سيكون موجودا في الذاكرة الخاصة بالكمبيوتر أثناء تشغيل برنامجك
وهنا ما يمكن أن تخشاه هو شحترف جدا جدا الذي ربما يستطيع ان يحصل علي االكود الخاص بملف dll  من الذاكرة
و الحل للهروب من تلك المشكلة  هو ان تقوم بعمل Unload لملف dll  الخاص بك او إنك تعمل Encrypt للذاكرة او انك تقرا و تكتب  في الذاكرة الخاصة بالكمبيوتر

للأسف ان كل ملف dll قد يختلف عن الاخر بسبب اختلاف البيانات الموجودة فيه و بالتالي سيكون عليك ان تنفذ الفكرة اعلاه لكل ملف لوحده
عموما أنا لم أتعمق كثيرا في دراسة Assembly لكي أستطيع أن أجد علاقة ثابتة أستطيع من خلالها ان ابني كلاس عام ينفع مع اي ملف dll

أنا عارف ان كلامي قد يبدو غامضا او قد يبدو غير واضح جدا لك
لكن كلامي هذا هو الوحيد الذي يجيب علي سؤالك خاصة ان كنت تريد أن تكتب كل شئ بنفسك


أخر شئ و اسمح لي أقوله و هو يعبر عن رأي خاص بي شخصيا
المبرمجين خارج حدودنا العربية ب يتحدوا مع بعض لإيجاد حلول للمشاكل خاصة و ان كل مبرمج يكون قوي في جزئية معينة
لكن احنا العرب اتعودنا ان كل واحد بيقول نفسي ثم نفسي و بس
الرد }}}
تم الشكر بواسطة: bidaya , محمود بكرى , dubai.eig , dubai.eig
#3
(04-05-17, 07:36 PM)silverlight كتب : الموضوع ده تحديدا صداع كبير جدا
لكن
اسهل طريقة هي انك تبني ملفات dll و تقوم بتحويل تلك الملفات الي مصفوفة Byte ثم تحفظها في ملف عادي علي هيئة مصفوفة او تحفظ المصفوفة في ملف داتابيز  مثلا
هذا الملف سيكون جزءا من برنامجك الرئيسي

ثم وحين تحتاج ملف dll معين تقرأ المصفوفة الخاصة به من الملف
و تمررها الي Assembly.Load وهي تقبل متغيرا عبارة عن مصفوفة Byte
بمجرد ان تفعل هذا سيكون ملف dll اصبح في ذاكرة الكمبيوتر
ثم بعد ان يكون الملف في ذاكرة الكمبيوتر هنا تحتاح ان تستخدم Assembly GetType بأن تمرر اسم اي كلاس تريد استخدامه حتي تحصل عليه من ملف dll
ولتفعل ذلك بسهولة أنت تحتاج الي كوبري يربط برنامجك مع ملف dll
هذا الكوبري سيكون عبارة عن Interface بين ملف dll و بين برنامجك

فقط المشكلة الوحيدة التي سوف تقابلك لاحقا هي أن ملف dll سيكون موجودا في الذاكرة الخاصة بالكمبيوتر أثناء تشغيل برنامجك
وهنا ما يمكن أن تخشاه هو شحترف جدا جدا الذي ربما يستطيع ان يحصل علي االكود الخاص بملف dll  من الذاكرة
و الحل للهروب من تلك المشكلة  هو ان تقوم بعمل Unload لملف dll  الخاص بك او إنك تعمل Encrypt للذاكرة او انك تقرا و تكتب  في الذاكرة الخاصة بالكمبيوتر

للأسف ان كل ملف dll قد يختلف عن الاخر بسبب اختلاف البيانات الموجودة فيه و بالتالي سيكون عليك ان تنفذ الفكرة اعلاه لكل ملف لوحده
عموما أنا لم أتعمق كثيرا في دراسة Assembly لكي أستطيع أن أجد علاقة ثابتة أستطيع من خلالها ان ابني كلاس عام ينفع مع اي ملف dll

أنا عارف ان كلامي قد يبدو غامضا او قد يبدو غير واضح جدا لك
لكن كلامي هذا هو الوحيد الذي يجيب علي سؤالك خاصة ان كنت تريد أن تكتب كل شئ بنفسك


أخر شئ و اسمح لي أقوله و هو يعبر عن رأي خاص بي شخصيا
المبرمجين خارج حدودنا العربية ب يتحدوا مع بعض لإيجاد حلول للمشاكل خاصة و ان كل مبرمج يكون قوي في جزئية معينة
لكن احنا العرب اتعودنا ان كل واحد بيقول نفسي ثم نفسي و بس

الله يبارك فيك اخي الكريم على كلامك ##احنا العرب اتعودنا ان كل واحد بيقول نفسي ثم نفسي و بس## كلام منطقي وفي الصميم  ومعك الف مليار حق
واذ اكملنا بهذه الطريقة لن نذهب بعيدا سنبقى دائما في المراكز السفلى  اي لن نتسيد اي شيء حتى في ابسط الاشياء
الله يجازيك بالف خير
الرد }}}
تم الشكر بواسطة: abiza
#4
قد تقصر الحياة وقد تطول، فكل شيء مرهون بالطريقة التي نحياها بها
الرد }}}
تم الشكر بواسطة:
#5
اين اخواننا المبرمجين
الرد }}}
تم الشكر بواسطة:
#6
للرففففففع
الرد }}}
تم الشكر بواسطة:
#7
الأخ بداية

اولا :عليك ان تفتح مشروع عادي جدا

ثانيا: من قائمة File ..... أختار Add ....... ثم أختار New Project
ثم اختار من النافذة التي سوف تظهر لك مشروع من النوع Class Library و أعطه اسما مناسبا و ليكن الاسم مثلا  BidayaGate
وهذا المشروع سوف تضف له مجموعة من  Interface
بحيث أن كل Interface سيؤدي مهاما معينة و ان كنت لا تعرف كيف تكتب الكود الخاص بأي Interface عليك هنا أن تدرس كيف تفعل هذا
هذا المشروع سيعمل بمثابة الكوبري بين برنامجك الأصلي و بين الكود الفعلي الذي سيتم كتابته في الخطوة التالية

ثالثا: الأن تضيف Class Library أخر و هو الذي سيكون به الكود الفعلي
من قائمة File ..... أختار Add ....... ثم أختار New Project 
ثم اختار من النافذة التي سوف تظهر لك مشروع من النوع Class Library و أعطه اسما مناسبا و ليكن الاسم مثلا  Code[b]BidayaGate[/b]


باستخدم AddReference من قائمة Project عليك ان تضيف نسخة من Library الناتج من الخطوة الثانية بعد ان تكون عملت Build له
وتقوم بعمل Implementation لكل Interface موجود بها

و تكتب الكود في كلاسات مختلفة تناسب كل Interface

بعد أن تنتهي من هذه المراحل سوف أكمل لك ماذا سوف تفعل لاحقا
الرد }}}
تم الشكر بواسطة: bidaya
#8
(08-05-17, 03:23 PM)silverlight كتب : الأخ بداية

اولا :عليك ان تفتح مشروع عادي جدا

ثانيا: من قائمة File ..... أختار Add ....... ثم أختار New Project
ثم اختار من النافذة التي سوف تظهر لك مشروع من النوع Class Library و أعطه اسما مناسبا و ليكن الاسم مثلا  BidayaGate
وهذا المشروع سوف تضف له مجموعة من  Interface
بحيث أن كل Interface سيؤدي مهاما معينة و ان كنت لا تعرف كيف تكتب الكود الخاص بأي Interface عليك هنا أن تدرس كيف تفعل هذا
هذا المشروع سيعمل بمثابة الكوبري بين برنامجك الأصلي و بين الكود الفعلي الذي سيتم كتابته في الخطوة التالية

ثالثا: الأن تضيف Class Library أخر و هو الذي سيكون به الكود الفعلي
من قائمة File ..... أختار Add ....... ثم أختار New Project 
ثم اختار من النافذة التي سوف تظهر لك مشروع من النوع Class Library و أعطه اسما مناسبا و ليكن الاسم مثلا  Code[b]BidayaGate[/b]


باستخدم AddReference من قائمة Project عليك ان تضيف نسخة من Library الناتج من الخطوة الثانية بعد ان تكون عملت Build له
وتقوم بعمل Implementation لكل Interface موجود بها

و تكتب الكود في كلاسات مختلفة تناسب كل Interface

بعد أن تنتهي من هذه المراحل سوف أكمل لك ماذا سوف تفعل لاحقا
لا أدري من أين أبدأ كلامي
فعلا أنت انسان طيب و استاذ بمعنى الكلمة
الله يجازيك بخير وساطبق بالحرف ما قلته لي  اخي الكريم
بعد المطلوب مني انشاء الله سانكمل
شلف شكر مرتا أخرى
الرد }}}
تم الشكر بواسطة:



التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم