
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
- Eng so‘nggi paketni loyihaning GitHub releases sahifasidan yuklab oling.
- Paketni arxivdan chiqaring.
- Uning
dist/katalogi ichidagi tarkibni x64dbg o‘rnatilgan ildiz katalogiga nusxalang. - 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.dp64Server 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 distBuyruq 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.1dan foydalaning. - WSL yoki hostga tarmoq orqali ulanishi kerak bo‘lgan boshqa mashinadan ulanayotgan bo‘lsangiz,
0.0.0.0dan 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:
StepIntoF7 kabi chaqiruvlar ichiga kiradi.StepOverF8 kabi chaqiruvlar ustidan o‘tadi.StepOutjoriy funksiya qaytguncha bajaradi.runF9 kabi bajarilishni davom ettiradi.PauseDebugnishon jarayonni to‘xtatadi.RunToAddressko‘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:
ListModulesyuklangan modullar, bazaviy manzillar va o‘lchamlarni ko‘rsatadi.AnalyzeModulePE bo‘limlari, kirish nuqtasi va tasvir o‘lchamini tekshiradi.GetImportsvaGetExportsimport va eksport jadvallarini tekshiradi.SearchSymbolsandozaga mos belgilarni topadi.GetFunctionstahlil qilingan funksiyalar va yorliqlarni ro‘yxatlaydi.GetReferencesnishon manziliga olib boruvchi CALL va JMP havolalarini topadi.FindPatternmodul xotirasini skanerlaydi va??wildcard belgilarini qo‘llab-quvvatlaydi.GetStringsmodul xotirasidan ASCII satrlarini ajratib oladi.DetectOEPqadoqlangan 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
GetDebugStatedisk raskadrovka sessiyasi faol yoki yo‘qligini tekshiradi hamda PID va instruktsiyalar ko‘rsatkichini bildiradi.AttachProcessx64dbg’ni PID orqali ishlayotgan jarayonga ulaydi.ExecuteDebuggerCommandx64dbg buyrug‘ini bevosita ishga tushiradi.ListCommandsByCategoryMCP mijoziga mavjud vositalarni aniqlashda yordam beradi.GetThreads,SwitchThread,SuspendThreadvaResumeThreadoqim kontekstini boshqaradi.GetMemoryMapvaGetDumpableRegionsxotirani o‘qish yoki dump qilishdan oldin xotira hududlarini aniqlaydi.DumpMemorytanlangan xotira diapazonini,DumpModuleesa butun modulni saqlaydi.StopDebugjoriy sessiyani tugatadi,RestartDebugesa 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.
