Ghidra: การนำทางและใส่คำอธิบายไบนารี
นำเข้าไบนารี นำทางโค้ดถอดแยกและโค้ดที่ดีคอมไพล์ใหม่ เปลี่ยนชื่อตัวแปร และเพิ่มความคิดเห็น
Ghidra: การนำทางและใส่คำอธิบายไบนารี เป็นบทเรียน Cyber Security Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Cyber Security Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Cyber Security Academy มีบทเรียนทั้งหมด 4 บทเรียน
Ghidra คืออะไร
กิดรา คือเครื่องมือวิศวกรรมย้อนกลับแบบฟรีและโอเพนซอร์สที่พัฒนาโดย NSA และเผยแพร่ต่อสาธารณะในปี 2019 รองรับการแยกส่วนไบนารี การแปลงกลับเป็นโค้ดระดับสูง การเขียนสคริปต์ และการวิเคราะห์ร่วมกันบนลินุกซ์ macOS และวินโดวส์
การโหลดไบนารี
การเปิดไบนารีใน Ghidra:
- สร้างโครงการใหม่
- นำเข้าไฟล์ (ไฟล์ → นำเข้าไฟล์)
- การวิเคราะห์อัตโนมัติจะทำงาน — โปรดรอให้เสร็จสมบูรณ์ (ระบบจะระบุฟังก์ชัน สตริง และชนิดข้อมูล)
- 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- Ghidra: การนำทางและใส่คำอธิบายไบนารี
- พื้นฐานแอสเซมบลี x86/x64 สำหรับนักวิเคราะห์ย้อนกลับ
- การวิเคราะห์แบบไดนามิกด้วย GDB และ pwndbg
- การถอดการทำให้สับสนและกลลวงต่อต้านการวิเคราะห์