Ruka hadi maudhui makuu
Mafunzo ya AI

Unganisha Msaidizi wa AI na x64dbg kwa Kutumia Seva ya x64dbg-MCP

Jifunze jinsi ya kusakinisha Seva ya x64dbg-MCP, kulinda kituo chake cha HTTP, kuunganisha msaidizi wa AI anayelingana na MCP, na kutekeleza kazi za kawaida za utatuzi kama vile kupakia jozi, kuweka vizuizi, kukagua rejista, kusoma kumbukumbu, kufuatilia msimbo na kuchanganua moduli.

Unganisha Msaidizi wa AI na x64dbg kwa Kutumia Seva ya x64dbg-MCP

Seva ya x64dbg-MCP ni Nini?

x64dbg-MCP Server ni programu-jalizi asilia ya Model Context Protocol kwa ajili ya x64dbg. Hufichua utendaji wa x64dbg kupitia JSON-RPC kwa HTTP, na kumruhusu msaidizi wa AI anayeoana na MCP kudhibiti vipindi vya utatuzi wa programu kwa njia ya kimfumo.

Msaidizi anaweza kupakia au kuunganisha kwenye mchakato, kuweka vizuizi vya kusitisha, kupitia maagizo hatua kwa hatua, kukagua rejista, kusoma na kurekebisha kumbukumbu, kuchunguza moduli na nyuzi, kutoa mifuatano ya herufi, kufuata marejeo, kuchanganua miundo ya PE, na kufanya shughuli nyingine nyingi za uhandisi wa kurudi nyuma.

Programu-jalizi imeandikwa kwa Zig na hufanya kazi moja kwa moja ndani ya x64dbg. Haihitaji Python, .NET, wala mazingira tofauti ya utekelezaji. Inaunga mkono vipimo vya MCP 2024-11-05 kwa usafirishaji wa Streamable HTTP na SSE ya zamani.

Tumia programu hii tu kwa uhandisi halali wa kurudi nyuma, uchanganuzi wa programu hasidi, utafiti wa usalama, elimu, au kazi nyingine ambayo unaidhinishwa wazi kufanya.

Vipengele Muhimu

  • Udhibiti mpana wa kitatuzi: Zana zinajumuisha utenganishaji wa maagizo, utekelezaji, vizuizi vya kusitisha, rejista, kumbukumbu, moduli, nyuzi, rundo la miito, alama, marejeo, uchanganuzi wa PE, ufuatiliaji, utupaji wa kumbukumbu, ukaguzi wa PEB, na mengine.
  • Ufuatiliaji wa matukio ya kitatuzi: Programu-jalizi hurekodi matukio yanayojumuisha uanzishaji, kusitisha, vizuizi vya kusitisha, vighairi, upitishaji wa hatua, kuunganisha mchakato, shughuli za DLL, na shughuli za nyuzi.
  • Usakinishaji asilia: Programu-jalizi haina utegemezi wa mazingira ya nje ya utekelezaji wala mifumo ya ziada.
  • Msaada wa x32 na x64: Msingi mmoja wa msimbo huunda programu-jalizi za usanifu zote mbili za x64dbg.
  • Njia mbili za usafirishaji za MCP: Streamable HTTP inapendekezwa, huku SSE ikiunga mkono wateja wa zamani wa MCP.
  • Uthibitishaji wa lazima: Kila ombi lazima libebe tokeni halali ya Bearer.
  • Uanzishaji wa kiotomatiki: Seva huanza x64dbg inapozinduliwa.
  • Usanidi uliojengewa ndani: Menyu ya x64dbg Plugins hutoa mipangilio ya anwani ya kuunganisha, mlango, na tokeni.
  • Uundaji wa mifumo mbalimbali: Zig inaweza kuunda programu-jalizi za Windows kutoka Windows, WSL, Linux, au macOS.

Jinsi Muunganisho Unavyofanya Kazi

x64dbg inapoanza, programu-jalizi hutatua alama za API ya kitatuzi kutoka x64bridge.dll na x64dbg.dll. Kisha huanzisha seva ya HTTP kwenye uzi wa usuli. Mteja wa MCP hutuma maombi ya JSON-RPC yaliyothibitishwa, na kila zana ya MCP huunganishwa na miito ya SDK ya x64dbg kama vile kuweka kizuizi cha kusitisha, kusoma kumbukumbu, au kuendelea na utekelezaji.

Kwa kuwa programu-jalizi hufanya kazi ndani ya mchakato wa x64dbg, huwasiliana moja kwa moja na API ya kitatuzi. Hakuna mchakato msaidizi wa nje wala huduma ya kupiga kura inayohitajika.

Sakinisha Programu-jalizi

Chaguo la 1: Sakinisha Toleo Lililotolewa

  1. Pakua kifurushi cha hivi karibuni kutoka kwenye matoleo ya GitHub ya mradi.
  2. Fungua kifurushi.
  3. Nakili yaliyomo kwenye saraka yake ya dist/ hadi kwenye saraka kuu ya usakinishaji wako wa x64dbg.
  4. Zindua toleo la x32 au x64 la x64dbg.

Usambazaji unaakisi muundo wa saraka wa x64dbg, kwa hiyo kuunakili kwenye saraka kuu husakinisha programu-jalizi za usanifu zote mbili:

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

Seva huanza kiotomatiki. Milango yake ya chaguo-msingi ni:

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

Chaguo la 2: Unda Kutoka kwenye Msimbo Chanzo

Uundaji unahitaji Zig 0.16-dev au toleo jipya zaidi. Kutoka kwenye saraka kuu ya hazina, endesha:

zig build -Doptimize=ReleaseSafe --prefix dist

Amri hii huunda faili za programu-jalizi za x32 na x64 ndani ya dist/. Nakili yaliyomo kwenye saraka hiyo hadi kwenye folda kuu ya x64dbg kama unavyofanya kwa kifurushi kilichotolewa.

Sanidi Seva na Uthibitishaji

Katika x64dbg, fungua Plugins > x64dbg-MCP Server > Configure MCP Server.... Kisanduku cha mazungumzo hukuruhusu kubadilisha anwani ya kuunganisha, mlango, na tokeni ya uthibitishaji.

  • Tumia 127.0.0.1 wakati mteja wa MCP anaendesha kwenye mfumo huo huo wa Windows na ufikiaji wa mbali hauhitajiki.
  • Tumia 0.0.0.0 unapounganisha kutoka WSL au mashine nyingine inayohitaji kuifikia kompyuta mwenyeji kupitia mtandao.
  • Chagua Copy ili kunakili tokeni ya sasa.
  • Chagua Generate ili kubadilisha tokeni.

Tokeni ya Bearer huzalishwa kiotomatiki mara ya kwanza programu inapoendeshwa. Maombi yasiyo na tokeni sahihi hupokea 401 Unauthorized. Mabadiliko yaliyohifadhiwa huanza kutumika mara moja kwa sababu seva huanza upya kiotomatiki. Usanidi huhifadhiwa kwenye mcp_config.json karibu na kitekelezi cha x64dbg.

Seva hutoa ufikiaji wa kusoma na kuandika kumbukumbu, udhibiti wa michakato, na utekelezaji wa amri za kitatuzi kupitia HTTP isiyosimbwa. Usiifichue kwenye mtandao usioaminika, hata kama uthibitishaji wa Bearer ni wa lazima.

Unganisha Mteja wa MCP

Usanidi Unaopendekezwa wa Streamable HTTP

Ongeza ingizo la seva kwenye usanidi wa mteja wako wa MCP, kama vile .mcp.json. Kwa mlango chaguo-msingi wa x64, tumia:

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

Badilisha YOUR_TOKEN_HERE na tokeni iliyonakiliwa kutoka kwenye kisanduku cha mazungumzo cha usanidi wa programu-jalizi. Ikiwa unatumia x32dbg, badilisha mlango chaguo-msingi kuwa 9095.

Usanidi wa SSE kwa Wateja wa Zamani

Ikiwa mteja wako wa MCP unaunga mkono SSE pekee, chagua usafirishaji wa sse na ongeza /sse kwenye mwisho wa endpoint:

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

Kwa ufikiaji kupitia WSL au kwa mbali, badilisha localhost kwa anwani ya IP ya kompyuta mwenyeji ya Windows na uhakikishe kuwa seva imefungwa kwenye 0.0.0.0.

Endesha Kikao cha Msingi cha Utatuzi kwa Msaada wa AI

Baada ya kuunganisha mteja, fungua x64dbg na umwombe msaidizi atekeleze mfululizo mfupi wa kazi za utatuzi. Kikao cha kawaida kinaweza kuanza hivi:

Pakia calc.exe na uweke kusitisha kwenye sehemu ya kuanzia.

Msaidizi anaweza kuchanganya LoadBinary, SetBreakpoint, run, na WaitForPause ili kupakia faili linalotekelezeka, kuendelea na utekelezaji, na kusubiri hadi breakpoint ifikiwe.

Kagua Rejesta

Mara tu lengwa linaposimamishwa, uliza:

Nionyeshe rejesta za sasa za CPU.

Msaidizi anaweza kuita GetAllRegisters. Ili kubadilisha thamani wakati wa kikao cha utatuzi kilichoidhinishwa, anaweza kutumia SetRegister.

Soma na Disassemble Kumbukumbu

Umwombe msaidizi akague msimbo unaozunguka kielekezi cha sasa cha maagizo:

Soma baiti 64 kwenye kielekezi cha sasa cha maagizo na ufanye disassemble ya maagizo 10 yanayofuata.

Hii inaweza kutumia GetCurrentAddress, ReadMemory, na Disassemble. Ili kukagua kazi kamili iliyochanganuliwa, omba DisassembleFunction.

Pitia Msimbo Hatua kwa Hatua

Zana za utekelezaji zinalingana na vitendo vinavyojulikana vya x64dbg:

  • StepInto huingia ndani ya miito kama F7.
  • StepOver huruka juu ya miito kama F8.
  • StepOut huendelea hadi kazi ya sasa irejeshe udhibiti.
  • run huendelea na utekelezaji kama F9.
  • PauseDebug husimamisha lengwa.
  • RunToAddress huendelea hadi anwani maalum ifikiwe.

Kwa mfano:

Ruka maagizo matatu yanayofuata, kisha onyesha anwani ya sasa na stack ya miito.

Msaidizi anaweza kuita StepOver mara tatu, ikifuatiwa na GetCurrentAddress na GetCallStack.

Tumia Breakpoint kwa Ufanisi

Plugin inaunga mkono breakpoint za kawaida za programu, breakpoint za maunzi, breakpoint za kumbukumbu, breakpoint zenye masharti, na breakpoint za vighairi.

Mfano wa Breakpoint Yenye Masharti

Weka breakpoint kwenye kazi lengwa, lakini simamisha tu wakati sharti maalum la x64dbg ni la kweli.

Msaidizi anaweza kutumia SetConditionalBreakpoint pamoja na usemi wa sharti wa x64dbg na kitendo cha hiari cha kuweka kumbukumbu. Zana zinazohusiana zinaweza kuwezesha, kuzima, kubadilisha hali, kufuta, au kuweka upya hesabu ya kugongwa ya breakpoint.

Breakpoint za Maunzi na Kumbukumbu

Tumia SetHardwareBreakpoint kwa ufuatiliaji wa kusoma, kuandika, au kutekeleza kupitia rejesta za utatuzi zinazopatikana. Tumia SetMemoryBreakpoint wakati ufuatiliaji wa kusoma, kuandika, au kutekeleza katika kiwango cha ukurasa unafaa zaidi kwa uchunguzi.

Kabla ya kuunda breakpoint zaidi, mwombe msaidizi aite ListBreakpoints. Hii husaidia kuepuka hali ya debugger iliyorudiwa au inayokinzana.

Changanua Moduli, Alama, na Marejeleo

Seva hutoa zana kadhaa za kutoka kwenye utatuzi wa kiwango cha chini hadi uchanganuzi mpana wa programu:

  • ListModules huripoti moduli zilizopakiwa, anwani za msingi, na ukubwa.
  • AnalyzeModule hukagua sehemu za PE, sehemu ya kuanzia, na ukubwa wa picha.
  • GetImports na GetExports hukagua majedwali ya uingizaji na uhamishaji.
  • SearchSymbols hupata alama zinazolingana na muundo.
  • GetFunctions huorodhesha kazi na lebo zilizochanganuliwa.
  • GetReferences hupata marejeleo ya CALL na JMP kwenye anwani lengwa.
  • FindPattern huchanganua kumbukumbu ya moduli na kuunga mkono wildcards za ??.
  • GetStrings hutoa mifuatano ya ASCII kutoka kwenye kumbukumbu ya moduli.
  • DetectOEP husaidia kupata sehemu ya kuanzia asili ya faili zinazotekelezeka zilizopakiwa kwa pakiti.

Ombi la praktikali la uchanganuzi linaweza kuwa:

Orodhesha moduli zilizopakiwa, changanua faili kuu linalotekelezeka, toa mifuatano yake ya ASCII, na uonyeshe marejeleo ya kazi iliyochaguliwa.

Vidokezo vya Juu

Tumia Mitiririko Inayotambua Matukio

Epuka kudhani kuwa lengwa limesimama mara tu baada ya kuendelea na utekelezaji. Tumia WaitForPause au WaitForEvent baada ya run, shughuli za breakpoint, au vitendo vingine vya debugger visivyotekelezwa mara moja. GetEventLog inaweza kukagua breakpoint, vighairi, upakiaji wa DLL, na matukio mengine yanayohusiana ya hivi karibuni.

Fuatilia Badala ya Kurudia Hatua Binafsi

Kwa historia fupi ya maagizo, tumia TraceInto kurekodi anwani na disassembly huku ukiingia ndani ya miito. Tumia TraceOver wakati miito inapaswa kurukwa. Hii ni rahisi zaidi kuliko kutuma maombi mengi tofauti ya hatua.

Kagua Vielezi kwa Kundi

EvalExpression hutathmini usemi wa x64dbg kama vile anwani, rejesta, au usemi wa kihisabati. Wakati thamani kadhaa zinahitaji kufuatiliwa pamoja, tumia WatchExpressions kutathmini vielezi vingi katika ombi moja.

Hifadhi na Rejesha Hali ya Uchanganuzi

Tumia CommentOrLabelAtAddress na zana za alamisho kuweka maelezo kwenye maeneo muhimu. Ita SaveDatabase ili kuhifadhi hifadhidata ya x64dbg kama faili la .dd64 au .dd32.

Fanya Viraka kwa Uangalifu

WriteMemToAddress hubandika baiti, huku Assemble ikiandika maagizo yaliyokusanywa kwenye anwani. Kagua baiti zilizopo na uhifadhi rekodi ya mabadiliko kabla ya kubandika. Tumia GetPatches kukagua marekebisho na RestorePatches kurejesha baiti asili.

Chunguza Miundo ya Mchakato

Tumia GetPEB kukagua sehemu za Process Environment Block, GetSEHChain kwa mnyororo wa Structured Exception Handler wa x32, na GetArguments kukagua hoja za kazi kutoka kwenye rejista au steki. FollowPointer inaweza kufuatilia mnyororo wa viashiria kwa idadi maalum ya viwango.

Punguza Ufunuaji wa Mtandao

Pendelea 127.0.0.1 isipokuwa muunganisho wa mbali unahitajika. Ikiwa ni lazima uunganishe kwenye 0.0.0.0, zuia ufikiaji kwa kutumia vidhibiti vya mtandao vinavyoaminika, linda tokeni, na ibadilishe ikiwa unashuku imefichuka. Kumbuka kuwa usafirishaji huu ni HTTP badala ya HTTPS iliyosimbwa kwa njia fiche.

Zana Muhimu za Uendeshaji

  • GetDebugState hukagua ikiwa kipindi cha utatuzi kinaendelea na kuripoti PID na kielekezi cha maagizo.
  • AttachProcess huunganisha x64dbg kwenye mchakato unaoendelea kwa kutumia PID.
  • ExecuteDebuggerCommand huendesha amri ya x64dbg moja kwa moja.
  • ListCommandsByCategory humsaidia mteja wa MCP kugundua zana zinazopatikana.
  • GetThreads, SwitchThread, SuspendThread, na ResumeThread hudhibiti muktadha wa nyuzi.
  • GetMemoryMap na GetDumpableRegions hutambua maeneo ya kumbukumbu kabla ya kuyasoma au kuyatupa.
  • DumpMemory huhifadhi masafa ya kumbukumbu yaliyochaguliwa, huku DumpModule ikihifadhi moduli nzima.
  • StopDebug hukomesha kipindi cha sasa, na RestartDebug hukianzisha upya.

Hitimisho

x64dbg-MCP Server huunganisha uwezo asilia wa utatuzi wa x64dbg na wasaidizi wa AI wanaoendana na MCP bila kuhitaji mazingira ya nje ya uendeshaji. Baada ya kusakinisha programu-jalizi sahihi za x32 na x64, kunakili tokeni ya Bearer iliyotengenezwa, na kusanidi kituo cha HTTP au SSE, unaweza kuendesha mtiririko kamili wa kazi za utatuzi kupitia maombi ya lugha asilia.

Anza kwa anwani ya kuunganisha ya ndani pekee na kazi rahisi za ukaguzi wa kusoma pekee. Kisha endelea kwenye hatua zinazoarifiwa na matukio, vizuizi vya masharti, ufuatiliaji, uchanganuzi wa PE, na marekebisho ya kumbukumbu yanayodhibitiwa kwa uangalifu. Tumia seva kila mara kwenye malengo yaliyoidhinishwa na epuka kuweka kiolesura chake cha HTTP kisichosimbwa kwenye mitandao isiyoaminika.