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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
goblin — أداة تحليل ثنائي (binary) عابرة للمنصات، ذات طابع شقي، مكتوبة بلغة Rust. | Kitploit
أدوات/GitHubGitHub/m4b/goblin
الهندسة العكسيةالاختبار العشوائيتحليل الملفات الثنائية
GitHubm4b/goblin

goblin

أداة تحليل ثنائي (binary) عابرة للمنصات، ذات طابع شقي، مكتوبة بلغة Rust.

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

الأكثر شعبية

عرض الكل →

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

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

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

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

libgoblin

Actions crates.io version

say the right words

التوثيق

https://docs.rs/goblin/

سجل التغييرات

الاستخدام

يتطلب Goblin rustc 1.85.0 (إصدار Rust 2024).

أضف إلى ملف Cargo.toml الخاص بك:

root@kitploit:~
[dependencies]
goblin = "0.10"

الميزات

  • اسم رائع للـ crate
  • تنفيذ ELF64/32 بدون نسخ، عبر المنصات، مع مراعاة ترتيب البايت - رائع!
  • محلل Mach-o 32/64 بت بدون نسخ، عبر المنصات، مع مراعاة ترتيب البايت - رائع!
  • محلل PE 32/64 بت - بوم!
  • محلل أرشيف بنمطي Unix و BSD (هذا الأخير بفضل @willglynn) - ممتاز!
  • خيارات تكوين كثيرة - ستجعل رأسك يدور، وتغضب عند قراءة المصدر!
  • تم اختباره بالـ fuzzing - "يسعدني أن أبلغ أن goblin صمد أمام 100 مليون جولة fuzzing، مليون جولة لكل بذرة من 1 إلى 100." - @sanxiyn
  • اختبارات

يهدف libgoblin إلى أن يكون محطتك الوحيدة لتحليل وتحميل وتحليل الثنائيات.

حالات الاستخدام

يدعم Goblin بشكل أساسي حالات الاستخدام الهامة التالية:

  1. أساسي، خالٍ من std، بنيات #[repr(C)]، وقت ترجمة صغير، 32/64 (أو كليهما) كما تشاء.

  2. التلاعب بالأنواع (Type punning). حدد دالة مرة واحدة على نوع، ولكنها تعمل على متغيرات 32 أو 64 بت - دون تغيير أي شيء حقًا، وبدون ماكرو! انظر examples/automagic.rs لمثال أساسي.

  3. وضع std. يضيف هذا تطبيقات القراءة والكتابة عبر Pread و Pwrite، والقراءة من ملف، والتخصيصات المريحة، وطرق إضافية، إلخ. هذا للعملاء الذين يمكنهم التخصيص ويريدون قراءة الثنائيات من القرص.

  4. Endian_fd. اسم فظيع حقًا 😆 هذا لتحليل الثنائيات كما في panopticon أو falcon الذي يحتاج إلى قراءة ثنائيات ذات ترتيب بايت أجنبي، أو كأساس لبناء أدوات ثنائية متعددة المنصات والهندسات المعمارية، على سبيل المثال cargo-sym و bingrep أمثلة بسيطة على ذلك، لكن الحدود هي السماء.

إليك بعض الأشياء التي يمكنك القيام بها باستخدام هذا الـ crate (أو المساعدة في تنفيذها لتتمكن من القيام بها):

  1. اكتب مترجمًا واستخدمه لإنشاء الثنائيات (جميع بنيات C الأولية لديها Pwrite مشتق).
  2. اكتب أداة تحليل ثنائيات تقوم بتحميل وتحليل وتقييم تنسيقات ثنائية متنوعة، على سبيل المثال، panopticon أو falcon.
  3. اكتب رابط ديناميكي شبه عامل.
  4. اكتب نواة وقم بتحميل الثنائيات باستخدام no_std cfg. أي أنها في الأساس مجرد تعريفات بنية وثوابت (مثل رأس C) - لا fd، لا مخرجات، لا std.
  5. اكتب أداة bin2json، لأنه لماذا لا تكون التنسيقات الثنائية بتنسيق JSON؟

خيارات التكوين (Cfgs)

صمم libgoblin ليكون قابلاً للتكوين بشكل كبير. الأعلام الحالية هي:

  • elf64 - ثنائيات elf ذات 64 بت، تعريفات بنية repr(C)
  • elf32 - ثنائيات elf ذات 32 بت، تعريفات بنية repr(C)
  • mach64 - تعريفات بنية repr(C) لـ mach-o ذات 64 بت
  • mach32 - تعريفات بنية repr(C) لـ mach-o ذات 32 بت
  • pe32 - تعريفات بنية repr(C) لـ PE ذات 32 بت
  • pe64 - تعريفات بنية repr(C) لـ PE ذات 64 بت
  • te - تعريفات بنية repr(C) لـ Terse Executable (TE)
  • archive - محلل أرشيف Unix
  • endian_fd - يحلل وفقًا لترتيب البايت في الثنائي
  • std - للسماح ببيئات no_std

المشرفون

  1. PE: @kkent030315
  2. Elf: @m4b، مفتوح للطلبات
  3. Mach-o: @m4b، مفتوح للطلبات

المشرفون هم المراجعون الأساسيون للنهاية الخلفية المعينة. يتم اختيارهم بناءً على المساهمات السابقة، النشاط، المعرفة الأساسية، والسلوك الودي والاجتماعي :D

حاليًا، أنا (@m4b) فقط لدي صلاحيات الدمج لجميع طلبات السحب (PRs). في المستقبل من المحتمل أن يكون للمشرف (أو المشرفين) على تلك النهاية الخلفية صلاحيات الدمج أيضًا.

أخيرًا، سأظل على الأرجح أقدم مراجعات سريعة لجميع طلبات السحب، لكن سأعتمد في الغالب/بالكامل على المشرف لتلك النهاية الخلفية.

وتذكر دائمًا حكمة بيل وتيد: "كونوا ممتازين مع بعضكم البعض!"

المساهمون

شكرًا لكم جميعًا ❤️ !

بترتيب معجمي:

  • @000lbh
  • @2vg
  • @5225225
  • @alessandrod
  • @amanieu
  • @anfedotoff
  • @apalm
  • @baloo
  • @BinFlip
  • @burjui
  • @CalebFenton
  • @chf0x
  • @connorkuehl
  • @dancrossnyc
  • @DreydenGys
  • @dureuill
  • @Evian-Zhang
  • @ExPixel
  • @flanfly
  • @glandium
  • @glslang
  • @Gelbpunkt
  • @gunbux
  • @h33p
  • @hannahfluch
  • @Hexorg
  • @ibabushkin
  • @ideeockus

المساهمة

ما لم يُنص صراحةً على خلاف ذلك، فإنك توافق على أن مساهماتك مرخصة كما هو موصوف في ملف LICENSE المرفق (MIT).

  1. يُرجى بدء رسائل الالتزام (commits) بالمكون الثنائي المتأثر؛ كلما كان أكثر تحديدًا كان أفضل، على سبيل المثال، إذا قمت فقط بتعديل عمليات النقل (relocations) في وحدة elf، فاكتب "elf.reloc: أضف ثوابت جديدة لـ Z80"
  2. يجب أن تشرح رسائل الالتزام تغييرها، لا تستخدم "تم التغيير" أو "إصلاح" بشكل عام؛ إذا قمت بدفع التزامات كهذه في طلب سحب (PR)، فكن على علم أن @m4b أو شخصًا آخر سيقوم على الأرجح بدمجها في التزام واحد (squash).
  3. إذا كنت تقوم بتغيير كبير في وحدة معينة، يُرجى فتح issue أولاً ومناقشتها؛ لا أريد إضاعة وقتك إذا لم يكن الاتجاه التقني مناسبًا، أو ما شابه.
  4. إذا كان طلب السحب الخاص بك لا يحظى بالاهتمام، يُرجى الرد على جميع التعليقات ذات الصلة المطروحة على طلب السحب، وإذا لم يكن هناك رد بعد، قم بمناداة @m4b في github ولا تتردد أيضًا في إرسال بريد إلكتروني إلى @m4b.
  5. يُرجى إضافة اختبارات إذا كنت تضيف ميزة جديدة. لا تتردد في إضافة اختبارات حتى لو لم تكن تفعل ذلك، الاختبارات رائعة وسهلة في rust.
تنزيل الأداة
@ivlzme
  • @jackcmay
  • @jan-auer
  • @Javagedes
  • @jessehui
  • @jdub
  • @Jhynjhiruu
  • @johannst
  • @JohnScience
  • @joschock
  • @jrmuizel
  • @jsgf
  • @Jvlegod
  • @keith
  • @kjempelodott
  • @kkent030315
  • @ko1n
  • @le-jzr
  • @Lichtso
  • @lion128
  • @lissyx
  • @llogiq
  • @lumag
  • @lzutao
  • @lzybkr
  • @m-hilgendorf
  • @makubacki
  • @mmaekr
  • @m4b
  • @messense
  • @mitsuhiko
  • @mkroening
  • @mre
  • @Mrmaxmeier
  • n01e0
  • nathaniel-daniel
  • @nick96
  • @nico-abram
  • @npmccallum
  • @pchickey
  • @philipc
  • @PJB3005
  • @prettyroseslover
  • @Pzixel
  • @quake
  • @raindev
  • @RaitoBezarius
  • @ReturnRei
  • @rocallahan
  • @sanxiyn
  • @SAY-5
  • @skdltmxn
  • @sollyucko
  • @supervacuus
  • @Swatinem
  • @SweetVishnya
  • @SquareMan
  • @tathanhdinh
  • @Techno-coder
  • @tiann
  • @ticki
  • @Timmmm
  • @Tiwalun
  • @track-5
  • @tux3
  • @wickerwacka
  • @willglynn
  • @woodruffw
  • @wyxloading
  • @xcoldhandsx
  • @x0rb3l
  • @x64k