Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
UnConfuserEx — أداة فك تعتيم لـ ConfuserEx2 مع دعم لمكافحة العبث، والضاغط، والثوابت، وتدفق التحكم، واستعادة الموارد. | Kitploit
أدوات/GitHubGitHub/zypherion-technologies/unconfuserex
التحليل الثابتالتحليل الديناميكي (عزل)تحليل الكودالهندسة العكسيةالتحقيق الجنائي الرقميتحليل البرمجيات الخبيثةتحليل الملفات الثنائيةالأوراق والأبحاثالتعلم والتعليم

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة
GitHubzypherion-technologies/unconfuserex

UnConfuserEx

أداة فك تعتيم لـ ConfuserEx2 مع دعم لمكافحة العبث، والضاغط، والثوابت، وتدفق التحكم، واستعادة الموارد.

عرض المستودع
404منذ 22 أيامتمت المراجعة من قبل Kitploit

UnConfuserEx

.NET target Website Discord Telegram X

تفرّع محسّن من UnconfuserEx مع دعم محسّن لنسخ ConfuserEx2 الحديثة، واستعادة anti-tamper، وإزالة الضاغط، واستعادة تدفق التحكم، وإعادة بناء الموارد.

https://github.com/user-attachments/assets/de2c7fd9-6736-4f39-83c0-3c25aa9c1f24


إذا سبق لك أن لعبت مع عينات من البرمجيات الخبيثة، فإن بعضها مُعمّى باستخدام ConfuserEx، وقد جرّبت بعض أدوات إزالة التعتيم العامة على أحدث إصدار لكنها لم تعمل فقط، لذلك قررت التفرّع من أداة عامة عملت فعلًا مع ذلك الإصدار الأحدث وتعديلها حسب احتياجاتي.

هذا المستودع هو تفرّع من MadMin3r/UnconfuserEx. يعود الفضل إليه أيضًا. لقد أنجز المشروع الأصلي الجزء الصعب المتمثل في صنع أداة إزالة تعتيم مركّزة لـ ConfuserEx2 قادرة فعلًا على إزالة الحمايات الحقيقية.

هذا هو ما يفعله هذا المشروع. يشغّل قائمة من أدوات الإزالة بترتيب ثابت، ويعيد كتابة نصوص الدوال/الموارد/البيانات الوصفية حيثما أمكن، ثم يكتب تجميعة جديدة في النهاية. الجزء المهم هو الترتيب. يجب أن يعمل كل من الضاغط وanti-tamper مبكرًا لأن بقية الوحدة قد لا تكون حتى IL حقيقية بعد.


كانت النسخة الأصلية مفيدة بالفعل، لكن بعض الحالات ظلّت تظهر باستمرار.

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

root@kitploit:~
LZMA properties => CE FD 62 5F 9F
Invalid LZMA properties byte 0xCE or unreasonable dictionary size

كانت هناك مشكلة أخرى متعلقة بـ Constants، غبية لكنها حقيقية. جزء كبير من كود الحلّ يريد أن يكون المعرّف الموجود أمام استدعاء الجالب ldc.i4. أحيانًا لم يعد تعليمة واحدة. بل أصبح تعبيرًا حسابيًا صغيرًا.

root@kitploit:~
ldc.i4     0x1234
ldc.i4     0x55
xor
call       string <const getter>(int32)

يرى التفرّع الأصلي xor، ويستدعي GetLdcI4Value()، ثم ينهار لأن xor ليس تحميل عدد صحيح بوضوح. هذه النسخة تعيد السير عبر التسلسل الحسابي الصغير، وتحاكي المكدس، وتطويه مرة أخرى إلى ldc.i4 واحدة، ثم تترك الحلّ الطبيعي يكمل عمله.

إذن بدلًا من التعامل مع هذا كحماية Constants مختلفة تمامًا، يصبح هكذا:

root@kitploit:~
ldc.i4     0x1261
call       string <const getter>(int32)

ثم يمكن لمسار حلّ الثوابت العادي/x86 الحالي أداء وظيفته.


أما تدفق التحكم فكان أداؤه متوسطًا.

يمكن لأداة إزالة التبديل التعامل مع الشكل الطبيعي لمُوزِّع التبديل في ConfuserEx. فهي تتنقل بين الكتل، وتستعيد الهدف التالي، وتحذف الكتل الميتة، وتُخرج نص دالة سليمًا. لكن هناك عينات لا يُفهم منها سوى جزء من الدالة. إذا عَدّلت نصف دالة ثم اكتشفت أنها ما زالت مُعمّاة، فإن الناتج يكون أسوأ من عديم الفائدة، لأن لديك الآن IL مكسورًا ولا توجد طريقة نظيفة لفهم ما حدث.

لذلك تلتقط هذه النسخة لقطة من نص الدالة قبل لمسه:

root@kitploit:~
instructions
exception handlers

إذا ما ألقى إجراء إزالة التعتيم استثناءً، أو إذا بدت الدالة ما زالت مُعمّاة بعد ذلك، تتم استعادة النص الأصلي. يمكن أن يظل السجل يقول «لم يتم حلّ هذه الدالة»، لكن التجميعة لن تُتلف بصمت لمجرد أن دالة واحدة احتوت على مُوزِّع غريب.

حصل تدفق التحكم عبر القفزات/الترامبولين على معالجة خاصة به أيضًا. بعض الدوال ليست مجرد مُوزِّعات تبديل. إنها ترامبولينات فرع صغيرة متسلسلة حتى الوصول إلى الكتلة الحقيقية. تُكتشف هذه الآن وتُطوى بدلًا من تجاهلها عبر مسار التبديل فقط.


أداة إزالة الضاغط هي الجزء الذي يجب أن يعمل قبل أي شيء آخر.

عادةً ما تُبقي أكواد ضاغط ConfuserEx الوهمية التجميعة الحقيقية مضغوطة، وتُقلع محمّلًا صغيرًا، وتفك ضغط الحمولة، وتحمّلها في وقت التشغيل.

تجد أداة الإزالة شكل المحمّل، وتستخرج الحمولة المضمنة، وتفك ضغطها، وتستبدل الوحدة بالتجميعة الحقيقية. تتم معالجة تخطيطَي الضاغط العادي والمضغوط معًا.

root@kitploit:~
[+] Compressor detected
[+] Extracted compressed module payload
[+] Decompressed real module
[+] Continuing pipeline on unpacked assembly

أصبح لدى Anti-tamper مساران الآن.

يعمل anti tamper العادي/الديناميكي على فك تشفير نصوص الدوال من الأقسام المحمية وإعادة كتابة النصوص المستعادة في الوحدة. أما JIT anti tamper فهو أكثر إزعاجًا لأن النصوص مُصممة لتُستحضر عندما يطلبها وقت التشغيل.

الشكل التقريبي هو:

root@kitploit:~
find init
extract keys
find encrypted JIT body section
derive per method key
read body
write CilBody back

ما زال هذا قائمًا على الأنماط. إذا تغيّر الكود الوهمي بما يكفي، فسيُخطئ الهدف، وهذا واضح.


تتم معالجة الموارد بشكل مشابه لـ Constants: العثور على كتلة الموارد المشفّرة، واستعادة شكل المفتاح/وحدة فك التشفير، وفك التشفير، وفك الضغط إذا لزم الأمر، ثم إعادة الموارد إلى المكان الذي تتوقعها فيه أدوات .NET العادية.

هناك أيضًا مسار اختياري لإعادة بناء الـ PE المضمن. بعض العينات المحمية تحمل PE مُدارًا داخل مورد. مع تفعيل إعادة البناء، تحاول أداة الإزالة تحليل تلك الحمولة وإعادة كتابتها أيضًا، بدلًا من ترك تجميعة خارجية بعد إزالة التعتيم مع تجميعة داخلية لم تُمسّ.

root@kitploit:~
UnConfuserEx.exe sample.exe sample.clean.exe --rebuild-embedded-pe

استخدم ذلك عندما تعلم أن العينة تخفي تجميعة مُدارة أخرى داخل الموارد. إذا لم تكن الحمولة PE مُدارًا، فيجب أن يتركها مسار إعادة البناء وشأنها.


الاستخدام

قم ببنائها:

root@kitploit:~
dotnet build .\UnConfuserEx.sln -c Release

قم بتشغيلها:

root@kitploit:~
.\UnConfuserEx\bin\Release\net9.0\UnConfuserEx.exe .\protected.exe

أو أعطِها مسار إخراج صريحًا:

root@kitploit:~
.\UnConfuserEx\bin\Release\net9.0\UnConfuserEx.exe .\protected.exe .\protected.clean.exe

إذا لم تعطِ مسار إخراج، فستكتب واحدًا بجوار المدخل مع إضافة -deobfuscated إلى الاسم.

للحمولات المُدارة المضمنة:

root@kitploit:~
.\UnConfuserEx\bin\Release\net9.0\UnConfuserEx.exe .\protected.exe .\protected.clean.exe --rebuild-embedded-pe

الحمايات

هذه هي قائمة الدعم الحالية. لا يعني ذلك أن كل تفرّع محتمل من ConfuserEx يعمل. بل يعني أن هذه هي الأشكال التي يعرف خط الأنابيب كيفية البحث عنها.

  • Anti-debug
    • Safe
    • Win32
    • Antinet
  • Anti-dump
  • Anti-tamper
    • Normal
    • Dynamic
    • JIT
    • JIT dynamic
  • Compressor
    • Normal
    • Compact
  • Constants
    • Normal
    • Dynamic expression
    • x86

ربما يوجد المزيد مخفيًا في الكود نسيتُ إدراجه xD.


السجلات

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

مثال على مسار Constants بعد إصلاحه:

root@kitploit:~
Constants detected, attempting to remove
Found 3 constant getter(s)
Detected constant decryption type is Dynamic
Decompressed constants blob to 18492 byte(s)
Resolving getter <Module>::???????? as String with 41 call site method(s)
Removed all instances of getter <Module>::????????

مثال على دالة تدفق تحكم تُركت كما هي عمدًا:

root@kitploit:~
Removing obfuscation from method System.Void Example::Run()
Method System.Void Example::Run() still appears obfuscated after deobfuscation -- left original body intact
Removed obfuscation from 42 methods. Failed to remove from 0 methods. 1 methods left untouched

هذا السجل الثاني ليس مثاليًا، لكنه صادق على الأقل


أشياء لا تحلّها هذه الأداة بسحر

تفرّع مخصص من ConfuserEx يغيّر كل شكل من أشكال الدوال المساعدة.

جالب Constants يحسب معرّفه عبر فوضى تدفق تحكم كاملة بدلًا من تعبير مكدس صغير.

رسم بياني لتدفق التحكم حيث يعتمد المُوزِّع على قيم وقت تشغيل لا يعرفها المحاكي الثابت.

دوال مساعدة أصلية تحتاج تنفيذًا فعليًا في وقت التشغيل بدلًا من محاكاة IL.

تجميعات كانت معطوبة أصلًا قبل تعميتها.

نسخ JIT anti-tamper ذات تخطيط مختلف للنص المشفّر.


الإبلاغ عن المشكلات

إذا أردت أن يكون تقرير المشكلة مفيدًا، فقم بتضمين بيانات كافية لإعادة إنتاجها.

أزل امتدادات الملفات من العينات قبل رفعها.

ضع كل شيء في أرشيف معًا وأدرج ما يلي:

root@kitploit:~
Command:
UnConfuserEx.exe <target> <optional output>

Failure stage:
- compressor
- anti tamper
- constants
- control flow
- resources
- writing output
- runtime after deobfuscation

Expected result:

Actual result:

Console output:

Archive link:

Notes / investigation:

إذا كان كل ما ترسله هو «لا يعمل»، فستكون الإجابة على الأرجح «نعم».


كيف يبدو بعد إزالة التعتيم؟

قبل:

image image

بعد:

image image

المساهمة

الإصلاحات الصغيرة المركّزة أفضل من إعادة الكتابة الضخمة.

إذا أضفت دعمًا لشكل حماية جديد، فأبقِه معزولًا في أداة الإزالة المختصة به. إذا أضفت سلوك تراجع احتياطي، فتأكد من أن الفشل لا يُتلف التجميعة الناتجة. إذا تعاملت مع تدفق التحكم، فافترض أن العينة الغريبة التي أصلحتها ليست العينة الغريبة الوحيدة الموجودة :DDD.

فقط لا تجعل الأداة أصعب في التصحيح.

الاعتمادات

يعتمد هذا المشروع على MadMin3r/UnconfuserEx.

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

ملاحظة

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

إخلاء المسؤولية

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

يتحمّل المستخدمون مسؤولية الامتثال للقوانين المعمول بها والحصول على أي تصريح مطلوب قبل تحليل أي برمجيات أو أنظمة أو الوصول إليها أو معالجتها.

لا تأذن Zypherion Technologies بالاستخدام غير القانوني لهذه الأداة وتتبرّأ من المسؤولية عن إساءة الاستخدام من قبل أطراف ثالثة.

لا شيء في هذا المستودع أو على www.zypherion.tech يُعدّ استشارة قانونية.

تنزيل الأداة
  • طي معرّف العملية الحسابية الصغيرة قبل استدعاءات الجالب
  • Control flow
    • مُوزِّع التبديل
    • كتل القفز/الترامبولين
    • لقطة/استعادة عندما يتعذّر حلّ دالة بأمان
  • Reference proxy
    • Normal
    • Dynamic expression
    • x86
  • Renamer
    • استبدال الأسماء غير ASCII بأسماء عامة مقروءة
  • Resources
    • Normal
    • Dynamic
    • إعادة بناء اختيارية للـ PE المُدار المضمن
  • Static cleanup
    • سمات التعمية
    • الدوال المساعدة/الحقول العامة الميتة حيثما كان آمنًا
    • الأنواع الزائدة غير القابلة للوصول حيثما كان آمنًا