ملف .wasm الثنائي غير مُعدّ للقراءة المباشرة — لكن يمكن تحويله إلى WAT، صيغة WebAssembly النصية المقروءة، وتحليله بنيويًا بما يتجاوز مجرد تدفق التعليمات. يقوم مُفكِّك ترجمة WASM بكلا الأمرين، بالكامل داخل متصفحك.
لنكن واضحين حول ما هي هذه الأداة وما ليست عليه. لا تسترجع هذه الأداة الكود المصدري الأصلي بلغة Rust أو C أو C++ — تُفقد تلك المعلومة بمجرد أن ينتج المترجم ملف WASM. ما تسترجعه بدقة هو:
- تفكيك WAT كامل، أنتجته أداة
wabt(WebAssembly Binary Toolkit)، مع تطبيق أسماء التصحيح عندما تحمل الوحدة قسم "name". - رسم بياني للاستدعاءات، مبني بتتبع بايت كود كل دالة الفعلي بحثًا عن تعليمات
callوcall_indirect— وليس مُخمَّنًا من نص WAT. يُظهرcall_indirectتوقيع نوع الدالة الذي يستهدفه، وليس أبدًا دالة محددة مُخمَّنة، لأن الهدف الحقيقي لا يُحسم إلا وقت التشغيل — هذه حقيقة بنيوية في الكود، وليست قصورًا في هذه الأداة. - شكل تدفق التحكم لكل دالة: أقصى عمق تداخل لـ block/loop/if، وعدد كل منها، مما يعطي فكرة تقريبية عن مدى التعقيد البنيوي لدالة ما دون الحاجة إلى رسم بياني كامل لتدفق التحكم.
- تخمين لسلسلة أدوات البناء مبني على أدلة — "على الأرجح Rust"، أو "على الأرجح Emscripten (C/C++)"، أو "على الأرجح AssemblyScript" — استنادًا إلى أدلة حقيقية قابلة للتحقق: بادئات رموز Rust المشوَّهة، استيرادات وقت تشغيل Emscripten المميزة (
emscripten_*،__cxa_*،__wasm_call_ctors)، أو سلاسل مسار المكتبة القياسية لـ AssemblyScript~lib/الموجودة في مقاطع بيانات الوحدة. تُظهر الأداة دائمًا الدليل المحدد الذي عثرت عليه وتصيغ النتيجة بعبارة "على الأرجح" — ليست يقينًا أبدًا، وليست تخمينًا بلا سند أبدًا.
تُعلَّم أي دالة يستخدم بايت كودها تعليمة خارج مجموعة رموز العمليات التي تنمذجها الأداة (SIMD، العمليات الذرية، عمليات الذاكرة الجماعية) بـ"تفكيك جزئي" بدلًا من عرضها بصمت كأنها كاملة — الصدق بشأن حدود التحليل أهم من نتيجة أنيقة.
مفيدة لتدقيق بنية وحدة .wasm من طرف ثالث، أو فهم كيفية استدعاء دوالها لبعضها البعض، أو الحصول على قراءة أولى لملف ثنائي غير مألوف قبل تحليل أعمق.
Tiny Online Tools







