Asosiy kontentga o‘tish
AI qo‘llanmalari

x64dbg-MCP Server yordamida AI yordamchisini x64dbg’ga ulash

x64dbg-MCP Server’ni o‘rnatish, uning HTTP endpoint’ini himoyalash, MCP bilan mos keluvchi AI yordamchisini ulash hamda ikkilik fayllarni yuklash, to‘xtash nuqtalarini o‘rnatish, registrlarni tekshirish, xotirani o‘qish, kodni kuzatish va modullarni tahlil qilish kabi keng tarqalgan nosozliklarni tuzatish vazifalarini bajarishni o‘rganing.

x64dbg-MCP Server yordamida AI yordamchisini x64dbg’ga ulash

x64dbg-MCP Server nima?

x64dbg-MCP Server — Model Context Protocol uchun x64dbgga mo‘ljallangan native plagin. U x64dbg funksiyalarini HTTP orqali JSON-RPC yordamida taqdim etadi va MCP bilan mos AI yordamchisiga debugging seanslarini dasturiy tarzda boshqarish imkonini beradi.

Yordamchi jarayonni yuklashi yoki unga ulanashi, breakpointlar o‘rnatishi, ko‘rsatmalarni bosqichma-bosqich bajarishi, registrlarni tekshirishi, xotirani o‘qishi va o‘zgartirishi, modullar hamda oqimlarni ko‘rib chiqishi, satrlarni ajratib olishi, havolalarni kuzatishi, PE tuzilmalarini tahlil qilishi va boshqa ko‘plab reverse engineering amallarini bajarishi mumkin.

Plagin Zig tilida yozilgan va bevosita x64dbg ichida ishlaydi. U Python, .NET yoki alohida runtime talab qilmaydi. Plagin Streamable HTTP va eski SSE transportlari bilan MCP 2024-11-05 spetsifikatsiyasini qo‘llab-quvvatlaydi.

Ushbu dasturdan faqat qonuniy reverse engineering, zararli dasturlar tahlili, xavfsizlik tadqiqotlari, ta’lim yoki aniq ruxsatingiz mavjud bo‘lgan boshqa ishlar uchun foydalaning.

Asosiy imkoniyatlar

  • Keng debugger boshqaruvi: Vositalar disassembly, bajarilish, breakpointlar, registrlar, xotira, modullar, oqimlar, chaqiruv steklari, belgilar, havolalar, PE tahlili, tracing, dumping, PEB tekshiruvi va boshqa ko‘plab funksiyalarni qamrab oladi.
  • Debugger hodisalarini qamrab olish: Plagin ishga tushirish, to‘xtashlar, breakpointlar, istisnolar, bosqichma-bosqich bajarish, jarayonga ulanish, DLL faoliyati va oqimlar faoliyati kabi hodisalarni qayd etadi.
  • Native o‘rnatish: Plagin tashqi runtime yoki framework bog‘liqliklariga ega emas.
  • x32 va x64 qo‘llab-quvvatlovi: Bitta kod bazasi x64dbg’ning har ikkala arxitekturasi uchun plaginlar yaratadi.
  • Ikki MCP transporti: Streamable HTTP tavsiya etiladi, SSE esa eski MCP mijozlarini qo‘llab-quvvatlaydi.
  • Majburiy autentifikatsiya: Har bir so‘rovda yaroqli Bearer token bo‘lishi kerak.
  • Avtomatik ishga tushish: Server x64dbg ishga tushganda boshlanadi.
  • Ichki konfiguratsiya: x64dbg Plugins menyusi bind manzili, port va tokenni sozlash imkonini beradi.
  • Kross-kompilyatsiya: Zig Windows, WSL, Linux yoki macOS tizimlaridan Windows plaginlarini yaratishi mumkin.

Integratsiya qanday ishlaydi

x64dbg ishga tushganda, plagin debugger API belgilarini x64bridge.dll va x64dbg.dll fayllaridan aniqlaydi. Keyin fon oqimida HTTP serverni ishga tushiradi. MCP mijozi autentifikatsiyadan o‘tgan JSON-RPC so‘rovlarini yuboradi va har bir MCP vositasi breakpoint o‘rnatish, xotirani o‘qish yoki bajarilishni davom ettirish kabi x64dbg SDK chaqiruvlariga mos keladi.

Plagin x64dbg jarayoni ichida ishlagani uchun debugger API bilan bevosita aloqa qiladi. Tashqi yordamchi jarayon yoki polling xizmati talab qilinmaydi.

Plaginni o‘rnatish

1-variant: Release versiyasini o‘rnatish

  1. Eng so‘nggi paketni loyihaning GitHub releases sahifasidan yuklab oling.
  2. Paketni arxivdan chiqaring.
  3. Uning dist/ katalogi ichidagi tarkibni x64dbg o‘rnatilgan ildiz katalogiga nusxalang.
  4. x64dbg’ning x32 yoki x64 nashrini ishga tushiring.

Tarqatma paket x64dbg katalog tuzilmasini takrorlaydi, shuning uchun uni ildiz katalogga nusxalash har ikkala arxitekturaga xos plaginni o‘rnatadi:

dist/
├── x32/
│   └── plugins/
│       └── x64dbg-MCP-Server.dp32
└── x64/
    └── plugins/
        └── x64dbg-MCP-Server.dp64

Server avtomatik ishga tushadi. Uning standart portlari:

  • x64: 0.0.0.0:9094
  • x32: 0.0.0.0:9095

2-variant: Manba kodidan yaratish

Yaratish uchun Zig 0.16-dev yoki undan keyingi versiyasi kerak. Repository ildiz katalogida quyidagini ishga tushiring:

zig build -Doptimize=ReleaseSafe --prefix dist

Buyruq dist/ ichida x32 va x64 plagin fayllarini yaratadi. Release paketida bo‘lgani kabi, ushbu katalog tarkibini x64dbg ildiz katalogiga nusxalang.

Server va autentifikatsiyani sozlash

x64dbg’da Plugins > x64dbg-MCP Server > Configure MCP Server... bo‘limini oching. Muloqot oynasi bind manzili, port va autentifikatsiya tokenini o‘zgartirish imkonini beradi.

  • MCP mijozi ayni Windows tizimida ishlasa va masofaviy ulanish kerak bo‘lmasa, 127.0.0.1 dan foydalaning.
  • WSL yoki hostga tarmoq orqali ulanishi kerak bo‘lgan boshqa mashinadan ulanayotgan bo‘lsangiz, 0.0.0.0 dan foydalaning.
  • Joriy tokenni nusxalash uchun Copy ni tanlang.
  • Tokenni almashtirish uchun Generate ni tanlang.

Bearer token birinchi ishga tushirishda avtomatik yaratiladi. To‘g‘ri tokensiz yuborilgan so‘rovlar 401 Unauthorized javobini oladi. Saqlangan o‘zgarishlar darhol kuchga kiradi, chunki server avtomatik qayta ishga tushadi. Konfiguratsiya x64dbg bajariluvchi fayli yonidagi mcp_config.json faylida saqlanadi.

Server shifrlanmagan HTTP orqali xotirani o‘qish va yozish, jarayonlarni boshqarish hamda debugger buyruqlarini bajarish imkonini beradi. Bearer autentifikatsiyasi majburiy bo‘lsa ham, serverni ishonchsiz tarmoqqa ochmang.

MCP mijozini ulash

Tavsiya etilgan Streamable HTTP konfiguratsiyasi

MCP mijozi konfiguratsiyasiga, masalan, .mcp.json fayliga server yozuvini qo‘shing. Standart x64 porti uchun quyidagidan foydalaning:

{
  "mcpServers": {
    "x64dbg": {
      "type": "http",
      "url": "http://localhost:9094/",
      "headers": {
        "Authorization": "Bearer YOUR_TOKEN_HERE"
      }
    }
  }
}

YOUR_TOKEN_HERE o‘rniga plagin konfiguratsiyasi oynasidan nusxalangan tokenni kiriting. Agar x32dbg’dan foydalanayotgan bo‘lsangiz, standart portni 9095 ga o‘zgartiring.

Eski mijozlar uchun SSE konfiguratsiyasi

Agar MCP mijozingiz faqat SSE'ni qo‘llab-quvvatlasa, sse transportini tanlang va endpoint oxiriga /sse qo‘shing:

{
  "mcpServers": {
    "x64dbg": {
      "type": "sse",
      "url": "http://localhost:9094/sse",
      "headers": {
        "Authorization": "Bearer YOUR_TOKEN_HERE"
      }
    }
  }
}

WSL yoki masofaviy kirish uchun localhost o‘rniga Windows xostining IP manzilini kiriting va server 0.0.0.0 manziliga bog‘langaniga ishonch hosil qiling.

AI yordamidagi oddiy disk raskadrovka seansini ishga tushirish

Mijozni ulaganingizdan so‘ng, x64dbg'ni oching va yordamchidan kichik disk raskadrovka vazifalari ketma-ketligini bajarishni so‘rang. Odatdagi seans quyidagicha boshlanishi mumkin:

calc.exe'ni yuklang va kirish nuqtasida to‘xtang.

Yordamchi bajariladigan faylni yuklash, bajarilishni davom ettirish va breakpointga yetilguncha kutish uchun LoadBinary, SetBreakpoint, run va WaitForPause vositalarini birgalikda ishlatishi mumkin.

Registrlarni tekshirish

Nishon jarayon to‘xtatilgach, quyidagini so‘rang:

Joriy protsessor registrlarini ko‘rsating.

Yordamchi GetAllRegisters funksiyasini chaqirishi mumkin. Ruxsat berilgan disk raskadrovka seansi davomida qiymatni o‘zgartirish uchun SetRegister dan foydalanishi mumkin.

Xotirani o‘qish va disassemblerdan o‘tkazish

Yordamchidan joriy instruction pointer atrofidagi kodni tekshirishni so‘rang:

Joriy instruction pointer manzilidan 64 baytni o‘qing va keyingi 10 ta instruktsiyani disassemblerdan o‘tkazing.

Buning uchun GetCurrentAddress, ReadMemory va Disassemble ishlatilishi mumkin. To‘liq tahlil qilingan funksiyani tekshirish uchun DisassembleFunction ni so‘rang.

Kodni bosqichma-bosqich bajarish

Bajarilish vositalari tanish x64dbg amallariga mos keladi:

  • StepInto F7 kabi chaqiruvlar ichiga kiradi.
  • StepOver F8 kabi chaqiruvlar ustidan o‘tadi.
  • StepOut joriy funksiya qaytguncha bajaradi.
  • run F9 kabi bajarilishni davom ettiradi.
  • PauseDebug nishon jarayonni to‘xtatadi.
  • RunToAddress ko‘rsatilgan manzilga yetilguncha davom etadi.

Masalan:

Keyingi uchta instruktsiya ustidan o‘ting, so‘ng joriy manzil va chaqiruvlar stekini ko‘rsating.

Yordamchi StepOver ni uch marta, keyin esa GetCurrentAddress va GetCallStack ni chaqirishi mumkin.

Breakpointlardan samarali foydalanish

Plagin oddiy dasturiy breakpointlar, apparat breakpointlari, xotira breakpointlari, shartli breakpointlar va istisno breakpointlarini qo‘llab-quvvatlaydi.

Shartli breakpoint misoli

Nishon funksiyasiga breakpoint o‘rnating, lekin faqat ko‘rsatilgan x64dbg sharti rost bo‘lganda to‘xtating.

Yordamchi SetConditionalBreakpoint dan x64dbg shart ifodasi va ixtiyoriy log amali bilan foydalanishi mumkin. Bog‘liq vositalar breakpointni yoqishi, o‘chirishi, almashtirishi, o‘chirib tashlashi yoki urilishlar hisoblagichini tiklashi mumkin.

Apparat va xotira breakpointlari

Mavjud debug registrlari orqali o‘qish, yozish yoki bajarilishni kuzatish uchun SetHardwareBreakpoint dan foydalaning. Sahifa darajasida o‘qish, yozish yoki bajarilishni kuzatish tekshiruv uchun mosroq bo‘lsa, SetMemoryBreakpoint dan foydalaning.

Yana breakpointlar yaratishdan oldin yordamchidan ListBreakpoints ni chaqirishni so‘rang. Bu debugger holatidagi takroriy yoki ziddiyatli sozlamalarning oldini olishga yordam beradi.

Modullar, belgilar va havolalarni tahlil qilish

Server quyi darajadagi disk raskadrovkadan kengroq dastur tahliliga o‘tish uchun bir nechta vositalarni taqdim etadi:

  • ListModules yuklangan modullar, bazaviy manzillar va o‘lchamlarni ko‘rsatadi.
  • AnalyzeModule PE bo‘limlari, kirish nuqtasi va tasvir o‘lchamini tekshiradi.
  • GetImports va GetExports import va eksport jadvallarini tekshiradi.
  • SearchSymbols andozaga mos belgilarni topadi.
  • GetFunctions tahlil qilingan funksiyalar va yorliqlarni ro‘yxatlaydi.
  • GetReferences nishon manziliga olib boruvchi CALL va JMP havolalarini topadi.
  • FindPattern modul xotirasini skanerlaydi va ?? wildcard belgilarini qo‘llab-quvvatlaydi.
  • GetStrings modul xotirasidan ASCII satrlarini ajratib oladi.
  • DetectOEP qadoqlangan bajariluvchi fayllarning asl kirish nuqtasini topishga yordam beradi.

Amaliy tahlil so‘rovi quyidagicha bo‘lishi mumkin:

Yuklangan modullarni ro‘yxatlang, asosiy bajariluvchi faylni tahlil qiling, uning ASCII satrlarini ajrating va tanlangan funksiyaga havolalarni ko‘rsating.

Qo‘shimcha maslahatlar

Hodisalardan xabardor ish jarayonlaridan foydalanish

Bajarilishni davom ettirgandan so‘ng nishon jarayon darhol to‘xtagan deb hisoblamang. run, breakpoint amallari yoki boshqa asinxron debugger harakatlaridan keyin WaitForPause yoki WaitForEvent dan foydalaning. GetEventLog orqali oxirgi breakpointlar, istisnolar, DLL yuklanishi va boshqa tegishli hodisalarni ko‘rish mumkin.

Alohida bosqichlarni takrorlash o‘rniga tracingdan foydalanish

Qisqa instruktsiyalar tarixini olish uchun chaqiruvlar ichiga kirib bosqichma-bosqich bajarish paytida manzillar va disassemblyni yozib olish uchun TraceInto dan foydalaning. Chaqiruvlar ustidan o‘tish kerak bo‘lsa, TraceOver dan foydalaning. Bu ko‘plab alohida bosqich so‘rovlarini yuborishdan qulayroq.

Ifodalarni paketli tekshirish

EvalExpression manzil, registr yoki arifmetik ifoda kabi x64dbg ifodasini hisoblaydi. Bir nechta qiymatni birgalikda kuzatish kerak bo‘lsa, bir so‘rovda bir nechta ifodani hisoblash uchun WatchExpressions dan foydalaning.

Tahlil holatini saqlash va tiklash

Muhim joylarga izoh va belgi qo‘shish uchun CommentOrLabelAtAddress hamda xatcho‘p vositalaridan foydalaning. x64dbg ma’lumotlar bazasini .dd64 yoki .dd32 fayli sifatida saqlash uchun SaveDatabase ni chaqiring.

Ehtiyotkorlik bilan patch qo‘llash

WriteMemToAddress baytlarni patchlaydi, Assemble esa manzilda yig‘ilgan instruktsiyani yozadi. Patchlashdan oldin mavjud baytlarni tekshiring va o‘zgarishlarni qayd etib qo‘ying. O‘zgartirishlarni ko‘rib chiqish uchun GetPatchesdan, asl baytlarni tiklash uchun esa RestorePatchesdan foydalaning.

Jarayon tuzilmalarini tekshirish

Process Environment Block maydonlarini tekshirish uchun GetPEBdan, x32 Structured Exception Handler zanjiri uchun GetSEHChaindan, funksiyaga berilgan argumentlarni registrlar yoki stekdan tekshirish uchun esa GetArgumentsdan foydalaning. FollowPointer ko‘rsatkichlar zanjirini belgilangan darajalar soni bo‘yicha dereferensiya qilishi mumkin.

Tarmoq ta’sirini minimal darajada saqlang

Masofaviy ulanish talab qilinmasa, 127.0.0.1dan foydalaning. 0.0.0.0ga bog‘lanish zarur bo‘lsa, ishonchli tarmoq boshqaruv vositalari yordamida kirishni cheklang, tokenni himoyalang va uning oshkor bo‘lganidan shubhalansangiz, uni almashtiring. Transport shifrlangan HTTPS emas, HTTP ekanini yodda tuting.

Foydali operatsion vositalar

  • GetDebugState disk raskadrovka sessiyasi faol yoki yo‘qligini tekshiradi hamda PID va instruktsiyalar ko‘rsatkichini bildiradi.
  • AttachProcess x64dbg’ni PID orqali ishlayotgan jarayonga ulaydi.
  • ExecuteDebuggerCommand x64dbg buyrug‘ini bevosita ishga tushiradi.
  • ListCommandsByCategory MCP mijoziga mavjud vositalarni aniqlashda yordam beradi.
  • GetThreads, SwitchThread, SuspendThread va ResumeThread oqim kontekstini boshqaradi.
  • GetMemoryMap va GetDumpableRegions xotirani o‘qish yoki dump qilishdan oldin xotira hududlarini aniqlaydi.
  • DumpMemory tanlangan xotira diapazonini, DumpModule esa butun modulni saqlaydi.
  • StopDebug joriy sessiyani tugatadi, RestartDebug esa uni qayta ishga tushiradi.

Xulosa

x64dbg-MCP Server tashqi runtime talab qilmasdan, x64dbg’ning mahalliy disk raskadrovka imkoniyatlarini MCP bilan mos AI yordamchilariga ulaydi. To‘g‘ri x32 va x64 plaginlarini o‘rnatib, yaratilgan Bearer tokenni nusxalab, HTTP yoki SSE endpointini sozlaganingizdan so‘ng, disk raskadrovkaning to‘liq ish jarayonlarini tabiiy tildagi so‘rovlar orqali boshqarishingiz mumkin.

Faqat lokal ulanish manzilidan va oddiy, faqat o‘qishga mo‘ljallangan tekshiruv vazifalaridan boshlang. Keyin hodisalardan xabardor qadam-baqadam bajarish, shartli breakpointlar, tracing, PE tahlili va ehtiyotkorlik bilan boshqariladigan xotira o‘zgartirishlariga o‘ting. Serverdan har doim ruxsat berilgan maqsadlarda foydalaning va uning shifrlanmagan HTTP interfeysini ishonchsiz tarmoqlarga ochib qo‘ymang.