1 คะแนน โดย GN⁺ 2026-02-06 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • Ghidra MCP Server คือเซิร์ฟเวอร์ Model Context Protocol (MCP) ที่เชื่อมความสามารถด้านรีเวิร์สเอนจิเนียริงของ Ghidra เข้ากับ AI และเฟรมเวิร์กอัตโนมัติ
  • มีเครื่องมือ MCP 110 รายการและ132 เอ็นด์พอยต์ เพื่อรองรับ ความสามารถในการวิเคราะห์ไบนารีอย่างกว้างขวาง เช่น การวิเคราะห์ฟังก์ชัน การสำรวจโครงสร้างข้อมูล และการดึงสตริง
  • รองรับ การประมวลผลแบบแบตช์, ทรานแซกชันแบบอะตอมมิก, การวิเคราะห์แบบเรียลไทม์ และสามารถใช้งานผ่าน การดีพลอยด้วย Docker และโหมด headless
  • ฟีเจอร์ Cross-binary document transfer ช่วยจับคู่เอกสารฟังก์ชันโดยอัตโนมัติระหว่างไบนารีคนละเวอร์ชัน
  • เป็นแพลตฟอร์มที่ช่วยสร้างเวิร์กโฟลว์รีเวิร์สเอนจิเนียริงด้วย AI ได้ด้วย เสถียรภาพระดับโปรดักชัน

ภาพรวม

  • Ghidra MCP Server คือ เซิร์ฟเวอร์ MCP ระดับโปรดักชัน ที่เชื่อม เอนจินการวิเคราะห์ของ Ghidra เข้ากับเครื่องมือ AI และระบบอัตโนมัติ
    • รองรับการใช้งานกับโมเดล AI ผ่านการติดตั้งใช้งาน Model Context Protocol อย่างครบถ้วน
    • เปิดเผยความสามารถของ Ghidra ผ่าน HTTP REST และโปรโตคอล MCP (stdio/SSE)

คุณสมบัติหลัก

  • การผสานรวม Core MCP
    • รองรับ MCP อย่างสมบูรณ์ มีเครื่องมือ MCP 110 รายการ รองรับการทำงานแบบแบตช์และทรานแซกชันแบบอะตอมมิก
    • ผสานรวมกับเอนจินวิเคราะห์ของ Ghidra แบบเรียลไทม์
  • การวิเคราะห์ไบนารี
    • ดีคอมไพล์ฟังก์ชัน, กราฟการเรียกใช้งาน, cross-reference, การสร้างโครงสร้างข้อมูลอัตโนมัติ
    • รวมถึงการดึงสตริง, การวิเคราะห์ตารางสัญลักษณ์, การแมปหน่วยความจำ และฟีเจอร์ Cross-binary document transfer
  • การพัฒนาและระบบอัตโนมัติ
    • ไปป์ไลน์อัตโนมัติสำหรับ build-test-deploy-verify
    • สร้าง รัน และจัดการสคริปต์ Ghidra, เปรียบเทียบหลายโปรแกรม, เปลี่ยนชื่อจำนวนมากและใส่คอมเมนต์

การติดตั้งและการรัน

  • องค์ประกอบที่จำเป็น: Java 21 LTS, Apache Maven 3.9+, Ghidra 12.0.2, Python 3.8+
  • ขั้นตอนการติดตั้ง
    • โคลนรีโพซิทอรีแล้วติดตั้ง dependency ของ Python
    • คัดลอกไลบรารี Ghidra 14 รายการแล้ว build ด้วย Maven
    • ดีพลอยปลั๊กอินไปยังโฟลเดอร์ส่วนขยายของ Ghidra
  • รูปแบบการรัน
    • เลือกได้ระหว่างการส่งผ่านแบบ stdio (ค่าเริ่มต้น สำหรับเครื่องมือ AI) หรือแบบ SSE (สำหรับ Web/HTTP client)
    • ใน Ghidra ให้รัน Tools > GhidraMCP > Start MCP Server

ประสิทธิภาพและความเสถียร

  • ติดตั้งใช้งานเครื่องมือ MCP ครบ 110 รายการ โดยการทำงานส่วนใหญ่มี เวลาตอบสนองต่ำกว่า 1 วินาที
  • โครงสร้างการทำงานแบบแบตช์ช่วยลด การเรียก API ลง 93%
  • ทุกการทำงานถูกประมวลผลด้วย ทรานแซกชันแบบอะตอมมิก เพื่อความน่าเชื่อถือ
  • มีสคริปต์ดีพลอยอัตโนมัติที่รับรู้เวอร์ชัน

โครงสร้าง API

  • การดำเนินการหลัก: ตรวจสอบการเชื่อมต่อ, ดูเมทาดาทา, ข้อมูลเวอร์ชัน, สำรวจ entry point
  • การวิเคราะห์ฟังก์ชัน: รายการฟังก์ชัน, ค้นหาชื่อ, ดีคอมไพล์, กราฟความสัมพันธ์การเรียก, ประเมินความสมบูรณ์ของเอกสาร
  • หน่วยความจำและข้อมูล: รายการเซกเมนต์, ดิแอสเซมเบิล, cross-reference, ตรวจสอบเนื้อหาในหน่วยความจำ
  • เอกสารข้ามไบนารี: สร้างแฮชฟังก์ชัน, ส่งออก/ปรับใช้เอกสาร, การจับคู่ด้วยแฮช
  • การจัดการชนิดข้อมูล: สร้างโครงสร้างและ enum, แก้ไขฟิลด์, รวมชนิดที่ซ้ำกัน
  • การจัดการสัญลักษณ์และเลเบล: รายการ import/export, วิเคราะห์สตริง, จัดการ namespace และตัวแปรโกลบอล
  • การเปลี่ยนชื่อและใส่คอมเมนต์: เปลี่ยนชื่อฟังก์ชัน/ข้อมูล/ตัวแปร, ตั้งค่าคอมเมนต์จำนวนมาก
  • ระบบชนิดข้อมูล: กำหนดฟังก์ชันโปรโตไทป์, ตั้งค่าชนิดตัวแปร, ดู calling convention
  • การจัดการสคริปต์ Ghidra: รายการสคริปต์, รัน, บันทึก, แก้ไข, ลบ
  • รองรับหลายโปรแกรม: สลับโปรแกรมที่เปิดอยู่, รายการไฟล์ในโปรเจกต์, เปรียบเทียบเอกสาร
  • เครื่องมือวิเคราะห์: ค้นหาฟังก์ชันที่ยังไม่ถูกนิยาม, ค้นหาด้วยสตริง, ค้นหารูปแบบไบต์

สถาปัตยกรรม

  • โครงสร้าง เครื่องมือ AI/Automation ↔ MCP Bridge ↔ Ghidra Plugin
    • bridge_mcp_ghidra.py: เซิร์ฟเวอร์ Python ที่แปลงโปรโตคอล MCP เป็นคำเรียก HTTP
    • GhidraMCP.jar: ปลั๊กอิน Java ที่เปิดเผยความสามารถของ Ghidra ผ่าน HTTP
    • ghidra_scripts/: มีสคริปต์อัตโนมัติมากกว่า 70 รายการ

การพัฒนาและการบิลด์

  • มีระบบบิลด์บน Maven และสคริปต์ดีพลอย PowerShell
  • โครงสร้างโปรเจกต์ประกอบด้วยเซิร์ฟเวอร์ Python, ปลั๊กอิน Java, ไลบรารี Ghidra, เอกสาร, ตัวอย่าง และสคริปต์บิลด์
  • จำเป็นต้องคัดลอก ไลบรารี 14 รายการที่จำเป็น (ประมาณ 37MB) จากพาธติดตั้งของ Ghidra
  • มีฟังก์ชันดีพลอยอัตโนมัติ, การทำงานแบบแบตช์, ทรานแซกชันแบบอะตอมมิก และการล็อกอย่างละเอียด

เอกสารและเวิร์กโฟลว์ AI

  • ในโฟลเดอร์ docs/ มีเอกสารทั้งหมด, โครงสร้างโปรเจกต์, กฎการตั้งชื่อ และ Hungarian notation
  • พรอมป์ต์เวิร์กโฟลว์ AI: มีพรอมป์ต์สำหรับการทำเอกสารฟังก์ชัน, การจับคู่ข้ามเวอร์ชัน และการเริ่มต้นใช้งานอย่างรวดเร็ว
  • ประวัติการรีลีส: มีรายละเอียดแต่ละเวอร์ชันใน CHANGELOG.md และ docs/releases

ใบอนุญาตและสถานะ

  • ใช้ Apache License 2.0
  • เวอร์ชัน 2.0.0 ติดตั้งใช้งานเครื่องมือ MCP ครบ 110 รายการ และมีสคริปต์ Ghidra มากกว่า 70 รายการ
  • พร้อมสำหรับการดีพลอยในสภาพแวดล้อมโปรดักชัน และเหมาะกับงานรีเวิร์สเอนจิเนียริงด้วย AI

โปรเจกต์ที่เกี่ยวข้อง

  • re-universe: แพลตฟอร์มวิเคราะห์ความคล้ายคลึงของไบนารีขนาดใหญ่บน PostgreSQL
  • cheat-engine-server-python: เซิร์ฟเวอร์ MCP สำหรับการวิเคราะห์หน่วยความจำแบบไดนามิกและการดีบัก

คำขอบคุณ

  • ขอขอบคุณทีม Ghidra, ทีมพัฒนา Model Context Protocol และผู้มีส่วนร่วมจากชุมชน

1 ความคิดเห็น

 
GN⁺ 2026-02-06
ความคิดเห็นจาก Hacker News
  • ผู้สร้างบอกว่าทำโปรเจ็กต์นี้ขึ้นมาเพราะการทำรีเวิร์สเอนจิเนียริงซอฟต์แวร์หลายเวอร์ชันนั้นทรมานเกินไป
    แกนหลักคือ ระบบแฮชฟังก์ชันแบบทำให้เป็นมาตรฐาน ที่สร้างแฮชจากโครงสร้างเชิงตรรกะของฟังก์ชัน (คำสั่ง, โอเปอแรนด์, การไหลควบคุม)
    ทำให้แม้ไบนารีจะถูก rebuild หรือ rebase ฟังก์ชันเดียวกันก็ยังมีแฮชเดียวกัน และคอมเมนต์, type, ชื่อทั้งหมดจะถูกย้ายตามโดยอัตโนมัติ
    มี MCP bridge สำหรับ Ghidra พร้อมเครื่องมือ 110 รายการ และเชื่อมต่อกับ Claude, Claude Code หรือ MCP client อื่น ๆ ได้
    ทดสอบกับ Diablo II หลายเวอร์ชันแพตช์แล้ว และสามารถย้ายคอมเมนต์ของฟังก์ชันได้อัตโนมัติมากกว่า 1,300 รายการ
    ยังรองรับการเชื่อมต่อกับ CI ผ่าน headless mode แบบ Docker ได้ด้วย
    ใน v2.0.0 มีการเพิ่มการ bind แบบ localhost เท่านั้น, การตั้งค่า timeout, การลบ label, การตั้งค่า .env เป็นต้น
    ยินดีแลกเปลี่ยนเรื่องแนวทางการแฮชหรือการออกแบบ MCP

    • อยากรู้ว่าเมื่อเทียบกับ FunctionID พื้นฐานของ Ghidra หรือปลั๊กอิน BinDiff แล้วต่างกันอย่างไร
    • อยากรู้ว่าเมื่อเทียบกับ ReVa แล้วเป็นอย่างไร
      ดูเหมือนว่าคู่มือติดตั้งจะยังไม่สมบูรณ์ ติดตั้งใน Ghidra แล้วรีสตาร์ต แต่ไม่เห็น GhidraMCP ในเมนู Tools
    • ฉันลองใช้เองแล้ว แต่ Ghidra ไม่รู้จักปลั๊กอิน
      เลยสงสัยว่า GH Discussions เป็นช่องทางสื่อสารที่ถูกต้องไหม
    • อยากรู้ว่าต่างจาก Ghidra MCP server ตัวอื่น ๆ (pyghidra-mcp, ReVa, GhidrAssistMCP ฯลฯ) อย่างไร
    • อยากรู้ว่ารองรับการ decompile ไบนารี Android หรือไม่
  • เคยใช้ Ghidra MCP server ของ LaurieWired แล้ว การวิเคราะห์ไบนารีและการทำ keygen สนุกและง่ายมาก
    เลยตั้งใจว่าจะลองใช้ MCP server ตัวนี้แน่นอน

    • เคยมีซอฟต์แวร์ที่ทำไว้เมื่อก่อนติดปัญหาตรงมันพยายามยืนยันตัวตนกับเซิร์ฟเวอร์ที่ไม่มีอยู่แล้วจนติดตั้งไม่ได้ เลยพยายามทำ Ghidra MCP เองแต่ไม่สำเร็จ
      พอโปรเจ็กต์นี้โผล่มาในจังหวะนี้ก็เลยรู้สึกน่าทึ่ง
    • สาขานี้นำหน้า main ของ LaurieWired/GhidraMCP อยู่ 110 commits
  • เห็นเพื่อนร่วมงานใช้ Ghidra คู่กับ Claude เพื่อแฮ็กเกม River Ride เลยลองทำบ้าง
    ฉันพอร์ตเกมเก่าสำหรับ PowerPC ไปเป็น Apple Silicon และแม้จะลองใช้ MCP หลายตัว แต่ Claude Code มักแต่งโค้ดขึ้นมาเอง
    สุดท้ายได้ผลดีที่สุดจาก headless mode ของ Cursor + GPT 5.2 Codex

    • ฉันก็กำลังทดลองทำรีเวิร์สเอนจิเนียริงอยู่เหมือนกัน และ GPT-5.2 Codex ดีกว่า Claude มาก
      ตัวอย่างเช่น มันกู้คืนไฟล์ C64-SID ยาว 1,300 บรรทัดได้สมบูรณ์ในเวลา 30 นาที
      ตอนนี้กำลังสร้าง ระบบ multi-agent เพื่อทำ reverse engineering เกม C64 ทั้งเกม
      ดู โค้ดตัวอย่าง
  • การทำรีเวิร์สเอนจิเนียริงด้วย AI ยังถูกประเมินค่าต่ำเกินไป
    ฉันเคยดึง คีย์เข้ารหัส ออกจากแอป Android ได้สำเร็จ โดยคีย์ถูกซ่อนไว้ใน shader และต้องรัน shader จริง ๆ ถึงจะได้มันมา

    • ฉันเคยให้ Claude ดูเกม Unity เก่ากับเพื่อน แล้วมันสร้าง TypeScript port แบบสมบูรณ์ให้ได้
      ตอนนี้กำลังเพิ่มความสามารถ multiplayer บนเบราว์เซอร์อยู่
    • เรื่องดึงคีย์จาก shader น่าสนใจมาก อยากฟังวิธีแบบละเอียดกว่านี้
    • ฉันเองก็ลองเชื่อม MCP กับเครื่องมือหลายตัวเพื่อทำ การกู้คืนซอร์สโค้ด และตรวจหาช่องโหว่จากไบนารี ผลออกมาแทบจะตรงกับซอร์สจริง
  • ใช้เวอร์ชัน 15 เครื่องมือของ LaurieWired มาหลายเดือนแล้ว รู้สึกเหมือนมองเห็นโครงสร้างภายในของแอปได้อย่าง โปร่งใสทั้งหมด
    ใช้ได้ทั้งตามบั๊ก, สร้างปลั๊กอิน, และแก้ไขแอป
    สำหรับโค้ด Objective-C ก็ใช้ Hopper Disassembler ควบคู่กันไปด้วย
    บทความวิจัยที่เกี่ยวข้อง: Full recompilation with LLMs and Ghidra

    • ในฐานะพนักงาน GitHub ฉันไม่ค่อยชอบนักที่มีการมอง app reverse engineering ว่าเหมือนกับ OSS
  • การทำรีเวิร์สเอนจิเนียริงด้วย LLM นั้นถูกประเมินค่าต่ำเกินไปจริง ๆ
    ฉันกำลังกู้คืนเกมอายุ 30 ปีอยู่ และเมื่อป้อนผล decompile ของ Ghidra กับข้อมูล symbol ให้โมเดลแบบ RAG ก็ได้ผลลัพธ์น่าทึ่งมาก
    แม้แต่โมเดลราคาถูกอย่าง Gemini 3 Flash ก็ยังใช้งานได้ดีพอ

    • แต่ Gemini มักสร้าง pseudocode ที่ไม่สมบูรณ์
      มันละบางส่วนของฟังก์ชันหรือเหลือไว้แค่คอมเมนต์ภายในบล็อก switch
      ในขณะที่ Claude Opus หรือ Qwen3-30B-A3B ให้โค้ดที่สมบูรณ์กว่ามาก
      แม้ context window ขนาดใหญ่ของ Gemini จะเป็นข้อดี แต่ในทางปฏิบัติก็ยังมีข้อจำกัดมากเพราะ PCode มีความ ยืดยาว
  • ฉันเคยคิดว่าการต่อเครื่องมือเข้ากับ MCP มากเกินไปจะทำให้ประสิทธิภาพตก และอันนี้ก็ดู ไม่ใช่งานออกแบบที่ดี

    • ทุกวันนี้ปัญหาเครื่องมือ MCP พอแก้ได้ระดับหนึ่งด้วย lazy loading
      แต่เครื่องมือที่เน้นแปลง API ก็ยังเข้ากับ LLM ได้ไม่ดีนัก
    • เครื่องมือแบบ skill-oriented ที่อิง vibecoded น่าจะมีประสิทธิภาพกว่ามาก
  • ฉันไม่ใช่วิศวกรรีเวิร์ส แต่ใช้ Claude Code กับ Ghidra MCP เพื่อปรับปรุง ตัวถอดรหัส ransomware
    ตอนกู้ข้อมูลได้หลายเทราไบต์ รู้สึกเหมือนได้พลังวิเศษจริง ๆ

    • มีคนแซวว่า “งั้นพลังวิเศษนั้นก็น่าจะช่วยทำตัวเข้ารหัสให้เชื่อถือได้กว่านี้ด้วยไม่ใช่เหรอ?”
  • ฉันคิดว่า AI อาจแสดงความสามารถเหนือมนุษย์ได้ในงาน วิเคราะห์ไบนารี
    ตอนนี้มันยังเป็นงานที่ประสิทธิภาพต่ำและน่าเบื่อ แต่ด้วย AI มันอาจนำไปใช้กับการตรวจสอบความปลอดภัยหรือป้องกัน supply chain attack ได้ด้วย

    • ใช่เลย และ AI ยังสามารถ วิเคราะห์ตัวเอง ได้ด้วย
      “skill-snitch” ของ MOOLLM คอยเฝ้าดูการทำงานของสกิลอื่น และ “cursor-mirror” มองเห็นสถานะภายในของ Cursor ได้ทั้งหมด
      สกิลเหล่านี้สามารถ นำมาประกอบกันและเรียกซ้ำแบบ recursive ได้ และทำงานแบบ “speed of light” ซึ่งเร็วกว่าการใช้ MCP มาก
      ข้อมูลที่เกี่ยวข้อง: Leela MOOLLM Demo Transcript, speed-of-light skill, skill-snitch report
  • สงสัยว่าทำไมไม่ทำเป็นแบบ CLI-based ตั้งแต่แรก ดูเหมือนทุกวันนี้ LLM และ agent จะจัดการกับ CLI ได้ดีกว่า

    • ฉันคิดว่ามันจะเป็นแบบนั้นก็ต่อเมื่อ CLI นั้นอยู่ในข้อมูลฝึกเท่านั้น ถ้าเป็นเครื่องมือใหม่ อย่างไรก็ต้องใส่เอกสารทั้งหมดเข้าไปใน context อยู่ดี
    • โปรเจ็กต์นี้เริ่มต้นมาตั้งแต่ก่อนที่ MCP จะ กิน context มากเกินไป (LaurieWired/GhidraMCP)
    • ช่วงหลังเครื่องมืออย่าง Claude Code รองรับ การโหลดตามการค้นหาเครื่องมือ แล้ว จึงลดภาระด้าน context ของ MCP ลงได้มาก
    • ฉันก็คิดคล้ายกัน ถ้าคำอธิบายเครื่องมือ 110 รายการถูกใส่ใน context ตลอด ก็มีแต่จะเพิ่ม noise