Reverse Engineering สำหรับทุกคน
(0xinfection.github.io)แนะนำ
-
คอร์ส x86
- Part 1: เป้าหมาย
- Part 2: เทคนิค
- Part 3: ประเภทของมัลแวร์
- Part 4: แนะนำ x86 Assembly
- Part 5: ระบบเลขฐานสอง
- Part 6: ระบบเลขฐานสิบหก
- Part 7: ทรานซิสเตอร์และหน่วยความจำ
- Part 8: ไบต์ เวิร์ด ดับเบิลเวิร์ด ฯลฯ
- Part 9: สถาปัตยกรรมพื้นฐานของ x86
- Part 10: รีจิสเตอร์เอนกประสงค์
- Part 11: เซกเมนต์รีจิสเตอร์
- Part 12: รีจิสเตอร์ตัวชี้คำสั่ง
- Part 13: คอนโทรลรีจิสเตอร์
- Part 14: แฟล็ก
- Part 15: สแตก
- Part 16: ฮีป
- Part 17: วิธีติดตั้ง Linux
- Part 18: โปรแกรมแก้ไขข้อความ vim
- Part 19: เหตุผลที่ต้องเรียน Assembly
- Part 20: การประมวลผล opcode
- Part 21: วิธีคอมไพล์โปรแกรม
- Part 22: โปรแกรม ASM 1 [การย้ายข้อมูลแบบ immediate]
- Part 23: การดีบัก ASM 1 [การย้ายข้อมูลแบบ immediate]
- Part 24: การแฮ็ก ASM 1 [การย้ายข้อมูลแบบ immediate]
- Part 25: โปรแกรม ASM 2 [การย้ายข้อมูลระหว่างรีจิสเตอร์]
- Part 26: การดีบัก ASM 2 [การย้ายข้อมูลระหว่างรีจิสเตอร์]
- Part 27: การแฮ็ก ASM 2 [การย้ายข้อมูลระหว่างรีจิสเตอร์]
- Part 28: โปรแกรม ASM 3 [การย้ายข้อมูลระหว่างหน่วยความจำกับรีจิสเตอร์]
- Part 29: การดีบัก ASM 3 [การย้ายข้อมูลระหว่างหน่วยความจำกับรีจิสเตอร์]
- Part 30: การแฮ็ก ASM 3 [การย้ายข้อมูลระหว่างหน่วยความจำกับรีจิสเตอร์]
- Part 31: โปรแกรม ASM 4 [การย้ายข้อมูลระหว่างรีจิสเตอร์กับหน่วยความจำ]
- Part 32: การดีบัก ASM 4 [การย้ายข้อมูลระหว่างรีจิสเตอร์กับหน่วยความจำ]
- Part 33: การแฮ็ก ASM 4 [การย้ายข้อมูลระหว่างรีจิสเตอร์กับหน่วยความจำ]
- Part 34: โปรแกรม ASM 5 [การอ้างแอดเดรสทางอ้อมผ่านรีจิสเตอร์]
- Part 35: การดีบัก ASM 5 [การอ้างแอดเดรสทางอ้อมผ่านรีจิสเตอร์]
- Part 36: การแฮ็ก ASM 5 [การอ้างแอดเดรสทางอ้อมผ่านรีจิสเตอร์]
- Part 37: โปรแกรม ASM 6 [คำสั่ง CMOV]
- Part 38: การดีบัก ASM 6 [คำสั่ง CMOV]
- Part 39: การแฮ็ก ASM 6 [คำสั่ง CMOV]
- Part 40: บทสรุป
-
คอร์ส ARM-32 1
- Part 1: ความหมายของชีวิต
- Part 2: ระบบตัวเลข
- Part 3: การบวกเลขฐานสอง
- Part 4: การลบเลขฐานสอง
- Part 5: ความยาวของเวิร์ด
- Part 6: รีจิสเตอร์
- Part 7: โปรแกรมเคาน์เตอร์
- Part 8: CPSR
- Part 9: ลิงก์รีจิสเตอร์
- Part 10: สแตกพอยน์เตอร์
- Part 11: ขั้นตอนการบูตเฟิร์มแวร์ ARM
- Part 12: สถาปัตยกรรมฟอน นอยมันน์
- Part 13: ไปป์ไลน์คำสั่ง
- Part 14: ADD
- Part 15: การดีบัก ADD
- Part 16: การแฮ็ก ADD
- Part 17: ADDS
- Part 18: การดีบัก ADDS
- Part 19: การแฮ็ก ADDS
- Part 20: ADC
- Part 21: การดีบัก ADC
- Part 22: การแฮ็ก ADC
- Part 23: SUB
- Part 24: การดีบัก SUB
- Part 25: การแฮ็ก SUB
-
คอร์ส ARM-32 2
- Part 1: ความหมายของชีวิต Part 2
- Part 2: ระบบตัวเลข
- Part 3: การบวกเลขฐานสอง
- Part 4: การลบเลขฐานสอง
- Part 5: ความยาวของเวิร์ด
- Part 6: รีจิสเตอร์
- Part 7: โปรแกรมเคาน์เตอร์
- Part 8: CPSR
- Part 9: ลิงก์รีจิสเตอร์
- Part 10: สแตกพอยน์เตอร์
- Part 11: ขั้นตอนการบูตเฟิร์มแวร์
- Part 12: สถาปัตยกรรมฟอน นอยมันน์
- Part 13: ไปป์ไลน์คำสั่ง
- Part 14: Hello World
- Part 15: การดีบัก Hello World
- Part 16: การแฮ็ก Hello World
- Part 17: ค่าคงที่
- Part 18: การดีบักค่าคงที่
- Part 19: การแฮ็กค่าคงที่
- Part 20: ตัวแปรอักขระ
- Part 21: การดีบักตัวแปรอักขระ
- Part 22: การแฮ็กตัวแปรอักขระ
- Part 23: ตัวแปรบูลีน
- Part 24: การดีบักตัวแปรบูลีน
- Part 25: การแฮ็กตัวแปรบูลีน
- Part 26: ตัวแปรจำนวนเต็ม
- Part 27: การดีบักตัวแปรจำนวนเต็ม
- Part 28: การแฮ็กตัวแปรจำนวนเต็ม
- Part 29: ตัวแปรจุดลอยตัว
- Part 30: การดีบักตัวแปรจุดลอยตัว
- Part 31: การแฮ็กตัวแปรจุดลอยตัว
- Part 32: ตัวแปร double
- Part 33: การดีบักตัวแปร double
- Part 34: การแฮ็กตัวแปร double
- Part 35: ตัวดำเนินการ SizeOf
- Part 36: การดีบักตัวดำเนินการ SizeOf
- Part 37: การแฮ็กตัวดำเนินการ SizeOf
- Part 38: ตัวดำเนินการเพิ่มค่าก่อนใช้งาน
- Part 39: การดีบักตัวดำเนินการเพิ่มค่าก่อนใช้งาน
- Part 40: การแฮ็กตัวดำเนินการเพิ่มค่าก่อนใช้งาน
- Part 41: ตัวดำเนินการเพิ่มค่าหลังใช้งาน
- Part 42: การดีบักตัวดำเนินการเพิ่มค่าหลังใช้งาน
- Part 43: การแฮ็กตัวดำเนินการเพิ่มค่าหลังใช้งาน
- Part 44: ตัวดำเนินการลดค่าก่อนใช้งาน
- Part 45: การดีบักตัวดำเนินการลดค่าก่อนใช้งาน
- Part 46: การแฮ็กตัวดำเนินการลดค่าก่อนใช้งาน
- Part 47: ตัวดำเนินการลดค่าหลังใช้งาน
- Part 48: การดีบักตัวดำเนินการลดค่าหลังใช้งาน
- Part 49: การแฮ็กตัวดำเนินการลดค่าหลังใช้งาน
-
คอร์ส x64
- Part 1: การปฏิวัติไซเบอร์
- Part 2: ทรานซิสเตอร์
- Part 3: ลอจิกเกต
- Part 4: ระบบตัวเลข
- Part 5: การบวกเลขฐานสอง
- Part 6: การลบเลขฐานสอง
- Part 7: ความยาวของเวิร์ด
- Part 8: สถาปัตยกรรมทั่วไป
- Part 9: calling convention
- Part 10: คำสั่งบูลีน
- Part 11: พอยน์เตอร์
- Part 12: โหลด effective address
- Part 13: data segment
- Part 14: คำสั่ง SHL
- Part 15: คำสั่ง SHR
- Part 16: คำสั่ง ROL
- Part 17: คำสั่ง ROR
- Part 18: พื้นฐานบูตเซกเตอร์ [Part 1]
- Part 19: พื้นฐานบูตเซกเตอร์ [Part 2]
- Part 20: พื้นฐานบูตเซกเตอร์ [Part 3]
- Part 21: พื้นฐานบูตเซกเตอร์ [Part 4]
- Part 22: พื้นฐานบูตเซกเตอร์ [Part 5]
- Part 23: พื้นฐานบูตเซกเตอร์ [Part 6]
- Part 24: พื้นฐานบูตเซกเตอร์ [Part 7]
- Part 25: พื้นฐานบูตเซกเตอร์ [Part 8]
- Part 26: พื้นฐานบูตเซกเตอร์ [Part 9]
- Part 27: x64 Assembly [Part 1]
- Part 28: x64 Assembly [Part 2]
- Part 29: x64 Assembly [Part 3]
- Part 30: x64 Assembly [Part 4]
- Part 31: x64 Assembly [Part 5]
- Part 32: x64 Assembly [Part 6]
- Part 33: x64 Assembly [Part 7]
- Part 34: โค้ด x64 C++ 1 [Part 1]
- Part 35: ดีบัก x64 C++ 2 [Part 2]
- Part 36: แฮ็ก x64 C++ 3 [Part 3]
- Part 37: x64 C & ต้นกำเนิดของชีวิต
- Part 38: พื้นฐานเครือข่าย x64
- Part 39: ทำไมต้อง C?
- Part 40: แฮ็ก Hello World!
- Part 41: แฮ็กตัวแปร!
- Part 42: แฮ็กการแตกแขนง!
- Part 43: แฮ็กพอยน์เตอร์!
-
คอร์ส ARM-64
- Part 1: ความหมายของชีวิต
- Part 2: ตั้งค่าสภาพแวดล้อมการพัฒนา
- Part 3: "Hello World"
- Part 4: ดีบัก "Hello World"
- Part 5: แฮ็ก "Hello World"
- Part 6: I/O พื้นฐาน
- Part 7: ดีบัก I/O พื้นฐาน
- Part 8: แฮ็ก I/O พื้นฐาน
- Part 9: ชนิดข้อมูลพื้นฐานแบบอักขระ
- Part 10: ดีบักชนิดข้อมูลพื้นฐานแบบอักขระ
- Part 11: แฮ็กชนิดข้อมูลพื้นฐานแบบอักขระ
- Part 12: ชนิดข้อมูลพื้นฐานแบบบูลีน
- Part 13: ดีบักชนิดข้อมูลพื้นฐานแบบบูลีน
- Part 14: แฮ็กชนิดข้อมูลพื้นฐานแบบบูลีน
- Part 15: ชนิดข้อมูลพื้นฐานแบบจุดลอยตัว
- Part 16: ดีบักชนิดข้อมูลพื้นฐานแบบจุดลอยตัว
- Part 17: แฮ็กชนิดข้อมูลพื้นฐานแบบจุดลอยตัว
- Part 18: ชนิดข้อมูลพื้นฐานแบบ double
- Part 19: ดีบักชนิดข้อมูลพื้นฐานแบบ double
- Part 20: แฮ็กชนิดข้อมูลพื้นฐานแบบ double
-
คอร์สแฮ็ก Pico
- Part 1: เหตุผลและวิธีการ
- Part 2: Hello World
- Part 3: ดีบัก Hello World
- Part 4: แฮ็ก Hello World
- Part 5: char
- Part 6: ดีบัก char
- Part 7: แฮ็ก char
- Part 8: int
- Part 9: ดีบัก int
- Part 10: แฮ็ก int
- Part 11: float
- Part 12: ดีบัก float
- Part 13: แฮ็ก float
- Part 14: double
- Part 15: ดีบัก double
- Part 16: แฮ็ก double
- Part 17: "อำนาจสมบูรณ์ย่อมคอร์รัปชันอย่างสมบูรณ์!" เรื่องเศร้าของอินพุต
- Part 18: "ฉันฝึกเจไดมาแล้ว 800 ปี!" พลังของอินพุต
- Part 19: อินพุต
- Part 20: ดีบักอินพุต
-
Reverse Engineering For Everyone!
- Reverse Engineering คืออะไร?
- ตาม Wikipedia นั้น Reverse Engineering คือกระบวนการแยกชิ้นส่วนวัตถุที่มนุษย์สร้างขึ้นเพื่อเปิดเผยการออกแบบ สถาปัตยกรรม โค้ด ฯลฯ หรือเพื่อดึงความรู้จากวัตถุนั้น ซึ่งคล้ายกับการวิจัยทางวิทยาศาสตร์ที่ศึกษาปรากฏการณ์ทางธรรมชาติ
- ชุดบทเรียนนี้มีขึ้นเพื่อทำให้ Reverse Engineering เข้าใจได้ง่ายที่สุดเท่าที่จะเป็นไปได้
- ชุดบทเรียน Reverse Engineering แบบครอบคลุมนี้ครอบคลุมสถาปัตยกรรม x86, x64, ARM แบบ 32 บิต และ 64 บิต
- สำหรับผู้เริ่มต้น บทเรียนนี้ช่วยให้เข้าใจแนวคิดพื้นฐานของ Reverse Engineering และยังมีประโยชน์สำหรับผู้ที่ต้องการทบทวนแนวคิดด้วย
- สามารถดาวน์โหลดชุดบทเรียนทั้งหมดได้ในรูปแบบ PDF หรือ MOBI
- Reverse Engineering คืออะไร?
สรุปโดย GN⁺
- บทความนี้ครอบคลุมบทเรียน Reverse Engineering ที่หลากหลาย รวมถึงคอร์ส x86, x64, ARM-32, ARM-64 และ Pico แฮ็ก
- เป็นแหล่งข้อมูลที่มีประโยชน์สำหรับผู้ที่ต้องการเรียนรู้ทักษะ Reverse Engineering ตั้งแต่ระดับเริ่มต้นถึงระดับกลาง
- ทักษะ Reverse Engineering มีความสำคัญอย่างมากในสายงานความปลอดภัยไซเบอร์
- มีบทเรียนให้ในรูปแบบ PDF และ MOBI เพื่อให้เข้าถึงได้ง่ายขึ้น
- โปรเจกต์ที่มีลักษณะคล้ายกัน ได้แก่ "Practical Reverse Engineering" และ "Reversing: Secrets of Reverse Engineering"
ยังไม่มีความคิดเห็น