Knowledge Hub

ชุดทำงาน Reverse Engineering แบบ Agent ที่ยึดหลักฐาน

เรียนรู้วิธีวางระบบให้ AI agent วิเคราะห์ไฟล์ไบนารีหรือซอร์สโค้ดโดยบันทึกทุกข้อค้นพบเป็นหลักฐาน แยกเป็น Observation, Derivation, Inference และ Unknown เพื่อให้ตรวจสอบย้อนกลับได้

reverse-engineeringอ่าน 12 นาทีเผยแพร่ 16 ตุลาคม 2569

🎯 แก่นของเรื่อง

แนวคิดหลัก: ผลลัพธ์ของระบบคือ หลักฐาน ไม่ใช่ คำยืนยันลอยๆ ทุกสิ่งที่ agent พบต้องถูกบันทึกเป็น evidence record ก่อนจะกลายเป็นข้อสรุป

ทำไมถึงได้ผล (กลไกเหตุและผล):

  1. แยกหน้าที่ออกเป็นชั้น ได้แก่ การจัดเส้นทางและเตรียมไฟล์, การเก็บหลักฐาน, ตัวเครื่องมือวิเคราะห์ และข้อจำกัดการส่งข้อมูล
  2. แต่ละชั้นทำหน้าที่เดียว จึงตรวจสอบและเปลี่ยนชิ้นส่วนได้โดยไม่กระทบชั้นอื่น
  3. เมื่อทุกข้อสังเกตถูกเขียนลง ledger ก่อนเป็น claim agent จึงอ้างได้เฉพาะสิ่งที่มีบันทึกรองรับ ซึ่งลดการเดาและการแต่งเรื่อง

20% ที่สำคัญที่สุดในทางปฏิบัติ:

ต้องทำก่อน รอได้
ใช้ลูป Scope, Open, Trace, Ledger ทุกครั้ง ต่อ engine ภายนอก (Hopper, Ghidra, IDA)
ติดป้ายหลักฐานทุกข้อ 4 ชั้น ปรับ transport budget ให้ละเอียด
เก็บ evidence record แยกจากบทสนทนา รองรับ client ครบทุกแบบ

📈 ช่วยให้ดีขึ้นอย่างไร

ภาพไม่มีตัวเลขวัดผล ทุกแถวจึงไม่มีป้าย วัดแล้ว

สถานการณ์ ถ้าไม่มีระบบ เมื่อมีระบบ วัดอย่างไร หลักฐาน
ตรวจสอบข้อสรุป ข้อสรุปอยู่ในแชท ไล่ย้อนยาก ทุกข้อสรุปชี้กลับไปที่ evidence record สุ่มข้อสรุป 10 ข้อ นับข้อที่ชี้ถึงหลักฐานได้ จากภาพ (ออกแบบให้เป็นเช่นนั้น)
แยกข้อเท็จจริงจากการเดา ปนกันในประโยคเดียว ป้าย 4 ชั้น: Observation, Derivation, Inference, Unknown สัดส่วนข้อที่มีป้ายต่อข้อทั้งหมด จากภาพ
ทำงานซ้ำได้ ทำใหม่ทุกครั้งแล้วได้ลำดับต่างกัน ลูป 4 ขั้นตอนเดิมทุกครั้ง ให้คนสองคนทำไฟล์เดียวกัน เทียบ ledger จากภาพ (ระบุว่า repeatable)
ไฟล์ทั่วไป (JS, .NET, APK) ต้องติดตั้งเครื่องมือหนัก มีเส้นทางลัดที่ไม่ต้องใช้ engine เวลาตั้งแต่รับไฟล์ถึงผลแรก จากภาพ (ระบุ no engine needed)
ความเร็วโดยรวม ไม่ทราบ ไม่ทราบ ยังไม่มีการวัด ยังไม่ทดสอบ
ลดความผิดพลาดของ agent agent เดาเกินหลักฐาน ต้องมีหลักฐานก่อนจึงอ้างได้ อัตราข้อสรุปที่ถูกจับผิดภายหลัง ตีความ

🗺️ ภาพรวมสถาปัตยกรรม

ระบบไหลจากบนลงล่าง ตั้งแต่ไฟล์เป้าหมายจนถึงหลักฐาน

flowchart TD
    A[Target Artifact] --> B[Agent Clients]
    B --> C[RE MCP Server local]
    C --> D[Investigation Loop]
    C --> E[Analysis Engines optional]
    D --> F[Static Targets]
    E --> G[Evidence Classes]
    F --> G

Target Artifact (จุดเริ่มต้น)

  • คือสิ่งที่ต้องการวิเคราะห์ ภาพระบุว่าเป็น binary, source, package หรือ archive
  • ข้อความกำกับในภาพ: One artifact. Many ways to understand. All grounded in evidence.
  • ความหมาย: ไฟล์เดียวมองได้หลายมุม แต่ทุกมุมต้องผูกกับหลักฐาน

Agent Clients (ช่องทางที่สั่งงาน)

ภาพระบุว่า "เลือก interface ได้" ทุกช่องทางไปลงที่ชั้นเดียวกัน

Client คำอธิบายในภาพ ใช้เมื่อ
Claude Code CLI experience ทำงานผ่านเทอร์มินัลและสคริปต์
Claude Desktop Native app ทำงานเชิงสนทนาบนเครื่อง
VS Code Editor integration อ่านโค้ดและสั่ง agent ในที่เดียว
Terminal Any environment เครื่องที่ไม่มี GUI
Browser Web interface ไม่อยากติดตั้งโปรแกรม
MCP Client Custom integration ต่อกับเครื่องมือที่สร้างเอง

RE MCP Server (ชั้นกลางที่ทำงานบนเครื่อง)

ภาพระบุว่าเป็นชั้นที่ "orchestrates the work" และเป็น local ลูกศรเรียงตามลำดับนี้

ลำดับ ส่วนประกอบ หน้าที่ตามภาพ
1 Target Routing Route & prepare: ส่งไฟล์ไปเส้นทางที่เหมาะและเตรียมไฟล์
2 Session + Digest Track progress: ติดตามความคืบหน้าของเซสชัน
3 Evidence Records Store ground truth: เก็บความจริงพื้นฐาน (กล่องเข้มคือหัวใจ)
4 Analysis Providers Manage engines: จัดการ engine วิเคราะห์
5 Transport Budget Rate limits & costs: คุมอัตราและค่าใช้จ่าย

Evidence Records เป็นกล่องที่ถูกเน้นสีเข้มเพียงกล่องเดียวในชั้นนี้ และเป็นจุดแยกไปยังลูปสืบสวนกับ engine

Investigation Loop (ลูปสืบสวน)

ภาพระบุว่า "repeatable and auditable"

ขั้น ชื่อ ความหมายตามภาพ สิ่งที่ควรได้
1 Scope Define target คำถามและขอบเขตที่ชัด
2 Open Collect context ข้อมูลบริบทของไฟล์
3 Trace Analyze behavior พฤติกรรมที่สังเกตได้
4 Ledger Record findings บันทึกข้อค้นพบพร้อมป้ายหลักฐาน

Analysis Engines (เครื่องมือวิเคราะห์เสริม)

ภาพระบุว่า "bring your own" และ "optional, on demand" คือเรียกใช้เมื่อจำเป็น

Engine หมายเหตุในภาพ
Hopper macOS / binary
Ghidra Multi-platform
IDA Industry standard

Static Targets (เส้นทางลัดสำหรับรูปแบบทั่วไป)

ภาพระบุว่า "no engine needed" เป็น fast path สำหรับรูปแบบที่พบบ่อย

เป้าหมาย หมายเหตุในภาพ
JS / Electron Source & bundles
Managed .NET IL & assemblies
APK / WASM / EVM Mobile, web, blockchain

Evidence Classes (ชนิดของหลักฐาน)

ภาพระบุว่า "all outputs are evidence" แบ่งเป็น 4 ชั้น

ชั้น ความหมายตามภาพ วิธีใช้
Observation Directly seen เห็นตรงๆ จากไฟล์หรือผลรัน อ้างเป็นข้อเท็จจริงได้
Derivation Logical result ได้จากเหตุผลต่อเนื่องจาก Observation ต้องแสดงขั้นตอน
Inference Well-supported สรุปที่มีเหตุผลสนับสนุนดี แต่ไม่ได้เห็นตรงๆ
Unknown Insufficient data ข้อมูลยังไม่พอ ต้องเก็บเพิ่มก่อนสรุป

🔍 หลักการทำงานที่ภาพอธิบาย

ประเด็น สิ่งที่ภาพระบุ
เป้าหมายของ agent ใช้ workstation สำหรับ reverse engineering แทนแชทหลวมๆ
บทบาทของ server ติดตามเซสชัน จัดเส้นทางไฟล์ เก็บหลักฐาน ผูกงานกับต้นทาง
ทุก client ลงที่ชั้น local เดียวกัน ไฟล์ถูกลงทะเบียน เซสชันถูกตั้งชื่อ ทุกข้อสังเกตถูกเขียนก่อนเป็น claim
ข้อดีของการแยกชั้น เชื่อถือได้ ตรวจสอบได้ ต่อยอดง่าย
งานเชิงลึก agent เรียก Hopper, Ghidra หรือ IDA ได้

🧪 ลองใช้

ตัวอย่างประกอบ (ตัวเลขเป็นของเราเอง ไม่ได้มาจากภาพ)

สมมติวิเคราะห์แอป Electron ที่มี bundle JavaScript 1 ไฟล์ ให้ ledger เป็นดังนี้

# ข้อค้นพบ ชั้น หลักฐานอ้างอิง
1 พบสตริง URL https://api.example.test/v1 ในไฟล์ bundle Observation ตำแหน่งสตริงในไฟล์
2 ฟังก์ชัน sync() เรียก URL ในข้อ 1 Observation โค้ดบรรทัดที่เรียกใช้
3 แอปส่งข้อมูลไปเซิร์ฟเวอร์นั้นเมื่อเรียก sync() Derivation ข้อ 1 + ข้อ 2
4 sync() น่าจะรันตามเวลา Inference พบ setInterval ใกล้กัน แต่ยังไม่ได้รัน
5 ข้อมูลที่ส่งมีอะไรบ้าง Unknown ยังไม่ได้ดู payload

ตรวจ: มี 5 ข้อ, 2 ข้อเป็น Observation, 1 Derivation, 1 Inference, 1 Unknown รวมเป็น 5 ทุกข้อมีป้าย

เมื่อไรควรใช้ / ไม่ควรใช้

กรณี ควรใช้ ไม่ควรใช้ ข้อกำหนดเบื้องต้น
ไฟล์ JS, .NET, APK, WASM, EVM ใช่ ผ่านเส้นทางลัด มี MCP server ทำงานบนเครื่อง
ไบนารีเนทีฟที่ต้องดู disassembly ใช่ พร้อม engine มี Hopper, Ghidra หรือ IDA
ต้องมีรายงานที่ตรวจย้อนกลับได้ ใช่ วินัยการเขียน ledger
แค่อยากรู้คร่าวๆ ว่าไฟล์ทำอะไร อาจหนักเกินจำเป็น
ไม่มีสิทธิ์วิเคราะห์ไฟล์นั้น ไม่ควรทำ ต้องมีสิทธิ์ตามกฎหมายและสัญญา

ก้าวแรกที่เล็กที่สุด

  1. เลือกไฟล์ JS หรือ APK ที่คุณมีสิทธิ์วิเคราะห์ 1 ไฟล์
  2. เขียนคำถามเดียวใน Scope เช่น "แอปนี้ติดต่อโดเมนไหนบ้าง"
  3. ให้ agent เดินลูป Open, Trace, Ledger และบังคับให้ทุกข้อมีป้าย 4 ชั้น

วิธีตรวจว่าช่วยได้จริง

รายการ ค่า
ตัวชี้วัด สัดส่วนข้อสรุปที่มีหลักฐานอ้างอิงตรวจซ้ำได้
Baseline ให้ agent ตอบคำถามเดียวกันในแชทธรรมดา แล้วนับข้อที่ชี้หลักฐานได้
เกณฑ์ผ่าน (กำหนดก่อนรัน) หลักฐานอ้างอิงครบ 100% และไม่มี Inference ที่ถูกเขียนเป็นข้อเท็จจริง

⚙️ แนวปฏิบัติที่ดี

  • บันทึกลง ledger ก่อน แล้วค่อยสรุปในแชท
  • ตั้งชื่อเซสชันให้สื่อความหมาย เพื่อย้อนดูได้
  • ใช้เส้นทางลัดก่อน แล้วเรียก engine เมื่อจำเป็น
  • ลดชั้นของข้อสรุปให้ต่ำสุดที่หลักฐานรองรับ เช่น เห็นตรงๆ เพียงบางส่วนให้เป็น Inference
  • เมื่อขาดข้อมูล ให้ลงเป็น Unknown แล้วระบุข้อมูลที่ต้องหาเพิ่ม

❌ ข้อผิดพลาดที่พบบ่อย

ข้อผิดพลาด ผลที่ตามมา วิธีแก้
ข้ามขั้น Ledger ข้อสรุปไม่มีที่มา บังคับว่าไม่มี record ห้ามสรุป
ติดป้าย Observation ให้สิ่งที่คาดเดา หลักฐานปลอมปน ถามว่า "เห็นตรงๆ ไหม"
เรียก engine หนักทั้งที่มีเส้นทางลัด เสียเวลาและค่าใช้จ่าย ลองเส้นทางลัดก่อน
ปล่อยให้ Unknown ถูกเติมด้วยการเดา ข้อสรุปผิด คง Unknown ไว้จนมีข้อมูล

⚠️ Risks

Warning การ reverse engineering ต้องทำกับไฟล์ที่คุณมีสิทธิ์วิเคราะห์เท่านั้น ตรวจสัญญาอนุญาตและกฎหมายของพื้นที่ก่อนเริ่ม

ความเสี่ยง คำอธิบาย การลดความเสี่ยง
ไฟล์อันตราย ไฟล์ที่วิเคราะห์อาจเป็นมัลแวร์ (ตีความ) วิเคราะห์แบบ static ก่อน ใช้เครื่องแยก
ข้อมูลรั่ว การส่งข้อมูลให้โมเดลอาจมีเนื้อหาลับ (ตีความ) ตรวจ transport budget และขอบเขตข้อมูลที่ส่ง
ค่าใช้จ่ายบาน งานวิเคราะห์ยาวใช้โทเคนมาก ใช้ชั้น Transport Budget คุมอัตราและงบ
ผลของ Inference ถูกใช้เป็นความจริง ผู้อ่านรายงานอาจข้ามป้าย แยกส่วนในรายงานตามชั้นหลักฐาน

ข้อจำกัด: ภาพบอกโครงสร้าง ไม่ได้ระบุวิธีติดตั้ง ค่ากำหนด หรือผลวัดความเร็วและความแม่นยำ ส่วนเหล่านั้นจึงยังไม่ทดสอบ

✅ Checklist ก่อนเริ่มงาน

รายการ สถานะ
ยืนยันสิทธิ์ในการวิเคราะห์ไฟล์ ⚪
เลือก client ที่จะใช้ ⚪
ตั้งชื่อเซสชันและลงทะเบียนไฟล์ ⚪
เขียนคำถามใน Scope ⚪
เลือกเส้นทางลัดหรือ engine ⚪
ทุกข้อใน ledger มีป้าย 4 ชั้น ⚪

🧠 ทดสอบความเข้าใจ

คำถาม คำตอบ คำตอบผิดที่พบบ่อย
ทำไม Evidence Records ถึงอยู่ก่อน Analysis Providers ในสายงาน เพื่อให้ผลจากทุก engine ถูกเก็บเป็นหลักฐานชั้นเดียวกัน ไม่ว่าจะใช้ engine ใด "เพราะ engine ไม่สำคัญ" ซึ่งผิด engine สำคัญ แต่ผลต้องผ่านการบันทึกก่อนอ้าง
ฟังก์ชันหนึ่งเรียก URL อีกฟังก์ชันเรียกฟังก์ชันแรก สรุปว่าส่งข้อมูลออก ควรติดป้ายอะไร Derivation เพราะมาจากการต่อเหตุผลของ Observation สองข้อ ไม่ได้เห็นการส่งจริง Observation เพราะ "เห็นโค้ดทั้งสองส่วนแล้ว"
ถ้าไม่มี Hopper, Ghidra หรือ IDA ยังวิเคราะห์ไฟล์ APK ได้ไหม ได้ในระดับ static เพราะ APK อยู่ในเส้นทางลัดที่ไม่ต้องใช้ engine "ไม่ได้ ต้องมี engine เสมอ"
ทำไม Unknown ถึงเป็นผลลัพธ์ที่ยอมรับได้ ระบบเน้นหลักฐาน การระบุว่าข้อมูลไม่พอดีกว่าการเดา และชี้ว่าต้องเก็บอะไรเพิ่ม "Unknown แปลว่าระบบล้มเหลว"
ผู้ใช้ 2 คนใช้ client ต่างกัน (Browser, Terminal) จะได้ ledger คนละชุดหรือไม่ ไม่จำเป็น ทุก client ลงที่ MCP server เดียวกัน ledger ขึ้นกับไฟล์และเซสชัน "ต่างกัน เพราะ client เก็บข้อมูลเอง"
ข้อจำกัดอะไรของแนวคิดนี้ที่ต้องระวัง ป้ายหลักฐานดีเท่ากับวินัยของผู้ติดป้าย ระบบไม่ได้รับประกันว่าป้ายถูกเอง "มีป้ายแล้วถูกต้องแน่นอน"

📚 Glossary (คำที่ไม่ใช่ตัวย่อ)

คำ ความหมาย
Artifact ไฟล์หรือชุดไฟล์ที่เป็นเป้าหมายวิเคราะห์
Session ช่วงงานที่ตั้งชื่อ ผูกกับไฟล์หนึ่งชุด
Ledger สมุดบันทึกข้อค้นพบพร้อมป้ายหลักฐาน
Claim ข้อสรุปที่ agent เสนอ ต้องอ้างหลักฐานได้
Trace การไล่ดูพฤติกรรมของโค้ด
Transport Budget ขีดจำกัดอัตราและค่าใช้จ่ายของการส่งข้อมูล

ตัวย่อที่ใช้ในหน้านี้

ตัวย่อ ชื่อเต็ม คืออะไร อ่านค่าอย่างไร
RE Reverse Engineering การถอดวิเคราะห์ว่าซอฟต์แวร์ทำงานอย่างไรจากตัวไฟล์ "RE MCP Server" = เซิร์ฟเวอร์ MCP สำหรับงานถอดวิเคราะห์
MCP Model Context Protocol มาตรฐานให้โมเดลเชื่อมต่อเครื่องมือภายนอก (ความรู้ทั่วไป) "MCP Client" = โปรแกรมฝั่งที่เรียก MCP server
CLI Command-Line Interface การใช้งานผ่านบรรทัดคำสั่ง "CLI experience" = ใช้งานผ่านเทอร์มินัล
JS JavaScript ภาษาสคริปต์ของเว็บและแอป Electron "JS / Electron" = โค้ด JavaScript หรือแอป Electron
IL Intermediate Language โค้ดขั้นกลางที่ .NET คอมไพล์ออกมา (ความรู้ทั่วไป) "IL & assemblies" = โค้ดขั้นกลางและไฟล์ assembly
APK Android Package ไฟล์แพ็กเกจแอป Android (ความรู้ทั่วไป) ไฟล์ .apk คือแอป Android หนึ่งตัว
WASM WebAssembly รูปแบบไบนารีที่รันในเบราว์เซอร์ (ความรู้ทั่วไป) ไฟล์ .wasm คือโมดูลที่เบราว์เซอร์รันได้
EVM Ethereum Virtual Machine เครื่องเสมือนที่รันสัญญาอัจฉริยะบน Ethereum (ความรู้ทั่วไป) "EVM" ในภาพ = เป้าหมายประเภท bytecode บล็อกเชน
IDA Interactive Disassembler เครื่องมือ disassembler ที่ภาพเรียกว่า industry standard "IDA" = หนึ่งในสาม engine ที่เรียกใช้ได้
VS Code Visual Studio Code โปรแกรมแก้ไขโค้ด "VS Code" = ใช้ agent ผ่านตัวแก้ไขโค้ด
.NET .NET แพลตฟอร์มพัฒนาซอฟต์แวร์ ที่ภาพระบุเป็น Managed .NET "Managed .NET" = โปรแกรมที่รันบน runtime ของ .NET

ตัวย่อที่นิยามมาจากความรู้ทั่วไปเพราะภาพไม่ได้ให้ชื่อเต็ม: MCP, IL, APK, WASM, EVM, IDA, VS Code, .NET, JS, CLI และ RE

Summary

ข้อสรุป: ระบบนี้ทำให้ agent วิเคราะห์ไฟล์ได้อย่างตรวจสอบย้อนกลับได้ โดยบังคับให้ทุกข้อสังเกตกลายเป็นหลักฐานก่อนเป็นข้อสรุป

  • ไฟล์เป้าหมายผ่าน client ใดก็ได้ ไปลงที่ MCP server บนเครื่องเดียวกัน
  • Evidence Records เป็นหัวใจ ลูป Scope, Open, Trace, Ledger ทำซ้ำได้และตรวจสอบได้
  • เส้นทางลัดรองรับ JS/Electron, .NET, APK, WASM, EVM ส่วน Hopper, Ghidra, IDA เรียกใช้เมื่อจำเป็น
  • ทุกผลลัพธ์ถูกจัดเป็น Observation, Derivation, Inference หรือ Unknown
  • ประโยชน์ที่อ้างในหน้านี้มาจากการออกแบบที่ภาพแสดง ยังไม่มีการวัดผลจริง

Recommendation เริ่มจากไฟล์ static หนึ่งไฟล์และคำถามเดียว ทำ ledger ให้ครบทุกข้อก่อนค่อยเพิ่ม engine ภายนอก