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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
dumpulator — مكتبة سهلة الاستخدام لمحاكاة تفريغات الذاكرة. مفيدة لتحليل البرامج الضارة (استخراج التهيئة، فك التعبئة) والتحليل الديناميكي بشكل عام (الصندوق الرملي). | Kitploit
أدوات/GitHubGitHub/mrexodia/dumpulator
التحليل الديناميكي (عزل)الهندسة العكسيةتحليل البرمجيات الخبيثةتحليل الملفات الثنائية
GitHubmrexodia/dumpulator

dumpulator

مكتبة سهلة الاستخدام لمحاكاة تفريغات الذاكرة. مفيدة لتحليل البرامج الضارة (استخراج التهيئة، فك التعبئة) والتحليل الديناميكي بشكل عام (الصندوق الرملي).

عرض المستودع
87752منذ 2 سنواتتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

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

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

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

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

dumpulator

ملاحظة: هذا نموذج أولي قيد التطوير، يرجى التعامل معه على هذا الأساس. طلبات السحب مرحب بها! يمكنك البدء مع المشكلات الأولى الجيدة

مكتبة سهلة الاستخدام لمحاكاة الكود في ملفات minidump. فيما يلي بعض الروابط لمقالات/فيديوهات تستخدم dumpulator:

  • فيديو تمهيدي مع OALabs: Dumpulator - استخدام المحاكاة الثنائية لأتمتة الهندسة العكسية
  • محاكاة البرامج الضارة باستخدام Dumpulator
  • محاكاة تكوين Emotet x64 Stack Strings | OALabs Research
  • استدعاء الدوال الأصلية وكود التجميع
  • فك تشفير سلاسل Guloader (VEH)
  • Rhadamanthys | OALabs Research
  • [دراسة حالة] فك تشفير السلاسل باستخدام Dumpulator

لا تتردد في إرسال طلب سحب لإضافة مقالتك هنا!

أمثلة

استدعاء دالة

المثال أدناه يفتح StringEncryptionFun_x64.dmp (قم بتنزيل نسخة هنا)، ويخصص بعض الذاكرة ويستدعي دالة فك التشفير عند 0x140001000 لفك تشفير السلسلة النصية عند 0x140017000:

root@kitploit:~
from dumpulator import Dumpulator

dp = Dumpulator("StringEncryptionFun_x64.dmp")
temp_addr = dp.allocate(256)
dp.call(0x140001000, [temp_addr, 0x140017000])
decrypted = dp.read_str(temp_addr)
print(f"decrypted: '{decrypted}'")

يتم جمع StringEncryptionFun_x64.dmp عند نقطة الدخول لمثال tests/StringEncryptionFun. يمكنك الحصول على الملفات الثنائية المترجمة لـ StringEncryptionFun هنا

تتبع التنفيذ

root@kitploit:~
from dumpulator import Dumpulator

dp = Dumpulator("StringEncryptionFun_x64.dmp", trace=True)
dp.start(dp.regs.rip)

سينشئ ذلك ملف StringEncryptionFun_x64.dmp.trace بقائمة من التعليمات المنفذة وبعض الإشارات المفيدة عند تبديل الوحدات إلخ. لاحظ أن التتبع يبطئ المحاكاة بشكل كبير وهو مخصص في الغالب لتصحيح الأخطاء.

قراءة سلاسل utf-16

root@kitploit:~
from dumpulator import Dumpulator

dp = Dumpulator("my.dmp")
buf = dp.call(0x140001000)
dp.read_str(buf, encoding='utf-16')

تشغيل مقتطف من الكود

لنفترض أن لديك الدالة التالية:

root@kitploit:~
00007FFFC81C06C0 | mov qword ptr [rsp+0x10],rbx       ; prolog_start
00007FFFC81C06C5 | mov qword ptr [rsp+0x18],rsi
00007FFFC81C06CA | push rbp
00007FFFC81C06CB | push rdi
00007FFFC81C06CC | push r14
00007FFFC81C06CE | lea rbp,qword ptr [rsp-0x100]
00007FFFC81C06D6 | sub rsp,0x200                      ; prolog_end
00007FFFC81C06DD | mov rax,qword ptr [0x7FFFC8272510]

تريد فقط تنفيذ المقدمة وإعداد بعض السجلات:

root@kitploit:~
from dumpulator import Dumpulator

prolog_start = 0x00007FFFC81C06C0
# we want to stop the instruction after the prolog
prolog_end = 0x00007FFFC81C06D6 + 7

dp = Dumpulator("my.dmp", quiet=True)
dp.regs.rcx = 0x1337
dp.start(begin=prolog_start, end=prolog_end)
print(f"rsp: {hex(dp.regs.rsp)}")

يؤدي علم quiet إلى كتم السجلات حول DLLs المحملة ومناطق الذاكرة التي تم إعدادها (لاستخدامها في السكريبتات حيث تريد تقليل الضوضاء في السجلات).

تنفيذ استدعاء نظام مخصص

يمكنك (إعادة) تنفيذ استدعاءات النظام باستخدام المُزيّن @syscall:

root@kitploit:~
from dumpulator import *
from dumpulator.native import *
from dumpulator.handles import *
from dumpulator.memory import *

@syscall
def ZwQueryVolumeInformationFile(dp: Dumpulator,
                                 FileHandle: HANDLE,
                                 IoStatusBlock: P[IO_STATUS_BLOCK],
                                 FsInformation: PVOID,
                                 Length: ULONG,
                                 FsInformationClass: FSINFOCLASS
                                 ):
    return STATUS_NOT_IMPLEMENTED

يمكن العثور على جميع نماذج دوال استدعاء النظام في ntsyscalls.py. هناك أيضًا العديد من الأمثلة هناك حول كيفية استخدام واجهة API.

لربط تنفيذ استدعاء نظام موجود يمكنك القيام بما يلي:

root@kitploit:~
import dumpulator.ntsyscalls as ntsyscalls

@syscall
def ZwOpenProcess(dp: Dumpulator,
                  ProcessHandle: Annotated[P[HANDLE], SAL("_Out_")],
                  DesiredAccess: Annotated[ACCESS_MASK, SAL("_In_")],
                  ObjectAttributes: Annotated[P[OBJECT_ATTRIBUTES], SAL("_In_")],
                  ClientId: Annotated[P[CLIENT_ID], SAL("_In_opt_")]
                  ):
    process_id = ClientId.read_ptr()
    assert process_id == dp.parent_process_id
    ProcessHandle.write_ptr(0x1337)
    return STATUS_SUCCESS

@syscall
def ZwQueryInformationProcess(dp: Dumpulator,
                              ProcessHandle: Annotated[HANDLE, SAL("_In_")],
                              ProcessInformationClass: Annotated[PROCESSINFOCLASS, SAL("_In_")],
                              ProcessInformation: Annotated[PVOID, SAL("_Out_writes_bytes_(ProcessInformationLength)")],
                              ProcessInformationLength: Annotated[ULONG, SAL("_In_")],
                              ReturnLength: Annotated[P[ULONG], SAL("_Out_opt_")]
                              ):
    if ProcessInformationClass == PROCESSINFOCLASS.ProcessImageFileNameWin32:
        if ProcessHandle == dp.NtCurrentProcess():
            main_module = dp.modules[dp.modules.main]
            image_path = main_module.path
        elif ProcessHandle == 0x1337:
            image_path = R"C:\Windows\explorer.exe"
        else:
            raise NotImplementedError()
        buffer = UNICODE_STRING.create_buffer(image_path, ProcessInformation)
        assert ProcessInformationLength >= len(buffer)
        if ReturnLength.ptr:
            dp.write_ulong(ReturnLength.ptr, len(buffer))
        ProcessInformation.write(buffer)
        return STATUS_SUCCESS
    return ntsyscalls.ZwQueryInformationProcess(dp,
                                                ProcessHandle,
                                                ProcessInformationClass,
                                                ProcessInformation,
                                                ProcessInformationLength,
                                                ReturnLength
                                                )

هياكل مخصصة

منذ v0.2.0 هناك دعم لتعريف هياكل خاصة بك بسهولة:

root@kitploit:~
from dumpulator.native import *

class PROCESS_BASIC_INFORMATION(Struct):
    ExitStatus: ULONG
    PebBaseAddress: PVOID
    AffinityMask: KAFFINITY
    BasePriority: KPRIORITY
    UniqueProcessId: ULONG_PTR
    InheritedFromUniqueProcessId: ULONG_PTR

لإنشاء مثيل لهذه الهياكل، يجب عليك استخدام مثيل Dumpulator:

root@kitploit:~
pbi = PROCESS_BASIC_INFORMATION(dp)
assert ProcessInformationLength == Struct.sizeof(pbi)
pbi.ExitStatus = 259  # STILL_ACTIVE
pbi.PebBaseAddress = dp.peb
pbi.AffinityMask = 0xFFFF
pbi.BasePriority = 8
pbi.UniqueProcessId = dp.process_id
pbi.InheritedFromUniqueProcessId = dp.parent_process_id
ProcessInformation.write(bytes(pbi))
if ReturnLength.ptr:
    dp.write_ulong(ReturnLength.ptr, Struct.sizeof(pbi))
return STATUS_SUCCESS

إذا مررت قيمة مؤشر كوسيطة ثانية، سيتم قراءة الهيكل من الذاكرة. يمكنك تعريف المؤشرات باستخدام myptr: P[MY_STRUCT] وإلغاء الإشارة إليها باستخدام myptr[0].

جمع التفريغ

هناك إضافة بسيطة لـ x64dbg متاحة تسمى MiniDumpPlugin تم دمج أمر minidump في x64dbg منذ 2022-10-10. لإنشاء تفريغ، قم بإيقاف التنفيذ مؤقتًا وتنفيذ الأمر MiniDump my.dmp.

التثبيت

من PyPI (أحدث إصدار):

root@kitploit:~
python -m pip install dumpulator

للتثبيت من المصدر:

root@kitploit:~
python setup.py install

تثبيت لبيئة تطوير:

root@kitploit:~
python setup.py develop

أعمال ذات صلة

  • Dumpulator-IDA: هذا المشروع عبارة عن إضافة POC صغيرة لتشغيل محاكاة dumpulator داخل IDA، وتمرير العناوين من عرض IDA الخاص بك باستخدام قائمة السياق.
  • wtf: مفجر قائم على اللقطات موزع وموجه بتغطية الكود وقابل للتخصيص ومنصات متعددة مصمم لمهاجمة أهداف وضع المستخدم و/أو وضع النواة على نظام Microsoft Windows.
  • speakeasy: بيئة اختبار Windows فوق unicorn.
  • qiling: إطار محاكاة ثنائي فوق unicorn.
  • Simpleator: محاكي تطبيقات وضع المستخدم يعتمد على Hyper-V Platform API.

ما يميز dumpulator عن بيئات الحماية مثل speakeasy و qiling هو أن ذاكرة العملية الكاملة متوفرة. هذا يحسن الأداء لأنه يمكنك محاكاة أجزاء كبيرة من البرامج الضارة دون مغادرة unicorn أبدًا. بالإضافة إلى ذلك، يجب محاكاة استدعاءات النظام فقط لتوفير بيئة Windows واقعية (نظرًا لأن كل شيء في الواقع هو بيئة عملية مشروعة).

الاعتمادات

  • herrcore لإلهامي لصنع هذا
  • secret club
  • JetBrains لترخيص PyCharm المجاني!
  • صورة من GraphiqaStock على Freepik
تنزيل الأداة