|
إنضمامك إلي منتديات استراحات زايد يحقق لك معرفة كل ماهو جديد في عالم الانترنت ...
انضم الينا
#1
| ||
| ||
السلام عليكم ورحمة الله وبركاته أعزائي المبرمجين المشاغبين منذ فترة كنت أبحث عن طريقة لحماية تطبيقاتي المكتوبة بوساطة الدوت نت من ((إعادة هندسة الكود)). ولم أجد موقعاً عربياً يفيد بما فيه الكفاية، في حين كانت المواقع الأخرى تزدحم بمواضيع حماية الكود. فقررت أن أطرح موضوعاً متكاملاً لحماية تطبيقاتنا وبرامجنا العربية المكتوبة على الدوت نت من أخطار التكريك وذلك لأن موضوع الحماية الفكرية والبرمجية أمر يهمني جداً وأوليه اهتماماً كبيراً. على أي حال لنبدأ المناقشة: أولا: ما هو مفهوم (( إعادة هندسة الكود )) ؟ قد يتسائل البعض عن معنى مصطلح ((إعادة هندسة الكود)) عندما قرأه في المقدمة، لذلك سأقدم شرحاً موجزاً عن معنى هذا المصطلح. إن من أكثر الطرق انتشاراً لحماية البيانات بشكل آمن هو تخزينها في قواعد بيانات وحمايتها بكلمة مرور، وبالتأكيد سنستخدم كلمة المرور هذه في الكود التابع للمشروع. ولكن هناك أمر أهم من حماية البيانات وهو حماية الكود. وكما نعلم أن تطبيقات الدوت نت هي تطبيقات تتحول فيما بعد إلى لغة قريبة جداً من الأسمبلي، حيث إن هذا الكود يترجم في وقت التنفيذ من قبل الـ CLR (JIT). إذاً باستطاعة أي محرر أسمبلي العبور من هذه البوابة ويكتشف كودك بالكامل، ولذلك باستطاعة أي مبرمج محترف كان أو مبتدأ أن يحصل على الكود باستخدام مولد أكواد. هناك الكثير من مولدات الأكواد منتشرة على الإنترنت ولكن أعظمها وأخطرها ذاك الذي يستطيع أن يعطيك حتى ملفات المشروع كاملةً وكأنك كنت تصممه وتعمل عليه وهو Lutz Roeder's Reflector ويمكنك تحميله مجاناً من هنا. إن هذه العملية التي تعطيك الكود المصدري للبرامج والتطبيقات المكتوبة على الدوت نت تسمى إعادة هندسة الكود أو Reverse Engineering . ثانيا: مثال على إعادة هندسة الكود: لنقم بكتابة مشروع صغير يساعدنا على فهم معنى إعادة هندسة الكود، ونستخدم لذلك مولد الأكواد Lutz Roeder's Reflector. افتح الفيجوال استوديو وأنشئ مشروع Console Application. لمبرمجي الـ C# اكتب الكود التالي: كود PHP: <span style="color: #000000">namespace CodeProtection { class Program { static void Main(string[] args) { MyClass myclass = new MyClass(); string msg = "Hello Absba, welcome to Code Protection Example"; int rep = 5; myclass.MyMethod(msg, rep); } } class MyClass { public void MyMethod(string msg, int rep) { for (int l = 0; l <span style="color: #007700">Module CodeProtection Sub Main() Dim cls As New MyNewClass() Dim msg As String = "Hello Absba, welcome to Code Protection Example" Dim rep As Integer = 5 cls.MyMethod(msg, rep) End Sub Class MyNewClass Public Sub MyMethod(ByVal msg As String, ByVal rep As Integer) Dim i As Integer For i = 0 To rep Console.WriteLine(msg) Next i End Sub End Class End Module الآن بعد ترجمة التطبيق قم بفتح الـ Reflector وافتح التطبيق الذي أنشأناه استكشف الآن تطبيقك بسلاسة ويسر. وانظر إلى الكود الذي كتبناه: ويمكنك رؤية الكود بأكثر من لغة: IL , C#, Visual Basic, MC++, Delphi, Chrome ثالثاً: ما هو حل المشكلة؟ لحل المشكلة، طرحت شركة PreEmptive Solutions برنامجها Dotfuscator وقد تبنت شركة Microsoft هذا الحل وأدخلته مع حزمتها Visual Studio ولكن النسخة التي أدخلتها مايكروسوفت هي Community Edition بمعنى، أن هذه النسخة محدودة الوظائف ولا تعطيك كامل المزايا ولكنها تؤدي الغرض المطلوب لحماية أكوادنا. إن فكرة Dotfuscator تقوم على تغيير المتغيرات وبعض الأسطر إلى رموز أخرى، بمعنى آخر، تحويل الكود إلى كود آخر يصعب فهمه! أي أن الهكر الذي يريد أن يكسر برنامجك سيجد صعوبة في فهم الكود وفكه، وهذا ما نريده نوعاً ما. رابعا: كيفية ((تشويش)) الكود: بعد ترجمة الكود والحصول على الناتج النهائي للتطبيق (*.EXE أو *.DLL) نفتح الـ Dotfuscator من بيئة التطوير Visual Studio 2008 (هذا ما أستخدمه): Tools --> Dotfuscator Community Edition ستظهر لك نافذة تطلب منك التسجيل. اختر No, I don’t want to register اتبع الشرح الآن: من Options لدينا خيار واحد فقط على اعتبارنا نستخدم إصدار Community Edition وهو Disable Renaming الذي يقوم بتغيير المتغيرات وأسماء الـ functions بطريقة تجعلها صعبة الفهم، فقيمة Yes تلغي هذا الخيار وقيمة No تفعله. طبعاً نحن نريد تفعيل وإلا لما لجأنا للـ Dotfuscator ![]() من Input نختار Honor obfuscation Attributes و Library و Strip Obfuscation Attributes انظر الصورة: الآن من Build تستطيع اختيار موقع الهدف (الذي سينشأ فيه التطبيق المشوش) ومن ثم نبدأ عملية التشويش بالنقر على زر Build. انظر الصورة: الآن لقد انتهينا من حماية التطبيق يمكنك استكشاف التطبيق الجديد من خيار Output أو من خلال الـ Reflector. انظر إلى الكود قبل وبعد: ![]() ![]() أخيراً آمل أن يكون الشرح واضحاً لديكم فقد بذلت ما أستطيع لتبسيطه وإيصاله إلى مختلف المستويات. وآمل أني أفدتكم في حماية برامجكم من الاختراق والتهكير والحفاظ على الملكية الفكرية العربية. وأنا جاهز للإجابة عن أي سؤال يدور في بالكم. كما يمكنكم نقل الموضوع مع الحفاظ على اسم الكاتب (جميع الحقوق محفوظة ![]() أنتظر تعليقاتكم وآرائكم وتقييمكم للموضوع ![]() ملاحظة: هناك بعض الجمل المقتبسة من أحد المواضيع الأجنبية. __DEFINE_LIKE_SHARE__ |
مواقع النشر (المفضلة) |
| |
![]() | ||||
الموضوع | كاتب الموضوع | المنتدى | مشاركات | آخر مشاركة |
الحق بسرعة Microsoft .NET Framework 4 | محروم.كوم | منتدى أخبار المواقع والمنتديات العربية والأجنبية | 0 | 06-20-2009 09:40 PM |
[ برنامج ] : حصرياً Microsoft. NET Framework 3.5 وحزمة التحديثات SP1 | محروم.كوم | منتدى أخبار المواقع والمنتديات العربية والأجنبية | 0 | 06-03-2009 06:30 AM |
موعدكم اليوم مع الاصدار المنتظر Microsoft .NET Framework 4 من عقر دار مايكروسوفت | محروم.كوم | منتدى أخبار المواقع والمنتديات العربية والأجنبية | 0 | 05-24-2009 12:40 AM |
برنامج Microsoft .NET Framework 3.5 Service Pack 1 ضروري لكل جهاز | محروم.كوم | منتدى أخبار المواقع والمنتديات العربية والأجنبية | 0 | 04-17-2009 04:40 AM |
برنامج Microsoft .NET Framework 3.5 Service Pack 1 ضروري لكل جهاز | محروم.كوم | منتدى أخبار المواقع والمنتديات العربية والأجنبية | 0 | 04-15-2009 06:50 AM |