ข้ามไปที่เนื้อหา
CYBERSKILLS Academy
ระดับกลาง7 ชม. 14 นาที · 24 ขั้นการเรียน · 4 ด่านบังคับ

C และการเขียนโปรแกรมระดับล่าง

เรียนรู้ว่าโค้ดของคุณทำอะไรกับหน่วยความจำจริงๆ — ชั้นที่ภาษาระดับสูงทุกภาษายืนอยู่บนมัน และเป็นชั้นที่ผู้โจมตีทำงานอยู่

สำหรับโปรแกรมเมอร์ที่อ่านโค้ดง่ายๆ ในภาษาไหนก็ได้ แต่ไม่เคยต้องคิดเรื่องหน่วยความจำ pointer หรือสิ่งที่คอมไพเลอร์กำลังทำ ไม่ต้องมีพื้นฐาน C มาก่อน — คอร์สนี้สอนภาษาตั้งแต่ต้น คอร์สนี้สมมติว่าคุณมีเชลล์แบบยูนิกซ์ที่ใช้งานได้ และตั้งแต่คอร์ส C เป็นต้นไปสมมติว่ามีคอมไพเลอร์ C กับ make ด้วย ถ้ายังไม่มี — หรือไม่เคยเปิดเทอร์มินัลมาก่อน — คอร์ส "ตั้งต้นให้พร้อม" ติดตั้งและยืนยันทั้งหมดนั้นให้ก่อน และเนื้อหาตรงนี้ไม่ได้เล่าซ้ำ

ตัวอย่างโครงสร้างคอร์ส

เมื่อจบคอร์ส คุณจะทำอะไรได้บ้าง

  • อธิบายได้ว่าเกิดอะไรขึ้นระหว่างไฟล์ source ของคุณกับโปรแกรมที่กำลังทำงาน
  • เขียน C ที่จัดการหน่วยความจำอย่างตั้งใจ แทนการทำแล้วหวังว่าจะรอด
  • อ่านและคิดตามเรื่อง pointer ได้ รวมถึงกรณีที่ทำคนสับสน
  • รู้จักบั๊กหน่วยความจำที่อยู่เบื้องหลังช่องโหว่จริงจำนวนมาก และหามันเจอด้วยเครื่องมือ
  • ทำงานกับบิต การแทนค่าจำนวนเต็ม และเลขทศนิยมได้โดยไม่ต้องเดา
  • สร้างโปรเจกต์หลายไฟล์ได้ และอธิบายได้ว่า linker ทำอะไรไป

ก่อนเริ่มเรียน

แผนการเรียน

ภาษาไทยพร้อมสำหรับทุกขั้นการเรียน.

นี่คือเส้นทางการเรียนทั้งหมด แต่ละบทต่อยอดจากบทก่อนหน้า และด่านบังคับคือจุดที่คุณได้แสดงสิ่งที่ทำได้จริง.

  1. 01

    ทำไม C ยังคุ้มที่จะเรียน

    บทเรียน · 14 นาที

  2. 02

    จากไฟล์ source สู่โปรแกรมที่ทำงานได้

    บทเรียน · 16 นาที

    ต่อยอดจาก: ทำไม C ยังคุ้มที่จะเรียน

  3. 03

    โปรแกรม C ตัวแรกของคุณ

    บทเรียน · 18 นาที

    ต่อยอดจาก: จากไฟล์ source สู่โปรแกรมที่ทำงานได้

  4. 04

    undefined behaviour: เมื่อ C เลิกสัญญา

    บทเรียน · 16 นาที

    ต่อยอดจาก: โปรแกรม C ตัวแรกของคุณ

  5. 05

    ชนิดข้อมูล การแปลงค่า และตัวดำเนินการที่ทำคนแปลกใจ

    บทเรียน · 18 นาที

    ต่อยอดจาก: undefined behaviour: เมื่อ C เลิกสัญญา

  6. 06

    การควบคุมการไหลและกับดักในนั้น

    บทเรียน · 16 นาที

    ต่อยอดจาก: ชนิดข้อมูล การแปลงค่า และตัวดำเนินการที่ทำคนแปลกใจ

  7. 07

    ฟังก์ชัน argument และอายุของตัวแปร

    บทเรียน · 18 นาที

    ต่อยอดจาก: การควบคุมการไหลและกับดักในนั้น

  8. 08

    array และ string: ที่ที่บั๊กอาศัยอยู่

    ด่านบังคับ · 20 นาที

    ต่อยอดจาก: ฟังก์ชัน argument และอายุของตัวแปร

  9. 09

    struct: การจัดกลุ่มข้อมูล และสิ่งที่คอมไพเลอร์แถมมาให้

    บทเรียน · 18 นาที

    ต่อยอดจาก: array และ string: ที่ที่บั๊กอาศัยอยู่

  10. 10

    pointer: ตัวแปรที่เก็บที่อยู่

    บทเรียน · 20 นาที

    ต่อยอดจาก: struct: การจัดกลุ่มข้อมูล และสิ่งที่คอมไพเลอร์แถมมาให้

  11. 11

    เลขคณิตของ pointer และ array ทำงานอย่างไรจริงๆ

    บทเรียน · 18 นาที

    ต่อยอดจาก: pointer: ตัวแปรที่เก็บที่อยู่

  12. 12

    stack กับ heap

    บทเรียน · 18 นาที

    ต่อยอดจาก: เลขคณิตของ pointer และ array ทำงานอย่างไรจริงๆ

  13. 13

    การจองและการคืนหน่วยความจำ

    ด่านบังคับ · 22 นาที

    ต่อยอดจาก: stack กับ heap

  14. 14

    function pointer: การส่งพฤติกรรมไปมา

    บทเรียน · 18 นาที

    ต่อยอดจาก: การจองและการคืนหน่วยความจำ

  15. 15

    อ่านอาการ: นี่คือบั๊กหน่วยความจำแบบไหน

    บทเรียน · 18 นาที

    ต่อยอดจาก: function pointer: การส่งพฤติกรรมไปมา

  16. 16

    เครื่องมือที่หาบั๊กหน่วยความจำให้คุณ

    บทเรียน · 18 นาที

    ต่อยอดจาก: อ่านอาการ: นี่คือบั๊กหน่วยความจำแบบไหน

  17. 17

    เขียน C ให้ทนต่อความผิดพลาด

    ด่านบังคับ · 20 นาที

    ต่อยอดจาก: เครื่องมือที่หาบั๊กหน่วยความจำให้คุณ

  18. 18

    จำนวนเต็มถูกเก็บอย่างไร และมันพังตรงไหน

    บทเรียน · 18 นาที

    ต่อยอดจาก: เขียน C ให้ทนต่อความผิดพลาด

  19. 19

    การทำงานกับบิตทีละตัว

    บทเรียน · 18 นาที

    ต่อยอดจาก: จำนวนเต็มถูกเก็บอย่างไร และมันพังตรงไหน

  20. 20

    ลำดับไบต์ และข้อมูลที่ข้ามขอบเขตออกไป

    บทเรียน · 18 นาที

    ต่อยอดจาก: จำนวนเต็มถูกเก็บอย่างไร และมันพังตรงไหน

  21. 21

    เลขทศนิยม: ทำไม 0.1 + 0.2 ถึงไม่เท่ากับ 0.3

    บทเรียน · 18 นาที

    ต่อยอดจาก: จำนวนเต็มถูกเก็บอย่างไร และมันพังตรงไหน

  22. 22

    หลายไฟล์ header และ linker ทำอะไร

    บทเรียน · 18 นาที

    ต่อยอดจาก: เลขทศนิยม: ทำไม 0.1 + 0.2 ถึงไม่เท่ากับ 0.3

  23. 23

    ไลบรารี และการ build โปรเจกต์ให้ทำซ้ำได้

    บทเรียน · 18 นาที

    ต่อยอดจาก: หลายไฟล์ header และ linker ทำอะไร

  24. 24

    อ่านโค้ด C ของจริง และจากตรงนี้ไปไหนต่อ

    ด่านบังคับ · 20 นาที

    ต่อยอดจาก: ไลบรารี และการ build โปรเจกต์ให้ทำซ้ำได้

เริ่มเรียนด้วยบัญชี CYBERSKILLS เมื่อเปิดให้ใช้งาน

บัญชี CYBERSKILLS จะเก็บความก้าวหน้าและผลจากด่านบังคับไว้ด้วยกัน ระหว่างนี้ คุณใช้แผนการเรียนนี้เลือกเส้นทางที่ตรงกับเป้าหมายได้.

ดูตัวอย่างคอร์สทั้งหมด
C และการเขียนโปรแกรมระดับล่าง · CYBERSKILLS Academy