التنبيهات التالية ظهرت :
Warning [2] count(): Parameter must be an array or an object that implements Countable - Line: 864 - File: showthread.php PHP 7.4.33 (Linux)
File Line Function
/showthread.php 864 errorHandler->error



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

في هذا الموضوع سأوضح كيف يتم تشفير الملفات التي لها امتداد مثل Exe أو Executable Files
أيضا سأجتهد أن اوضح كيف يتم تشفير ملفات dll او Data Linked Library Files

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

وبدون الدخول في كلام نظري لنضع بعض الأمثلة

المثال الأول

هذا المثال بالفعل أن كتبته بشكل مبسط في قسم الأمثلة
و ستحدونه في اللينك التالي
حماية الملفات التنفيذية

اسمحوا لي فقط أن أعيد صياغة الكود الموجود في المثال حتي أوضح شيئا هاما
وهنا سوف أضيف الملف التنفيذي الي Resources المشروع و أجعل Build Action الخاص به Embedded Resource
حتي أضمن أنه لا يتم نسخ الملف الأصلي الي فهرس المشروع


PHP كود :
       ' نقرأ الملف من الريسورس
        Dim fileBytes As Byte() = My.Resources.KittyCat

        ' 
نحدد اسما و مسارا للملف 
        Dim fileNameandPath 
As String ".\Kitty.Exe"

 
       ' نخفظ الملف التنفيذي بالاسم و في المسار المحدد
        IO.File.WriteAllBytes(fileNameandPath, fileBytes)

        ' 
نقوم بتشغيل الملف
        Using p 
As Process Process.Start(New ProcessStartInfo(fileNameandPath))
 
           Me.Close()
 
       End Using 

جتي الأن نحن لم يتم نشفير اي شئ

المثال الثاني

نفس المثال و لكن بدلا من كتابة الملف بامتداد Exe سنكتبه باي امتداد علي الهارد ديسك
وهنا سوف أحفظه علي هيئة صورة
 و أقرأه من علي الهارد ديسك ثم أقوم بتشغيله


PHP كود :
      ' نقرأ الملف من الريسورس
        Dim fileBytes As Byte() = My.Resources.KittyCat

        ' 
نحدد اسما و مسارا للملف 
        Dim fileNameandPath 
As String ".\Kitty.png"

 
       ' نخفظ الملف التنفيذي بالاسم و في المسار المحدد
        IO.File.WriteAllBytes(fileNameandPath, fileBytes)


        ' 
نقوم بتشغيل الملف

        Using p 
As Process Process.Start(New ProcessStartInfo(fileNameandPath))
 
           Me.Close()
 
       End Using 

قم بتشغيل الملف

ستلاحظ أن الكمبيوتر سيقوم بفتح الملف ببرنامج للصور و برنامج الصور هنا سوف يقوم بإظهار رسالة لك تقول We can't open this file اي لا نستطيع فتح هذا الملف

المثال الثالث:

حاول تحفظ الملف بامتدادات أخري مختلفة و سأختار هنا الامتداد txt

PHP كود :
      ' نقرأ الملف من الريسورس
        Dim fileBytes As Byte() = My.Resources.KittyCat

        ' 
نحدد اسما و مسارا للملف 
        Dim fileNameandPath 
As String ".\Kitty.txt"

 
       ' نخفظ الملف التنفيذي بالاسم و في المسار المحدد
        IO.File.WriteAllBytes(fileNameandPath, fileBytes)


        ' 
نقوم بتشغيل الملف

        Using p 
As Process Process.Start(New ProcessStartInfo(fileNameandPath))
 
           Me.Close()
 
       End Using 

الملف سيفتح هنا ببرنامج NotePad و سوف تستطيع أن تري و تقرأ كل التكست الموجود داخل الملف و لكن بعض الكلمات ستكون غير مفهومة

لا تغلق الملف فقط انظر الي اول حرفان في ملف التكست ستجد أنهما MZ و هذان الحرفان و عند من يفهم برمجة هما يشيران الي الحروف الأولي الي اسم مبرمج مشهور في مايكروسوفت و هذان الحرفان لهم معني واحد أن الملف هو ملف تنفيذي EXE

تذكر أننا حتي الأن لم نقوم بتشفير الملف
عموما المسكلة التي يجب أن تتفهمها عزيزي القارئ أن المشكلة ليست في تشفير الملف فهذا هو الجزء السهل في الموضوع

لكن السؤال الذي يجب أن نسأله لأنفسنا
هل نحن في حاجة لحفظ الملف علي الهارد ديسك و هل نستطيع تحميل الملف مباشرة في ذاكرة الكمبيوتر

الإجابة نعم تستطيع ولكن لهذا حديث مختلف

المثال الرابع:

الأن لنقوم بتنفيذ ألأفكار أعلاه و لكن مع ملف يكون امتداده dll او من النوع Data Linked Library
و أنا كتبت ملف من النوع dll بسيط جدا حتي استخدمه
وهنا سوف أضيف الملف الي Resources المشروع و أجعل Build Action الخاص به Embedded Resource
حتي أضمن أنه لا يتم نسخ الملف الأصلي الي فهرس المشروع

و الكود التالي يوضح كيفية قراءة ملف dll

PHP كود :
       Dim dllFileBytes As Byte() = My.Resources.SimpleDll

        
' الكود التالي يوضح الأسلوب الأول لتتشغيل الملف

        Dim simpleDll As Assembly = Assembly.Load(dllFileBytes) 

أيضا الكود التالي يوضح كيفية قراءة الملف باستخدام Application.Domain
يجب ملاحظة انك تستيطيع أن تضع الملف في اي فهرس تحدده أنت علي الكمبيوتر
أنا هنا اخترت فهرس المشروع


PHP كود :
       ' الكود التالي يوضح الأسلوب الثاني لتتشغيل الملف

        Dim dllFileBytes As Byte() = My.Resources.SimpleDll

        Dim filePath As String = Application.StartupPath & "\" & "SimpleDll.dll"
        Using fs As IO.FileStream = IO.File.Create(filePath)
            fs.Write(dllFileBytes, 0, dllFileBytes.Length)
        End Using

        Dim dom As AppDomain = AppDomain.CreateDomain("SimpleDll", Nothing)
        Dim assemblyName As New AssemblyName()
        assemblyName.CodeBase = filePath

        Dim dllassembly As Assembly = dom.Load(assemblyName) 

يتبقي عليك فقط أن تتعامل مع ملف dll الذي تم تحميله باستخدام Assembly Load او باستخدام Application.Domain.Load
وهذا يتم باستخدام Reflection

الكود التالي سيؤكد لك أن الاسمبلي تم بالفعل تحميله
وهذا ققط من أجل التوضيح


PHP كود :
      Dim cairoType As Type dllassembly.GetType("SimpleDll.Cairo")
 
       Me.Text cairoType.IsPublic 


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


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


الملفات المرفقة
.rar   SimpleDll.rar (الحجم : 28.7 ك ب / التحميلات : 250)
.rar   Test_ThinkBytes_Part4.rar (الحجم : 71.7 ك ب / التحميلات : 161)
.rar   Test_ThinkBytes_Part3.rar (الحجم : 96.77 ك ب / التحميلات : 147)
.rar   Test_ThinkBytes_Part2.rar (الحجم : 97.73 ك ب / التحميلات : 149)
.rar   Test_ThinkBytes_Part1.rar (الحجم : 98.24 ك ب / التحميلات : 175)
الرد }}}


الردود في هذا الموضوع
تشفير الملفات التنفيذية - بواسطة silverlight - 01-07-17, 10:16 AM

المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  مقدمة الي تشفير الحروف الأبجدية العربية silverlight 3 9,507 17-05-22, 02:23 AM
آخر رد: flawer69
  ابسط كود لرفع الملفات عن طريق سيرفر FTP Basil Abdallah 2 3,962 20-11-20, 07:21 PM
آخر رد: walihn
Lightbulb [مقال] التعامل مع اختصارات الملفات Shortcuts Magic Sword 2 4,422 01-10-20, 11:36 AM
آخر رد: abomo3ath
  [VB.NET] عمل برنامج تشفير بخوارزمية base64 alking-0999 2 5,617 31-01-19, 07:28 PM
آخر رد: khalil7547
  [مقال] تشفير الكونكشن استرنج mero5000 7 4,174 04-12-18, 12:14 PM
آخر رد: dametucorazon
  شرح انشاء برنامج تحويل صيغ الملفات الصوتيه CLARO 10 6,980 16-11-18, 04:41 PM
آخر رد: anassss
  التعامل مع الملفات الصوتية ........دردشة برمجية RaggiTech 8 10,382 28-11-17, 11:23 PM
آخر رد: ahmed4240
  الملفات المؤقتة silverlight 1 2,491 05-10-17, 03:54 PM
آخر رد: sendbad100
Star [VB.NET] شرح عمل امتداد خاص لبرامجك وجعل برنامجك يقرأ هذة الملفات mohammed_gamal381 22 19,143 01-06-16, 02:55 PM
آخر رد: ابراهيم كركوكي
  [VB.NET] برنامج تشفير خوارزمية rsa مضغوط ببرنامج winrar alking-0999 2 4,679 08-07-15, 01:49 PM
آخر رد: alking-0999

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


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