• 0
hosamhamdy

هل يمكن جعل الملفات الديناميكيه dll لا تعمل الا مع برنامجي فقط

سؤال

هل يمكن جعل الملفات الديناميكيه dll لا تعمل الا مع برنامجي فقط بمعني انني قمت بتصميم ملف dll ولكني اريد استخدامه بكلمة سر تستخدم في الكود البرمجي لبرنامجي

 

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

4 إجابة على هذا السؤال .

  • 0

تستطيع بأبسط شكل

تمرير كلمة مرور أو قيمة معيّنة إلى التوابع الموجودة في الملف

وهناك يتم تنفيذ خوارزمية معينة للتحقق من تطابقها وحينها يتم تنفيذ التابع أو يعيد قيم فارغة.

 

مثلاً:

مرر كلمة طويلة ومعقّدة

في التوابع قم بحساب MD5 hash لهذه الكلمة وقم بمطابقتها مع قيمة مخزنة مسبقاً في الملف.

 

من يحصل على الملف فقط لا يمكنه الحصول على الكلمة التي تقوم بتمريرها لأنه من الصعب الوصول إلى الكلمة من الـ hash إن كان طويلاً ومعقداً

 

الحل الوحيد لتجاوز هذه الحماية هي بالحصول على الكلمة من برنامجك أو التعديل على ملف DLL لتجاوز التحقق.

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

شكرا على هذه المعلومه القيمة

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

حاولت اكثر من مرة تنفيذ هذه الطريقة ولكن لم استطع هل يمكن وضع مثال

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

السلام عليكم ورحمة الله وبركاته

 

قمت بعمل مثال على السريع لإحدى الأفكار التي خطرت لي بهذا الخصوص

 

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

 

ولا شك أي استدعاء لمكونات المكتبة بدون معرفة معادلة المطابقة سيرمي خطأ ولن يستطيع تشغيلها إلا هاكر

 

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

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

 

كان بالإمكان وضع قيمة واحدة ثابتة وفحصها كما تفضل الإخوة ولكن حتى نصعب الموضوع على الهاكر قليلا :)

 

المكتبة :

 

using System;using System.Collections.Generic;using System.Linq;namespace PrivateDllLib{    public class PrivateDll    {        public PrivateDll()        {            Authorizer.CheckAuthorization();        }        public void Method1()        {            // Do some thing.        }        public void Method2()        {            // Do some thing.        }        public static bool Method3()        {            Authorizer.CheckAuthorization();            // Do some thing.            return true;        }    }    public class Authorizer    {        public static int Key { get; set; }        public static int ResponseKey { get; set; }        public static void CheckAuthorization()        {            int tmp = (((Key + 23) * 7) - 11) * 2;            if (ResponseKey != tmp)                throw new EntryPointNotFoundException();        }    }}

 

و الاستدعاء من قبل تطبيقك

 

using PrivateDllLib;using System;using System.Collections.Generic;using System.Linq;using System.Windows;namespace YourApplication{    /// <summary>    /// Interaction logic for MainWindow.xaml    /// </summary>    public partial class MainWindow : Window    {        public MainWindow()        {            InitializeComponent();            int Key = new Random(1000).Next(1000);            Authorizer.Key = Key;            Authorizer.ResponseKey = (((Key + 23) * 7) - 11) * 2;        }        private void btnCallStaticMethod_Click(object sender, RoutedEventArgs e)        {            if (PrivateDll.Method3())                MessageBox.Show("Method3 has return true.");        }        private void btnCreateInstnce_Click(object sender, RoutedEventArgs e)        {            PrivateDll pd = new PrivateDll();            if (pd != null)                MessageBox.Show("Instance has created.");            pd.Method1();        }    }}

 

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

 

 

المثال كاملا

 

PrivateDll.rar

 

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

من فضلك سجل دخول لتتمكن من التعليق

ستتمكن من اضافه تعليقات بعد التسجيل



سجل دخولك الان

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .