تخطَّ إلى المحتوى

WABT - مجموعة أدوات WebAssembly الثنائية

WABT - مجموعة أدوات WebAssembly الثنائية

WABT (يُنطق “wabbit”) هو مرجع مجموعة أدوات WebAssembly الثنائية — مجموعة من أدوات سطر الأوامر للعمل مع wasm على مستوى منخفض. يحول بين تنسيق .wasm الثنائي وتنسيق .wat النصي القابل للقراءة من قبل الإنسان ويفكك الوحدات ويكمشها ويتحقق منها وينتج تفكيك شيفرة على غرار C ويفسر/ينفذ wasm. إنها مجموعة الأدوات الأساسية لكل من تطوير wasm والهندسة العكسية.

التثبيت

النظام الأساسيالأمر
macOS (Homebrew)brew install wabt
Debian/Ubuntusudo apt install wabt
Arch Linuxsudo pacman -S wabt
npmnpm install -g wabt
من المصدربناء مع CMake من مستودع WebAssembly/wabt
التحققwat2wasm --version

الأدوات الأساسية

الأداةتحويل / يفعل
wat2wasmنص .wat → ثنائي .wasm
wasm2watثنائي .wasm → نص .wat (فك التجميع)
wasm-objdumpتفريغ الأقسام والعمليات والرموز
wasm-decompileإنتاج رمز زائف قابل للقراءة على غرار C
wasm-validateالتحقق من الوحدة
wasm-interpتفسير/تشغيل وحدة (آلة المكدس)
wasm2cتحويل wasm → مصدر C
wasm-stripإزالة الأقسام (على سبيل المثال الأسماء) من وحدة

نص ↔ ثنائي

# تجميع النص إلى ثنائي
wat2wasm module.wat -o module.wasm

# فك التجميع الثنائي إلى نص (نقطة بداية HR)
wasm2wat module.wasm -o module.wat

# الاحتفاظ بأسماء التصحيح / الأقسام المخصصة أثناء فك التجميع
wasm2wat --generate-names module.wasm
الخيارالتأثير
-o FILEملف الإخراج
--generate-namesاصطناع أسماء للوظائف/المحليات غير المسماة
--enable-FEATUREتشغيل اقتراح wasm (على سبيل المثال --enable-threads)
-vمفصل

فحص الوحدة (objdump)

# فك التجميع الكامل + تفريغ القسم
wasm-objdump -x module.wasm      # الرؤوس/الأقسام
wasm-objdump -d module.wasm      # فك تجميع الكود
wasm-objdump -s module.wasm      # محتوى الأقسام (سادس عشر)
العلمالشاشات
-hرؤوس الأقسام
-xتفاصيل جميع الأقسام
-dأجسام الوظائف المفككة
-sمحتوى القسم الخام
-j SECTIONحد أدنى إلى قسم واحد

فك التجميع (الإخراج القابل للقراءة)

# فك التجميع على غرار C — أسهل كثيراً في القراءة من WAT
wasm-decompile module.wasm -o module.dcmp

يعيد wasm-decompile بناء تدفق التحكم المنظم والمحليات المكتوبة مما يجعلها طريقة سريعة لفهم ما تفعله الوحدة أثناء الفرز.

التحقق والتشغيل

الأمرالغرض
wasm-validate module.wasmتأكيد أن الوحدة مشكلة بشكل جيد
wasm-interp module.wasm --run-all-exportsتنفيذ الوظائف المُصدَّرة
wasm2c module.wasm -o module.cبث C للتجميع/التحليل

سير عمل الهندسة العكسية

# 1) فك التجميع مع الأسماء
wasm2wat --generate-names target.wasm -o target.wat

# 2) تفريغ الواردات/الصادرات لفهم القدرات
wasm-objdump -x target.wasm | grep -E "import|export"

# 3) احصل على رمز زائف قابل للقراءة
wasm-decompile target.wasm -o target.dcmp

# 4) ابحث عن السلاسل/عناوين URL في أقسام البيانات
wasm-objdump -s target.wasm | less

أعلام الميزة (الاقتراحات)

العلميفعّل
--enable-threadsThreads/atomics
--enable-simdSIMD
--enable-bulk-memoryعمليات الذاكرة الكبيرة
--enable-reference-typesأنواع المراجع
--enable-allجميع الاقتراحات المدعومة

استخدم هذه عندما تستخدم الوحدة ميزات wasm الأحدث وترفضها الأدوات الافتراضية.

WABT مقابل الأدوات ذات الصلة

الأداةالدور
WABTتحويل/فحص/التحقق/فك تجميع wasm
diswasmمفكك شيفرة رمز زائف عالي المستوى
wasm-toolsمعالجة Rust منخفضة المستوى
Binaryenمجموعة أدوات المترجم/محسّن (wasm-dis, wasm-opt)

الموارد