Skip to content
KitploitKITPLOIT
أدواتعمليات الاستغلالالمدونة
Log in
إرسال
أدواتعمليات الاستغلالالمدونة
إرسال

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
egodeath — أداة تعمية لجافا سكريبت تعتمد على تقنيات تعمية التمييز التشفيري | Kitploit
أدوات/GitHubGitHub/nstarke/egodeath
التحليل الثابتتحليل الكودالهندسة العكسيةالأوراق والأبحاثالتعلم والتعليم
GitHubnstarke/egodeath

egodeath

أداة تعمية لجافا سكريبت تعتمد على تقنيات تعمية التمييز التشفيري

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

الأكثر شعبية

عرض الكل →

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

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

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

عرض جميع الأدوات →
مشاركة

egodeath

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

Tests

images/screenshot.png أداة إخفاء كود جافا سكريبت مصممة لجعل الكود شديد الصعوبة في القراءة والتحليل لكل من البشر ونماذج اللغات الضخمة. مكتوبة بلغة TypeScript. تطبق تقنيات من أبحاث إخفاء التشفير الخاضعة لمراجعة الأقران.

التثبيت

npm install
npm run build

استخدام سطر الأوامر

# الاستخدام الأساسي
node dist/index.js input.js > output.js

# مع حصة الرموز المستهدفة (الافتراضي: 2,000,000)
node dist/index.js --target-tokens 500000 input.js > output.js

# إخفاء بسيط (مخرجات صغيرة)
node dist/index.js --target-tokens 10000 input.js > output.js

# تضخيم أقصى (10 ملايين رمز)
node dist/index.js --target-tokens 10000000 input.js > output.js

# استخدام متغير بيئة
INPUT_FILE=input.js node dist/index.js > output.js

# المساعدة
node dist/index.js --help

الخيارات

الخيارالافتراضيالوصف
--target-tokens <n>2000000حجم المخرجات المستهدفة بالرموز. يتم تضخيم المدخلات الصغيرة حتى هذا الحد. المدخلات الكبيرة تنتج تضخيمًا أقل للبقاء ضمن الميزانية.
--help, -hعرض رسالة المساعدة

نصوص npm

npm run build              # تجميع TypeScript إلى dist/
npm run start              # تشغيل أداة الإخفاء (تقرأ input.js)
npm run test               # تشغيل مجموعة الاختبارات
npm run obfuscate-package  # تشغيل اختبارات التوافق مع حزم npm

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

const { obfuscate } = require('./dist/obfuscator');

const code = 'function add(a, b) { return a + b; }';
const obfuscated = obfuscate(code);

// مع خيارات
const obfuscated = obfuscate(code, { targetTokens: 500000 });

خط أنابيب التحويل

يطبق أداة الإخفاء 20 تحويلاً عبر 4 مراحل. تبني كل مرحلة على المرحلة السابقة.

المرحلة 1: تحويلات ما قبل الأمان ومكافحة التحليل

الترتيبالتحويلالملفالوصف
1مصائد إيقاف التصحيحtransforms/antiDebug.tsيحقن عبارات eval("debugger") وحلقات setInterval من 10-20 بفترات زمنية من الأعداد الأولية (5 ثوانٍ - 600 ثانية) تكرر تشغيل نقاط التوقف الخاصة بتصحيح الأخطاء. كل مثيل يستخدم سلاسل مشفرة فريدة.
2أسلاك الرحلات المثقوبةtransforms/tripwires.tsيدمج فحوصات مخفية تقارن تجزئات المعلمات بقيم سرية. 5 أنماط تجزئة (بصمة bitwise، حساب نمطي، charCodeAt، تجزئة رقمية، typeof+length). تؤدي إلى إفساد الحالة الصامت، حلقات انتظار مزدحمة، أو رمي أخطاء عند المدخلات السرية. [ورقة 4]
3حقن الضوضاء LPNtransforms/noiseInjection.tsيضيف ويلغي ضوضاء عشوائية عبر مسارات منقسمة في الحسابات الحسابية. 6 أنماط: جمع/طرح، XOR، ضرب/قسمة، متغير مزدوج منقسم، سلسلة تجزئة محسوبة، إزاحة بتات. القيم الوسيطة لا معنى لها دون تتبع الإلغاء الكامل. [ورقة 7]

المرحلة 2: تحويلات ما قبل الهيكلية

الترتيبالتحويلالملفالوصف
4تسطيح تدفق التحكمtransforms/controlFlowFlattening.tsيحول أجسام الدوال إلى آلات حالة while(true) { switch((_s * P) % M) { ... } } مع توزيع حساب نمطي — يتم ترميز قيم الحالات عبر (stateId * multiplier) % modulus باستخدام معلمات أولية عشوائية. [ورقة 3]
5المسندات المعتمةtransforms/opaquePredicates.tsيحقن شروط if التي تقيم دائمًا إلى true أو false ولكن يصعب إثباتها رياضيًا (مثل (x*x+x)%2===0). 15 صيغة مسند عبر فئات الحساب النمطي والبتي والفحص النوعي.
6دوال بروكسيtransforms/proxyFunctions.tsيوجه جميع استدعاءات الدوال عبر موزعين: _fc(fn, ...args) للاستدعاءات البسيطة، _mc(obj, prop, ...args) لاستدعاءات الطرق. يستخدم Function.prototype.apply الملتقطة في متغير محلي للمتانة.
7استنفاد نافذة السياقtransforms/contextExhaustion.tsيلف التعبيرات في تعبيرات ثلاثية متداخلة بعمق مع شروط معتمة، وسلاسل تعبير void، وحشو void شرطي. يجبر نماذج اللغات الضخمة على إهدار رموز نافذة السياق على الضوضاء.
8دمج تعبيرات الفاصلةtransforms/commaExpressions.tsيدمج عبارات التعبير المتعاقبة في تعبيرات فاصلة واحدة: a(); b(); return c() يصبح return a(), b(), c().

المرحلة 3: تمريرات المعرفات

| الترتيب | التمرير | الملف | الوصف | |-------|------|-------------| | 9 | التمرير 1: الفهرسة | passes/firstPass.ts | يجتاز AST ويفهرس كل معرف، مبنيًا خريطة عمومية تعين لكل معرف اسم Unicode عشوائي من 6-16 حرفًا مأخوذًا من 16 نطاق كتابة (CJK، هانغول، يوناني، سيريلي، ديوناكري، تايلندي، عربي، كاتاكانا، إلخ). | | 10 | التمرير 2: الاستبدال | passes/secondPass.ts | يستبدل جميع أسماء المعرفات بمكافئات Unicode المشفرة. يرمز وسيطات require() كـ String.fromCharCode(...). يرمز مصادر import/export الثابتة كحرفية سلسلة هاربة Unicode. يستبدل مراجع superClass للفئات، تعبيرات القوالب الحرفية، أنماط التدمير. | | 11 | التمرير 3: المعاملات الوهمية | passes/thirdPass.ts | يحقن 0-15 معلمة غير مستخدمة عشوائية في كل تعريف دالة وتعبير. يتجاهل الدوال ذات المعاملات الباقية. يزيل جميع التعليقات. |

المرحلة 4: ما بعد التحويلات

الترتيبالتحويلالملفالوصف
12ترميز المتغيرات العموميةtransforms/globalVariableEncoding.tsيستبدل مراجع المتغيرات العمومية (المكتشفة ديناميكيًا من globalThis + حزمة window) بـ eval("Name<suffix>".replace(new RegExp("<suffix>$"), "")). كلا السلسلتين تتدفقان عبر مصفوفة السلسلة.
13ترميز مفاتيح الخواصtransforms/propertyKeyEncoding.tsيحول الوصول بالنقطة إلى وصول محسوب بسجلات لكل نطاق. الوصول عبر النطاقات يعمل لأن جميع اللواحق تحل إلى نفس اسم الخاصية في وقت التشغيل عبر .replace().
14ترميز الأرقامtransforms/numberEncoding.ts11 استراتيجية ترميز: إزاحة+جمع، هوية XOR، مكمل، قسمة، إزاحات متداخلة، NOT مزدوج، نمطي، إلخ. يتم إنشاء كل مثيل بشكل فريد. يتجاوز مفاتيح الخواص وقيم حالات التبديل.
15التحقق من التكامل الذاتيtransforms/selfIntegrity.tsيحقن 2-4 فحوصات وقت التشغيل: التحقق من الكود الأصلي eval، سلامة Function.prototype.toString، كشف شذوذ التوقيت، التحقق من هيكل الكود. استجابات مكافحة العبث: انتظار مزدحم، رمي خطأ، إفساد صامت. [ورقة 10]
16استخراج مصفوفة السلسلةtransforms/stringArrayExtraction.tsيجمع جميع السلاسل في مصفوفة واحدة مع فك تشفير XOR المتسلسل (مفتاح الإدخال N يعتمد على المحتوى المفكوك للإدخال N-1) وأنماط الأخطاء المتناثرة المعتمدة على الموضع (كل حرف يحصل على مفتاح XOR مختلف، مع أخطاء متناثرة مستوحاة من LPN في مواقع محددة). [الأوراق 2، 9]
17نسخ وحدة التحكمobfuscator.tsيكتشف ديناميكيًا جميع طرق console ويجعل كل منها دالة لا تفعل شيئًا.
18تصغير Terserobfuscator.tsيزيل المسافات البيضاء/التنسيق عبر terser (mangle: false, compress: false). يتراجع إلى إزالة تستند إلى regex إذا لم يستطع terser تحليل المخرجات.

حقن الكود الميت

يتم حقن الكود الميت في نقاط متعددة باستراتيجيتين للتوليد:

الاستراتيجيةالمصدرالوصف
قائمة على القالبtransforms/deadCodeInjection.ts9 أنواع قوالب: تجميع حلقة، بناء مصفوفة، معالجة كائن، تسلسل سلاسل، شروط متداخلة، try/catch، عد تنازلي while، تبديل محسوب، سلاسل بتية. القوالب تشير إلى متغيرات النطاق الحقيقية.
قائمة على الطفرةtransforms/deadCodeInjection.tsيستنسخ عبارات حقيقية ويطفرها: يبدل المعاملات ضمن مجموعات التكافؤ، يزعج الثوابت، يعيد تسمية المعرفات. ينتج كودًا ميتًا متطابقًا هيكليًا مع AST مع الكود الحقيقي ولا يمكن تمييزه عنه بالهيكل وحده. [ورقة 3]

نقاط حقن الكود الميت:

  • حالات التبديل الميتة في CFF (~30% إضافية لكل دالة، مقياس حسب الميزانية)
  • فروع else للمسندات المعتمة
  • كتل ميتة مستقلة في دوال غير CFF (مضبوطة بالميزانية)

مراجع الأبحاث

عدة تحويلات مستوحاة من أبحاث إخفاء التشفير الخاضعة لمراجعة الأقران:

تنزيل الأداة