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

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

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

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

دليل الأدوات

الفئات

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

egodeath

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

عرض المستودع
5352منذ 2 أشهرتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

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

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

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

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

egodeath

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

Tests

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

التثبيت

root@kitploit:~
npm install
npm run build

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

root@kitploit:~
# الاستخدام الأساسي
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

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

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

root@kitploit:~
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 (مضبوطة بالميزانية)

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

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

الورقةالمؤلفونالتقنية المطبقة
[الورقة 1] حول إمكانية/استحالة إخفاء البرامجBarak، Goldreich، Impagliazzo، Rudich، Sahai، Vadhan، Yangحالات اختبار دالة غير قابلة للإخفاء — أداة تحقق تختبر ما إذا كانت الأسرار تبقى بعد الإخفاء
[الورقة 2] iO المرشح والتشفير الوظيفي لجميع الدوائرGarg، Gentry، Halevi، Raykova، Sahai، Watersفك تشفير السلسلة المتسلسل — عشوائية على طريقة Kilian حيث يعتمد مفتاح كل إدخال على السلسلة المفكوكة السابقة
[الورقة 3] iO من فرضية حذف المجموعة الفرعية متعددة الخطوطGentry، Lewko، Sahai، Watersكود ميت قائم على الطفرة (متطابق هيكليًا مع الكود الحقيقي)؛ انتقالات الحالة الحسابية النمطية في CFF
[الورقة 4] كيفية استخدام iO: التشفير المنكر، والمزيدSahai، Watersأسلاك الرحلات المثقوبة — فحوصات مخفية تُفعل عند المدخلات السرية
[الورقة 7] iO من افتراضات راسخةJain، Lin، Sahaiحقن ضوضاء مستوحى من LPN في الحسابات الرقمية
[الورقة 9] iO من الخرائط ثنائية الخطوط ومتغيرات LPNRagavan، Vafa، Vaikuntanathanترميز XOR متناثر مع أنماط خطأ معتمدة على الموضع
[الورقة 10] iO لدوائر الكم الفارغة والتطبيقاتBartusek، Malavoltaاختبار الدائرة الفارغة للتحقق من جودة الكود الميت؛ التحقق من التكامل الذاتي (وضع مزدوج)

أدوات التحقق

أداتا تحقق تقيس جودة الإخفاء، موجودتان في src/verification/:

اختبار الدائرة الفارغة (verification/nullCircuitTest.ts)

يخفي دالة حقيقية ودالة "فارغة" (نفس الشكل، لا تفعل شيئًا)، ثم يقارن 14 مقياسًا هيكليًا لتسجيل مدى إمكانية تمييزهما. تشابه أعلى = إخفاء أفضل.

root@kitploit:~
import { runNullCircuitTest } from './verification/nullCircuitTest';
const result = runNullCircuitTest(realCode, paramCount, stmtCount, threshold, targetTokens);
console.log('Similarity:', result.similarity); // 0.0-1.0

اختبارات الدوال غير القابلة للإخفاء (verification/unobfuscatableTests.ts)

7 حالات اختبار من براهين استحالة الورقة 1 تحاول استخراج الأسرار من الكود المخفي:

root@kitploit:~
import { runAllTests, printSummary } from './verification/unobfuscatableTests';
console.log(printSummary(runAllTests(10000)));

الاختبارات: دالة النقطة (كلمة مرور)، الأرقام السحرية، سلاسل الكناري، المفاتيح المضمنة، عناوين URL، أنماط regex، توقيعات تدفق التحكم.

ميزانية حجم المخرجات

يتحكم الخيار --target-tokens في حجم المخرجات عبر ميزانية تضخيم تضبط حقن الكود الميت (الرافع الأساسي للحجم). التحويلات المتحكمة بالميزانية:

نسبة الميزانيةالتحويلات المفعلة
> 3مكافحة التصحيح، أسلاك الرحلات، CFF، المسندات المعتمة، دمج الفاصلة
> 5دوال البروكسي، ترميز مفاتيح الخواص، حقن الضوضاء، التكامل الذاتي
> 8استنفاد نافذة السياق
> 10ترميز المتغيرات العمومية

يتدرج مضاعف الكود الميت من 1x (نسبة 30) إلى 150x (نسبة 1500+)، متحكمًا في عدد وحجم حالات التبديل الميتة وفروع المسندات المعتمة.

هيكل المشروع

root@kitploit:~
src/
  index.ts              نقطة الدخول لواجهة سطر الأوامر
  obfuscator.ts         المنسق الرئيسي لخط الأنابيب (20 تحويلاً)
  options.ts            نظام الميزانية والخيارات
  types.ts              تعريفات أنواع AST
  random.ts             توليد أسماء Unicode عشوائية (6-16 حرفًا، 16 نطاق كتابة)
  ast.ts                دوال مصنع عقد AST
  keywords.ts           اكتشاف الكلمات الرئيسية الديناميكي (globalThis + حزمة window)
  globals.ts            إدارة الحالة العمومية (خرائط النموذج الفارغ)
  substitute.ts         أدوات استبدال المعرفات
  declarations.d.ts     إعلانات أنواع الوحدات
  passes/
    firstPass.ts        فهرسة المعرفات
    secondPass.ts       استبدال المعرفات + ترميز السلاسل
    thirdPass.ts        حقن المعاملات الوهمية
  transforms/
    antiDebug.ts        مصائد eval("debugger") + حلقات setInterval
    tripwires.ts        فحوصات المدخلات السرية للبرامج المثقوبة [الورقة 4]
    noiseInjection.ts   ضوضاء حسابية مستوحاة من LPN [الورقة 7]
    controlFlowFlattening.ts  توزيع while/switch + حساب نمطي [الورقة 3]
    opaquePredicates.ts       15 مسندًا رياضيًا دائمي الصواب/الخطأ
    proxyFunctions.ts         موزعات تسطيح رسم الاستدعاء
    contextExhaustion.ts      ضوضاء ثلاثية/void لملء سياق LLM
    commaExpressions.ts       دمج العبارات عبر عامل الفاصلة
    globalVariableEncoding.ts eval+replace للمتغيرات العمومية
    propertyKeyEncoding.ts    وصول خاصية محسوب بسجلات لكل نطاق
    numberEncoding.ts         11 استراتيجية ترميز bitwise/حسابي
    selfIntegrity.ts          فحوصات وقت تشغيل مضادة للعبث [الورقة 10]
    stringArrayExtraction.ts  XOR متسلسل + أخطاء موضعية متناثرة [الأوراق 2، 9]
    deadCodeInjection.ts      كود ميت قائم على القالب والطفرة [الورقة 3]
  verification/
    nullCircuitTest.ts        تسجيل جودة الكود الميت [الورقة 10]
    unobfuscatableTests.ts    حالات اختبار استخراج الأسرار [الورقة 1]
  __tests__/                  300+ اختبار وحدة عبر 21 مجموعة
tools/
  obfuscate-package.ts  اختبار توافق حزم npm باستخدام webpack
tests/
  input*.js             ملفات اختبار الإدخال الأصلية

الاختبار

root@kitploit:~
# تشغيل جميع الاختبارات
npm test

# تشغيل مجموعة اختبار محددة
npx jest controlFlowFlattening
npx jest tripwires
npx jest noiseInjection

# اختبار ضد حزم npm (يستنسخ المستودعات، يبنى باستخدام webpack، يخفي، يشغل الاختبارات)
npm run obfuscate-package                    # جميع الحزم العشرة
npm run obfuscate-package -- minimist semver # حزم محددة

أداة اختبار التوافق

تختبر أداة tools/obfuscate-package.ts أداة الإخفاء ضد حزم npm حقيقية:

  1. تستنسخ مستودع git الخاص بالحزمة
  2. تثبت جميع التبعيات (بما في ذلك تبعيات التطوير للاختبار)
  3. تبني الحزمة إذا كان لديها سكريبت بناء
  4. تستخدم webpack لتجميع نقطة الدخول الرئيسية للمكتبة في ملف CommonJS واحد
  5. تشغل أداة الإخفاء على الملف المجمع
  6. تستبدل المدخل الرئيسي للحزمة بالحزمة المخفية
  7. تشغل مجموعة اختبار الحزمة نفسها ضد النسخة المخفية

مواقع المخرجات

المسارالمحتويات
dist/obfuscated/<package>/bundle.jsحزمة webpack المخفية لكل حزمة
dist/obfuscated/report.jsonتقرير JSON كامل بأحجام الحزم، حالة الإخفاء، مخرجات الاختبار

الترخيص

MIT - حقوق النشر 2026 Nicholas Starke

تنزيل الأداة