0Pricing
Cyber Security Academy · บทเรียน

Ghidra: การนำทางและใส่คำอธิบายไบนารี

นำเข้าไบนารี นำทางโค้ดถอดแยกและโค้ดที่ดีคอมไพล์ใหม่ เปลี่ยนชื่อตัวแปร และเพิ่มความคิดเห็น

Ghidra: การนำทางและใส่คำอธิบายไบนารี เป็นบทเรียน Cyber Security Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Cyber Security Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Cyber Security Academy มีบทเรียนทั้งหมด 4 บทเรียน

Ghidra คืออะไร

กิดรา คือเครื่องมือวิศวกรรมย้อนกลับแบบฟรีและโอเพนซอร์สที่พัฒนาโดย NSA และเผยแพร่ต่อสาธารณะในปี 2019 รองรับการแยกส่วนไบนารี การแปลงกลับเป็นโค้ดระดับสูง การเขียนสคริปต์ และการวิเคราะห์ร่วมกันบนลินุกซ์ macOS และวินโดวส์

การโหลดไบนารี

การเปิดไบนารีใน Ghidra:

  1. สร้างโครงการใหม่
  2. นำเข้าไฟล์ (ไฟล์ → นำเข้าไฟล์)
  3. การวิเคราะห์อัตโนมัติจะทำงาน — โปรดรอให้เสร็จสมบูรณ์ (ระบบจะระบุฟังก์ชัน สตริง และชนิดข้อมูล)
  4. CodeBrowser จะเปิดขึ้น โดยแสดงมุมมองการถอดคำสั่งและตัวแยกคอมไพล์

อินเทอร์เฟซของ Ghidra

หน้าต่างสำคัญของ Ghidra:

  • ต้นไม้โปรแกรม — ส่วนต่าง ๆ (.text, .data, .plt)
  • ต้นไม้สัญลักษณ์ — ฟังก์ชัน ป้ายกำกับ การนำเข้า และการส่งออก
  • รายการ — มุมมองการถอดคำสั่ง
  • ตัวแยกคอมไพล์ — การสร้างรหัสเทียมแบบ C ขึ้นใหม่
  • ฟังก์ชัน — รายการฟังก์ชันทั้งหมดที่ระบุได้

การไปยังจุดเริ่มต้น

เริ่มวิเคราะห์ที่จุดเริ่มต้นของโปรแกรมหรือ main():

  • กด G เพื่อ “ไปที่” ที่อยู่หรือสัญลักษณ์
  • ค้นหา “main” ในต้นไม้สัญลักษณ์
  • ดับเบิลคลิกฟังก์ชันใดก็ได้เพื่อไปยังฟังก์ชันนั้น

การอ่านผลลัพธ์จากตัวแยกคอมไพล์

ตัวแยกคอมไพล์ของ Ghidra สร้างรหัสเทียมแบบ C ซึ่งอ่านง่ายกว่าแอสเซมบลี แม้ผลลัพธ์จะไม่สมบูรณ์แบบ — ชื่อตัวแปรเป็นชื่อทั่วไป (param_1, local_10) และลำดับการควบคุมอาจดูแปลก — แต่ก็เผยให้เห็นตรรกะได้ชัดเจนเพียงพอที่จะเข้าใจว่าโค้ดทำงานอย่างไร

การเปลี่ยนชื่อตัวแปรและฟังก์ชัน

การใส่คำอธิบายประกอบช่วยให้อ่านง่ายขึ้น:

  • คลิกขวาที่ตัวแปร → เปลี่ยนชื่อ (หรือกด L)
  • คลิกขวาที่ฟังก์ชัน → เปลี่ยนชื่อฟังก์ชัน
  • เพิ่มความคิดเห็นด้วยรูปแบบ ; (ท้ายบรรทัด) หรือ /*...*/

การเปลี่ยนชื่อจะช่วยสร้างบริบทเพิ่มขึ้นเมื่อคุณเข้าใจไบนารีมากขึ้น

การระบุสตริง

สตริงมีประโยชน์อย่างยิ่งต่อการทำความเข้าใจวัตถุประสงค์ของโปรแกรม:

  • หน้าต่าง → สตริงที่กำหนดไว้ จะแสดงค่าคงที่ชนิดสตริงทั้งหมด
  • คลิกสตริงเพื่อไปยังตำแหน่งที่มีการใช้งานในโค้ด
  • ข้อความแสดงข้อผิดพลาด เส้นทางไฟล์ URL และคีย์รีจิสทรีช่วยเปิดเผยการทำงาน

การอ้างอิงข้าม (XREF)

XREF แสดงว่าฟังก์ชันหรือตัวแปรถูกเรียกใช้หรือใช้งานที่ใด กด X บนสัญลักษณ์ใดก็ได้เพื่อดูการอ้างอิงทั้งหมด สิ่งนี้สำคัญอย่างยิ่งต่อการค้นหาว่าข้อมูลขาเข้าของผู้ใช้เข้าสู่ฟังก์ชันที่ใด หรือการตรวจสอบความปลอดภัยเกิดขึ้นที่ใด

การเขียนสคริปต์ด้วย Ghidra

Ghidra มีส่วนเชื่อมต่อการเขียนโปรแกรมประยุกต์สำหรับการเขียนสคริปต์ด้วย Python/Java:

# Python script to find all calls to strcpy:
from ghidra.program.model.symbol import RefType
for ref in currentProgram.getReferenceManager().getReferencesTo(toAddr(0x401234)):
    print(ref.getFromAddress())

การวิเคราะห์มัลแวร์ด้วย Ghidra

สำหรับการวิเคราะห์มัลแวร์:

  • ระบุเทคนิคต่อต้านการวิเคราะห์ (ต่อต้านดีบัก การทำให้โค้ดอ่านยาก)
  • ค้นหาฟังก์ชันสื่อสารผ่านเครือข่าย (socket, connect, WinInet)
  • ค้นหาฟังก์ชันเข้ารหัสลับ (มองหาค่าคงที่ AES S-box: 0x63, 0x7c...)
  • ดึง URL ของ C2 จากสตริงที่ถอดรหัสแล้ว

Ghidra เทียบกับ IDA Pro

Ghidra เทียบกับ IDA Pro:

  • Ghidra: ฟรี โอเพนซอร์ส เขียนสคริปต์ได้ และมีตัวแยกคอมไพล์ที่ดี
  • IDA Pro: เป็นมาตรฐานอุตสาหกรรม วิเคราะห์ได้เร็วกว่า มีระบบปลั๊กอินที่ดีกว่า และมีราคาแพง ($$$)
  • สำหรับงานส่วนใหญ่ Ghidra มีความสามารถเพียงพออย่างเต็มที่ ส่วน IDA เหมาะสำหรับห้องปฏิบัติการวิเคราะห์มัลแวร์ระดับมืออาชีพ

ตรวจสอบอย่างรวดเร็ว: Ghidra

ฟีเจอร์ใดของ Ghidra ที่แสดงตำแหน่งทั้งหมดในไบนารีซึ่งเรียกใช้หรืออ้างอิงฟังก์ชันหรือตัวแปรที่ระบุ

สรุปบทเรียน

Ghidra เป็นเครื่องมือ RE ฟรีที่พัฒนาโดย NSA ซึ่งมีการถอดคำสั่ง การแยกคอมไพล์ และการเขียนสคริปต์ กระบวนการทำงานสำคัญ ได้แก่ โหลดไบนารี เรียกใช้การวิเคราะห์อัตโนมัติ ไปยัง main() ใช้ตัวแยกคอมไพล์เพื่อดูตรรกะ เปลี่ยนชื่อตัวแปร ใช้ XREF เพื่อติดตามการไหลของข้อมูล และค้นหาสตริงเพื่อสร้างบริบท การใส่คำอธิบายประกอบช่วยสร้างความเข้าใจทีละขั้น การเขียนสคริปต์ช่วยทำงานวิเคราะห์ที่ซ้ำ ๆ โดยอัตโนมัติ

คำถามที่พบบ่อย

บทเรียน “Ghidra: การนำทางและใส่คำอธิบายไบนารี” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “Ghidra: การนำทางและใส่คำอธิบายไบนารี” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Cyber Security Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Cyber Security Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “Ghidra: การนำทางและใส่คำอธิบายไบนารี”

นำเข้าไบนารี นำทางโค้ดถอดแยกและโค้ดที่ดีคอมไพล์ใหม่ เปลี่ยนชื่อตัวแปร และเพิ่มความคิดเห็น คุณปฏิบัติ Cyber Security Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Cyber Security Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Cyber Security Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน

บทเรียน “Ghidra: การนำทางและใส่คำอธิบายไบนารี” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Cyber Security Academy นี้ได้ไหม

ได้ บทเรียน Cyber Security Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. Ghidra: การนำทางและใส่คำอธิบายไบนารี
  2. พื้นฐานแอสเซมบลี x86/x64 สำหรับนักวิเคราะห์ย้อนกลับ
  3. การวิเคราะห์แบบไดนามิกด้วย GDB และ pwndbg
  4. การถอดการทำให้สับสนและกลลวงต่อต้านการวิเคราะห์
← กลับไปที่ Cyber Security Academy