
مساعد أبحاث الثغرات الأمنية يستخرج الكود الزائف من مفكك IDA Hex-Rays.
"الاختراق هو انضباط يتمثل في التشكيك في جميع افتراضاتك طوال الوقت."
-- Dave Aitel
Haruspex هو إضافة IDA سريعة للغاية تعمل بدون واجهة رسومية، وتستخرج الكود الزائف الناتج عن مفكك الترجمة (decompiler) الخاص بـ IDA بصيغة يُفترض أن تكون مناسبة للاستيراد إلى بيئة تطوير متكاملة (IDE)، أو لتحليلها بواسطة أدوات التحليل الساكن مثل Semgrep، أو weggli، أو oneiromancer.

decompile_to_file] لتفكيك دالة وحفظ الكود الزائف وتعريفات الأنواع الخاصة بها على القرص، مع التمييز بين الدوال التي يتعذّر تفكيكها والأخطاء مثل عدم توفر ترخيص Hex-Rays.أسهل طريقة للحصول على أحدث إصدار هي عبر crates.io:
export IDADIR=/path/to/ida # if not set, the build script will check common locations
cargo install haruspex --locked
أما على Windows، فاستخدم الأوامر التالية:
$env:LIBCLANG_PATH="\path\to\clang+llvm\bin"
$env:PATH="\path\to\ida;$env:PATH"
$env:IDADIR="\path\to\ida" # if not set, the build script will check common locations
cargo install haruspex --locked
بدلاً من ذلك، يمكنك البناء من المصدر:
git clone --depth 1 https://github.com/0xdea/haruspex
cd haruspex
export IDADIR=/path/to/ida # if not set, the build script will check common locations
cargo build --release --locked
أما على Windows، فاستخدم الأوامر التالية:
git clone --depth 1 https://github.com/0xdea/haruspex
cd haruspex
$env:LIBCLANG_PATH="\path\to\clang+llvm\bin"
$env:PATH="\path\to\ida;$env:PATH"
$env:IDADIR="\path\to\ida" # if not set, the build script will check common locations
cargo build --release --locked
IDADIR إذا كان تثبيت IDA لديك في موقع غير قياسي.haruspex <binary_file>
<binary_file>، المسمّى باسمه مع استبدال امتداده، إن وُجد، بـ .dec (على سبيل المثال، يُنتج كل من foo.exe وfoo الملف foo.dec، لذا تتشارك الملفات الثنائية التي تختلف فقط في امتدادها نفس دليل الإخراج):
vim foo.dec
code foo.dec
يُدعم رسميًا أحدث إصدار من IDA فقط، لكن الإصدارات الأقدم قد تعمل أيضًا. يلخّص الجدول التالي أحدث إصدار متوافق مع كل إصدار من IDA:
| إصدار IDA | أحدث إصدار متوافق |
|---|---|
| v9.0.240925 | v0.2.4 |
| v9.0.241217 | v0.3.5 |
| v9.1.250226 | v0.6.2 |
| v9.2.250908 | v0.7.5 |
| v9.3.260213 | v0.8.1 |
| v9.3.260327 | v0.9.0 |
| v9.3.260421 | v0.9.3 |
| v9.4.260714 | الإصدار الحالي |
| v9.4.260915 | الإصدار الحالي |
[!NOTE] راجع وثائق idalib-rs للحصول على معلومات إضافية.
حظي تطوير هذا المشروع بدعم المنظمات التالية:
.cpp بدلاً من .c لإخراج الكود الزائف (انظر هذه المشكلة)؟