وداعا للعلامات النصيه في الvb.net2008

استعرض الموضوع السابق استعرض الموضوع التالي اذهب الى الأسفل

وداعا للعلامات النصيه في الvb.net2008

مُساهمة  مهند عجيب في الأربعاء يونيو 10, 2009 1:49 pm

بسم الله الرحم الرحيم
السلام عليكم .
في هذا الموضوع سوف نأخذ مقدمه عن التقنية الجديده التي ظهرت في دوت نت 2008 وهي :
>>>>>>>>>>>>>>>>>>>>>> > LINQ <<<<<<<<<<<<<<<<<<<<<
وهي اختصار ل LANGUAGE INTEGRATED QUERY وهي تقنيه جديده من مايكروسوفت تهدف ال بناء استعلامات قويه يمكن التحكم فيها من خلال بيئة الدوت نت 2008 , اضف الي ذلك توحيد جملة الاستعلام مهما يكن نوع قاعدة البيانات التي نتعامل معها , وهناك ثلاثة انواع رئيسية من الLINQ سنحاول التعرف علي اجزائها :
1- LINQ TO SQL
2- LINQ TO XML
3- LINQ TO OBJECTS
أبسط أنواع الاستعلام هي الاستعلام مباشرة إلى متغير من نوع ARRAY لنفترض المثال التالي:
CODE:
Public Class Developer
Public Name As String
Public Language As String
End Class
Dim developers As Developer() = new With { New Developer { .Name = " Ahmed",
.Language="C#" }, New Developer { .Name="Khaled", .Language="Java", New
Developer { .Name="Ali", .Languag="C++"} }
الكود السابق عباره عن تعريف كلاس يحتوي علي متغيرين والجزء الثاني عبارة عن نعريف متغير من نوع كلاس (الكلاس السابق) ويتم ادخال قيم المتغيرات .
والان يمكننا كتابة الاستعلام التالي :
Dim LINQresult As IEnumerable(Of String) = From d In developers Where (d.Language = "C
Select d.Name

ولطباعة النتيجة نستخدم الشفره التاليه
For Each s As String In LINQresult
MessageBox.Show(s)
Next

هذا بالنسبه للنوع الثالث وهو الاستعلام من OBJECT وانشاء الله في المرات القادمة سوف نحكي عن النوعين الاخرين.
وبذلك نجد انه يمكنك كتابه استعلام بلغة الدوت نت من غير ما تستخدم الطريقه القديمة والتي تحتوي علي علامات تنصيص وعلامة الدمج وغيره
تزكير بالطريقه القديمه:
SELECT *FROM TABLE_NAME WHERE COLUMN="&VAL(TEXTBOX1.TEXT)&"
avatar
مهند عجيب
البرونزية
البرونزية

عدد الرسائل : 18
العمر : 32
العنوان : مدني _ حي الكريبة
تاريخ التسجيل : 08/06/2008

معاينة صفحة البيانات الشخصي للعضو

الرجوع الى أعلى الصفحة اذهب الى الأسفل

رد: وداعا للعلامات النصيه في الvb.net2008

مُساهمة  لينكساوي في الأربعاء يونيو 10, 2009 10:25 pm

الاخ المبدع مهند شكرا جزيلا

استفدت كثيرا من مقالك هذا

عندي بعض الاسئلة لو امكن في مقدورك الاجابة عليها مشكورا

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

بس في الآونة الاخيرة اصبح كثير من الناس يقومون بتحويل البرنامج الذي تمت تبكيجته الى لغة الاسمبلي او السي او السي بلس بلس ومن ثم فهم مكامن الحماية وتخطيها

هل هناك دورات متخصصة في هذا المجال ودرس منتشرة بين المبرمجين لكسر البرامج والحماية منها؟


السؤال الثاني: ما مدى التوافقية بين اصدارات الدوت نت المختلفة في بي 6 و 2003 2008 و ...

هل التوافقية كاملة كاملة ام ان شركة مايكروسوفت تعطي تحديثات من اجل التوافقية.


كمتخصص في البرمجة: هل فكرت بالتعامل مع لغات ثانية مثل الجافا التي يسمونها "جافا كل شي" حيث تحتوي كل شئ مجان وكتابة الكود هو في نفس البيئة سواء كانت للوب او الديسكتوب او الموبايل وخاصة بعد ان اشتراها المخضرم لاري ايلسون "المدير التنفيذي لاوراكل ورابع اغنى رجل في العالم" حيث وعد بتطوير رهييييييييب

آسف ان كنت اطلت عليك

رابط جافا كل شئ:
http://www.youtube.com/watch?v=SRLU1bJSLVg
رابط لاري ايلسون:
http://en.wikipedia.org/wiki/Larry_Ellison
http://en.wikipedia.org/wiki/List_of_billionaires_(2009)

كل الود

لينكساوي
البرونزية
البرونزية

عدد الرسائل : 94
تاريخ التسجيل : 04/02/2008

معاينة صفحة البيانات الشخصي للعضو

الرجوع الى أعلى الصفحة اذهب الى الأسفل

مستويات الحمايه

مُساهمة  مهند عجيب في الخميس يونيو 11, 2009 8:25 pm

بسم الله الرحمن الرحيم
السلام عليك اخ محمد عباس
بالنسبه لموضوع الحمايه :
هناك عدة طرق لحمايه البرامج او الانظمه من السرقه ولكنها محاولات لن تصمد كثيرا امام الهاكرز المحترفين ولكنها جيده الي نوع ما
بالنسبه للمبرمج فانه يهتم بالكود الذي قام بكتابته فيقوم بحمايته ولا بتهم بالبرنامج كلل لان هناك وسيله تمنع السارق من الاستفاده من البرنامج .
وفي السطور التاليه ساحاول التحدث عن بعض هذه الطرق :
أولا حمايه الكود او الشيفره :
وهناك عدة طرق :
* استخدام الادوات الجاهزه لعمل تحزيم لبرنامج باحترافيه وهذه الادوات او البرامج تحتوي علي قدر عالي من الحمايه فمنها مثلا :
الاداه Dotfuscator Community edition وهي اداه تقوم بتشفير جميع الدوال والمتغيرات التي ببرنامجك وبالتالي حتي متتبع الاخطاء في framework لن يستطيع معرفة الداله او المكان الذي به الخطأ وليس هذا فحسب بل تقوم بتشفير ملفات الdll الخاصه بالبرنامج وهي اداه متوفره في VB.NET 2005 و VB,NET2008 ومجانيه (علي ان النسخه المجانيه لا تحتوي علي جميع المميزات ولكنها كافيه) , هذه الاداه ليست من انتاج شركة مايكروسوفت . والان اليكم طريقة عمل هذه الاداه :
بعد إتمام مشروعكم المبارك قم ببناؤه Build, ستجد عندك الملف التنفيذي exe أو dll في مجلد debug أو release حسب إعداداتك,,,

من القائمة tools داخل IDE الخاصة ب Visual studio اختر الأداة Dotfuscator Community edition
من البرنامج الي سيظهر لك أختر Register أو Don't register كما تحب لتسجيل اسمك في موقع الأداة
ثم ستظهر لك نافذة جديدة اختر منها Create New Project
أنسى كل ما تراه أمامك وانتقل إلى التبويب (إدخال) Input tap
إضغط على علامة (فتح) أو إدخال التي ستظهر لك نافذة اختر منها تصفح Browse
اختر الملف التنفيذي الذي تريد (يمكنك أن تختار exe أو dll)
والآن بعد أن أضفت ملفك إذهب إلى التبويب بناء Build tap
حدد ملف الوجهة Destination directory الذي سيتم حفظ الملف المشفر فيه
ثم اضغط على زر Build

وهكذا يكون لديك ملف تنفيذي مشفر ومحمي بنسبة لا تقل عن 90% , وهذا الملف يكون محمي من برامج فك التشفير مثل Refractor

* طريقة التشفير وهي الطريقة الثانيه في حماية الكود وهي عباره عن كتابة كود يقوم بتشفير الكود بتاعك
كيف ؟ !
تقوم بكتابة جميع الشفره للنظام في ملف كود الموجود في .net وتستطيع الحصول علي الملف من add new items ثم اختيار code file
وبعد ذلك نقوم بكتابة شيفرة تقوم بتشفير هذا الملف وبعدها يمكنك استخدام الاداه اعلاه لحمايه الكود الذي يحتوي علي كود التشفير , وهذا مثال لتشفير ملف نصي وفك شيفرته :
لعمل تشفير :
Dim fStream As FileStream = File.Open("encrypted.txt", FileMode.OpenOrCreate)
Dim RijndaelAlg As Rijndael = Rijndael.Create
Dim cStream As New CryptoStream(fStream, _
RijndaelAlg.CreateEncryptor(RijndaelAlg.Key, RijndaelAlg.IV), _
CryptoStreamMode.Write)
Dim sWriter As New StreamWriter(cStream)
sWriter.WriteLine("Text to encrypt")
sWriter.Close()
cStream.Close()
fStream.Close()
لفك التشفير :
Dim fStream As FileStream = File.Open("encrypted.txt", FileMode.OpenOrCreate)
Dim RijndaelAlg As Rijndael = Rijndael.Create
Dim cStream As New CryptoStream(fStream, _
RijndaelAlg.CreateDecryptor(RijndaelAlg.Key, RijndaelAlg.IV), _
CryptoStreamMode.Read)
Dim sReader As New StreamReader(cStream)
Dim plainText As String = sReader.ReadLine()
sReader.Close()
cStream.Close()
fStream.Close()
هذا بالنسبه لحماية الكود .
اما بالنسبة لحماية البرنامج بحيث لا يستطيع المستخدم تنزيله اكتر من مرة واحده فهناك كود يقوم باخذ رقم القرص الصلب الذي يتم انزال البرنامج فيه اول مره ويقوم بحفظ هذا الرقم في قاعدة البيانات او في الرجيستري وبالتالي لن يعمل البرنامج الا في قرص واحد فقط وهو اول قرص تم انزال البرنامج فيه, واليكم الكود الذي يقوم بذلك :

PublicFunction HardCode() AsString
Dim Ret AsString
Dim DriveLetter AsString = Application.StartupPath.Substring(0, 3)
Dim obj_FSO AsObject, obj_Drive AsObject
obj_FSO = CreateObject("Scripting.FileSystemObject")
obj_Drive = obj_FSO.GetDrive(DriveLetter)
Ret = obj_Drive.SerialNumber
obj_FSO = Nothing
obj_Drive = Nothing
Ret = NewString("0", 8 - Ret.Length) & Ret
Return Ret
EndFunction
حيث kd هو رقم القرص الصلب ولكن هذه الطريق تكون غير مفيده اذا قام المستخدم بعمل format للقرص لذلك هاك طريقه اخري باخذ رقم كرت الشبكة وسوف اشرح لكم في الايام القادمه انشاء الله هذه الطريقة .
هذه بعض الافكار ولكن كما قلت هي كلها محاولات لانه ليس هناك كبير علي الهاكرز ولكننا نقول انهم اناس مثلنا ويقومون بالتفكير حتي يتوصلو الي برامج تقوم بالاختراق فلنحاول بكل الطرق وربما كسبنا الحرب معهم في الاخر.
وفي النهايه انا اري انه من الافضل استخدام stored procedure والتريقر في عمل الشفره , يعني كل الكود يكون في الdatabase ونقوم باستدعاء الدوال فقط في الواجهات وبي كده نكون استفدنا من مستويات الحمايه التي توفرها شركات التي تقوم بانتاج قواعد البيانات مثل اوراكل وسكويل سيرفر وغيرها .
اما بالنسبه لسوال الاخ محمد عن اصدارات الدوت نت المختلفه فانا بقول انه لاتوجد اي علاقه بين الvb6 واصدارات الvs.net اما بالنسبه لاصدارات الvs.net فانه جميعها تقريبا متشابهة ولاتحتوي علي فروقات ىفي المضمون بل كل الحكايه عباره عن تقنيات بتظهر في كل اصدار (يعني زيادة الخير خيرين ) اما من ناحية الاستخدام فيمكنك استخدام اي اصدار من 2003 الي 2010 . وبيني وبينكم مايكروسوفت عايزه قروش تقوم تعمل ليها تقنيات جديده وتخلي الناس تشتري المنتج الجديد , طبعا ناس السودان مرتاحين (نسخ بس ) اصلي مافي . عشان كده ناس مايكروسوفت واضعه السودان من الدول الارهابيه وما ممكن تمتحن اي امتحان عندها اذا كنت سوداني .ههههه
اما بالنسبه للغات البرمجه الاخري فانا غايتو باري انو ترتيب اللغات من حيث الفخامه كالاتي :
جافا
سي شارب
دوت نت
والله اعلم
وانا حاليا بدرس في سي شارب ليس لترك الدوت نت ولكن زيادة معرفه وانشاء الله لولقيت طريقه حادرس الجافا
ارجوا ان اكون قد وفقت في اجابة اخي محمد علي تساؤلاته ونرجو الله ان يفيدنا واياكم ....
اذا كنت قد وفقت فمن الله واذا اخطات من الشيطان
avatar
مهند عجيب
البرونزية
البرونزية

عدد الرسائل : 18
العمر : 32
العنوان : مدني _ حي الكريبة
تاريخ التسجيل : 08/06/2008

معاينة صفحة البيانات الشخصي للعضو

الرجوع الى أعلى الصفحة اذهب الى الأسفل

رد: وداعا للعلامات النصيه في الvb.net2008

مُساهمة  لينكساوي في الجمعة يونيو 12, 2009 8:38 pm

وعليك السلام
الاخ مهند لك كل التحايا مني .... شرح جامد صراحة ;-)

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


كما قلت مسألة التشفير ممكن تساعد في اعاقة عمل الهندسة العكسية للبرامج "تحويله الى لغة السي او الاسمبلي" ولكن ممكن كيف؟ بسبب ان التشفير فقط يكون في الهارد ديسك او اي وسيلة تحزين دائمة، اما اذا اردت تنفيذه لا بد ان يفك التشفير عنه وذلك ان المعالج لا يفهم الكلام المشفر اي يتم فكه في الرام ومن ثم ارساله للمعالج غير مشفر وفي هذه الحالة يمكن نسخ الكود وتطبيق الهندسة العكسية عليه ;-(

اتوقع تطبيق التالي قد يساعد في الحماية:

- السلاح الاول والاخير عن طريق التطوير من قبل فريق التطوير "الفريق يكون متابع لاي تقنية جديدة ومن ثم يحاول ان يوجد حل لها"
- التمسك والرجوع للمحاكمة للمطالبة بالحقوق "دي لازم يكون في قسم للجرائم الالكترونية في المحاكم يقومون بالمحاكة واخذ الحقوق لمن خالفها كأن تكون غرامة "
- ارى في الاونة الاخير كثيرا من مطوري البرامج يسمحون للنسخة التجريبية اون لاين فقط على الانترنت "اي لن يعطوك برنامج تنزله الذي قد يستخدم في الهندسة العكسية reverse engineering"

هذا من جهة، ومن الجهة الثانية وهي الاهم هل البرنامج خاليا من الثغرات الداخلية؟؟ مثل
Buffer Over follow, SQL Injection, Cross Site Scripting (XSS), and so on

هذه هي التي ينبقي ان يولي اليها الاهتمام الاكبر, لماذا؟ الجواب هو:
لو في البرنامج الذي برمجه فريق التطوير ثغرة Buffer Overfollow ممكن تؤدي ليس الى اختراق اليرنامج فقط، بل نظام التشغيل كاملا!

ايضا لابد ان يكون افريق المطور دورة حياة لتطوير البرامج او الانظمة "Secure Software Development Life Cycle"
وهي عبارة عن عدد من المراحل للتطوير المتسلسلة للبرنامج من التخطيط حتى الصيانة وخدمات ما بعد البيع.


ولنا متابعة انشاء الله ...... ;-)



لينكساوي
البرونزية
البرونزية

عدد الرسائل : 94
تاريخ التسجيل : 04/02/2008

معاينة صفحة البيانات الشخصي للعضو

الرجوع الى أعلى الصفحة اذهب الى الأسفل

استعرض الموضوع السابق استعرض الموضوع التالي الرجوع الى أعلى الصفحة


 
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى