سؤال

أود خطوة من خلال كيفية السمندل يفعل ما يفعل ؟ وسوف تشمل بعض النقاط ايم مهتمة بشكل خاص في

-

الرابط على الطلب

رابط يبدأ مع دخول أساليب (والتي يمكنك تكوين), و بشكل متكرر يمشي الرسم البياني الدعوة إلى الرابط المطلوب فقط أجزاء من التعليمات البرمجية MSIL.غير مستخدمة لن تكون مرتبطة إلى التجميع النهائي.ولذلك التعليمات البرمجية الخاصة بك يصبح أكثر كفاءة و حجم الملف يصبح أصغر.

-

الرابط في إطار واجهات برمجة التطبيقات

رابط قوية جدا حتى أن مايكروسوفت .Framework ، مثل System.Windows.Forms.dll يمكن أن تكون مرتبطة إلى الخاصة بك .صافي الجمعيات.لأنه الروابط على الطلب, فقط مطلوب الجزء سوف تكون مرتبطة.هذا مفيد جدا في حماية التعليمات البرمجية الخاصة بك ، تطبيق بسيط ونشر مشكلة إطلاق النار من قبل التصحيح في إطار القانون نفسه.

-

الأم Compliation

الأم مترجم تحويل جميع تمكنت الجمعيات ، بما في ذلك نظام الجمعيات إلى x86 التعليمات البرمجية الأصلية.لا MSIL التعليمات سوف يتم شحنها لا جيت تجميع في وقت التشغيل.وهذا يوفر أفضل حماية ضد تفكيك وبتفريغ ، كما يحسن الأداء و وقت بدء التشغيل.

-

بسيطة وسريعة الانتشار دون كامل Microsoft .NET Framework التثبيت

مصغرة أداة نشر يضع معا مجموعة الحد الأدنى من CLR ملفات وقت التشغيل وتعتمد الجمعيات التي يمكن ببساطة نسخ إلى مجلد واحد على الجهاز الهدف ، يتم تشغيل التطبيق الخاص بك كما لو كان كله إطار تثبيت.منذ عزل تركيب في مجلد واحد ، لن يكون هناك أي صراعات في المستقبل .صافي التثبيت.عند ربط يستخدم تعتمد الجمعيات ، فإنه يؤدي إلى تقليل حجم الملف.

-

رمز الحماية هناك مشكلة واحدة أيا من الحالي obfuscators العنوان ، لا يهم كيف جيدة التشويش هو, هناك نظام المكتبة المكالمات وغيرها من المراجع الخارجية منتشرة في التعليمات البرمجية الخاصة بك (انظر الأحمر في أدناه).لأن هذه المكالمات الخارجية المراجع ، obfuscators يجب أن يترك لهم دون تغيير.غير أن هذه الإشارات يساعد كثيرا على فهم رمز decompiled ، لأنها موثقة جيدا واجهات برمجة التطبيقات العامة.رابط يزيل أو يقلل من هذه واجهات برمجة التطبيقات العامة من خلال ربط إطار واجهات برمجة التطبيقات في التعليمات البرمجية الخاصة بك ، وبالتالي يجعل التعليمات البرمجية الخاصة بك أكثر من ذلك بكثير من الصعب فك بعد التشويش.أدناه يوضح نموذج التعليمات البرمجية MSIL قبل وبعد رابط المستخدمة.

قبل:(لا obfuscators قادرة على إعادة تسمية البرمجية التالية, لأنها الخارجية واجهات برمجة التطبيقات العامة)

IL_0000:  ldarg.0
IL_0001:  call       instance void [System.Windows.Forms]System.Windows.Forms.Form::.ctor()
IL_0006:  ldarg.0
IL_0007:  newobj     instance void  [System.Windows.Forms]System.Windows.Forms.TextBox::.ctor()
IL_000c:  stfld      class [System.Windows.Forms]System.Windows.Forms.TextBox A.A::A
IL_0011:  ldarg.0
IL_0012:  ldfld      class [System.Windows.Forms]System.Windows.Forms.TextBox A.A::A
IL_0017:  call       valuetype  [System.Drawing]System.Drawing.Color [System.Drawing]System.Drawing.Color::get_Cyan()
IL_001c:  callvirt   instance void  [System.Windows.Forms]System.Windows.Forms.TextBoxBase::set_BackColor(valuetype [System.Drawing]System.Drawing.Color)
IL_0021:  ldarg.0

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

IL_0000:  ldarg.0
IL_0001:  call       instance void a.A::.ctor()
IL_0006:  ldarg.0
IL_0007:  newobj     instance void  D.c::.ctor()
IL_000c:  stfld      class D.c A.A::A
IL_0011:  ldarg.0
IL_0012:  ldfld      class f.aA.A::A 
IL_0017:  call  valuetype        a.B()
IL_001c:  callvirt  instance   void  D.c(valuetype g.e)
IL_0021:  ldarg.0  

بعض من هذه الأشياء يربك لي, و أنا أتساءل عما إذا كان أي شخص يعرف كيف يعمل ؟

هل كانت مفيدة؟

المحلول

الأم Compliation, بسيطة وسريعة الانتشار دون كامل Microsoft .NET Framework التثبيت ، رمز الحماية:

يتم تجميع "YourApp" + ".NetFramework في مواطن dll.هذا لا IL ورموز لا لذلك هو أصعب بكثير من الهندسة العكسية.

الرابط على الطلب ، الرابط في إطار واجهات برمجة التطبيقات:

للحفاظ على .dll معقولة الحجم ، فقد ترك الميت البرمجية (الكود الذي سوف أبدا أن يسمى) من dll.للقيام بذلك أنهم على الأقدام الدعوة الشجرة من جذورها ، عادة الرئيسية () ، و تشمل هذه الأساليب.قد يكون هناك مشاكل مع رمز استدعائه عن طريق انعكاس لذلك أعتقد أنها تسمح أكثر من 1 الجذر.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top