การแกะแพ็ก
เอาชนะการทำให้อ่านยาก
การแกะแพ็ก เป็นบทเรียน Ethical Hacking Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Ethical Hacking Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Ethical Hacking Academy มีบทเรียนทั้งหมด 4 บทเรียน
การแพ็กคืออะไร
การแพ็กจะบีบอัดหรือเข้ารหัสโค้ดจริงของโปรแกรม แล้วห่อไว้ในส่วนต้นขนาดเล็ก เมื่อทำงาน ส่วนต้นนี้จะคลายแพ็กโค้ดต้นฉบับลงในหน่วยความจำและเรียกใช้
ผู้สร้างมัลแวร์ใช้การแพ็กเพื่อหลบเลี่ยงลายเซ็นและทำให้การวิเคราะห์แบบสถิตทำได้ยาก
เหตุใดจึงต้องคลายแพ็ก
ไบนารีที่ถูกแพ็กมักมีสตริงน้อย การนำเข้าน้อย และเอนโทรปีสูง โค้ดที่มีความหมายจะถูกซ่อนไว้จนกว่าส่วนต้นจะทำงาน
การคลายแพ็กจะกู้คืนโค้ดต้นฉบับ เพื่อให้คุณวิเคราะห์แบบสถิตและดึง IOC ที่แท้จริงออกมาได้
การตรวจหาตัวแพ็ก
เครื่องมืออย่าง Detect It Easy (DIE) และ PEiD ระบุตัวแพ็กที่รู้จักได้จากลายเซ็น เอนโทรปีสูงและตารางการนำเข้าขนาดเล็กก็เป็นเบาะแสสำคัญเช่นกัน
ตัวแพ็กที่พบได้บ่อย ได้แก่ UPX, ASPack และ Themida
die sample.exe
# Packer: UPX(3.96)การคลายแพ็ก UPX
UPX เป็นตัวแพ็กที่พบได้ทั่วไปและไม่เป็นอันตราย ซึ่งสามารถย้อนกลับได้ด้วยเครื่องมือของตัวเอง ตัวเลือก -d จะคลายการบีบอัดไบนารีกลับเป็นรูปแบบเดิม
ตัวอย่างจากโลกจริงจำนวนมากใช้ UPX หรือ UPX ที่ถูกดัดแปลงเล็กน้อย ดังนั้นนี่จึงมักเป็นความพยายามแรก
upx -d sample.exeการคลายแพ็กด้วยตนเอง: แนวคิด
ตัวแพ็กแบบกำหนดเองไม่สามารถย้อนกลับได้ด้วยเครื่องมือสำเร็จรูป แต่คุณสามารถปล่อยให้ส่วนต้นคลายแพ็กตัวเองในหน่วยความจำ แล้วเก็บผลลัพธ์ไว้
แผนการคือ เรียกใช้ตัวอย่างภายใต้เครื่องมือดีบัก หยุดทันทีหลังการคลายแพ็กเสร็จสิ้น แล้วดัมป์โค้ดที่ถูกเปิดเผยออกมา
การค้นหา OEP
จุดเริ่มต้นเดิม (OEP) คือจุดที่การทำงานกระโดดไปเมื่อการคลายแพ็กเสร็จสิ้น การไปถึง OEP หมายความว่าโค้ดจริงอยู่ในหน่วยความจำแล้ว
เทคนิคการค้นหา OEP ได้แก่ การเฝ้าดูการกระโดดระยะไกลออกจากส่วนต้น หรือตั้งจุดหยุดบนหน่วยความจำที่ส่วนต้นเขียนแล้วเรียกใช้
จุดหยุดสำหรับการคลายแพ็ก
เทคนิคที่ใช้กันทั่วไปคือการตั้งจุดหยุดฮาร์ดแวร์บนสแตก (ส่วนต้นมักกู้คืนรีจิสเตอร์ก่อนกระโดดไปยัง OEP) หรือตั้งจุดหยุดที่การเรียกใช้ API ทั่วไปซึ่งโค้ดที่คลายแพ็กแล้วใช้
เมื่อจุดหยุดทำงานที่ OEP โค้ดต้นฉบับจะถูกถอดรหัสอย่างสมบูรณ์
การดัมป์โพรเซส
เมื่ออยู่ที่ OEP ให้ดัมป์หน่วยความจำของโพรเซสลงในไฟล์ใหม่ เครื่องมืออย่าง Scylla (ที่มีอยู่ใน x64dbg) หรือ PE-sieve จะเก็บอิมเมจที่คลายแพ็กแล้ว
ดัมป์นี้มีคำสั่งจริงอยู่แล้ว แต่ในตอนนี้อาจยังทำงานได้ด้วยตัวเองไม่ได้
การสร้างการนำเข้าใหม่
หลังการดัมป์ ตารางที่อยู่การนำเข้า มักเสียหาย เพราะตัวแพ็กแก้ไขการนำเข้าขณะทำงาน Scylla สามารถสร้าง IAT ใหม่ เพื่อให้วิเคราะห์ไฟล์ที่ดัมป์ได้
เมื่อแก้ไขการนำเข้าเรียบร้อยแล้ว คุณสามารถโหลดดัมป์ที่สะอาดเข้าสู่ Ghidra หรือ IDA ได้
การทำให้อ่านยากรูปแบบอื่น
นอกเหนือจากการแพ็กแล้ว มัลแวร์ยังใช้การทำให้อ่านยากรูปแบบอื่น เช่น สตริงที่เข้ารหัสและถอดรหัสขณะทำงาน คำสั่งขยะ การทำให้ลำดับการควบคุมแบนราบ และการตรวจจับการดีบัก
วิธีจัดการสิ่งเหล่านี้ต้องพิจารณาเป็นกรณี ๆ ไป โดยมักผสานการติดตามแบบไดนามิกกับการอ่านโค้ดแบบสถิติอย่างอดทน
การตรวจสอบตัวอย่างที่คลายแพ็กแล้ว
หลังจากดัมป์และสร้างการนำเข้าใหม่แล้ว ให้ยืนยันความสำเร็จด้วยการวิเคราะห์แบบสถิติอีกครั้ง โดยควรพบสตริงและตารางการนำเข้าที่มีข้อมูลมากขึ้น
หากเอนโทรปีกลับมาอยู่ในระดับปกติและมองเห็น API ได้ แสดงว่าการคลายแพ็กสำเร็จ และโค้ดจริงพร้อมสำหรับการวิเคราะห์
ตรวจสอบความเข้าใจ
ทบทวนว่า OEP บ่งบอกอะไรระหว่างการคลายแพ็กด้วยตนเอง
สรุปทบทวน
ขณะนี้คุณเข้าใจการคลายแพ็กแล้ว:
- การแพ็กซ่อนโค้ดจริง ตรวจจับได้ด้วย DIE/PEiD เอนโทรปีสูง และการนำเข้าจำนวนน้อย
- ตัวแพ็กที่รู้จัก เช่น UPX สามารถคลายแพ็กด้วยเครื่องมือ (
upx -d) - สำหรับตัวแพ็กแบบกำหนดเอง ให้เรียกใช้ภายใต้เครื่องมือดีบัก ค้นหา OEP ดัมป์ด้วย Scylla และสร้างการนำเข้าใหม่
- การทำให้อ่านยากรูปแบบอื่น (สตริงที่เข้ารหัส การป้องกันการดีบัก) ต้องจัดการเป็นกรณี ๆ ไป
คุณเรียนจบหลักสูตรวิศวกรรมย้อนกลับมัลแวร์แล้ว
คำถามที่พบบ่อย
บทเรียน “การแกะแพ็ก” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การแกะแพ็ก” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Ethical Hacking Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Ethical Hacking Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การแกะแพ็ก”
เอาชนะการทำให้อ่านยาก คุณปฏิบัติ Ethical Hacking Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Ethical Hacking Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Ethical Hacking Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน
บทเรียน “การแกะแพ็ก” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Ethical Hacking Academy นี้ได้ไหม
ได้ บทเรียน Ethical Hacking Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ