C และการเขียนโปรแกรมระดับล่าง
เรียนรู้ว่าโค้ดของคุณทำอะไรกับหน่วยความจำจริงๆ — ชั้นที่ภาษาระดับสูงทุกภาษายืนอยู่บนมัน และเป็นชั้นที่ผู้โจมตีทำงานอยู่
สำหรับโปรแกรมเมอร์ที่อ่านโค้ดง่ายๆ ในภาษาไหนก็ได้ แต่ไม่เคยต้องคิดเรื่องหน่วยความจำ pointer หรือสิ่งที่คอมไพเลอร์กำลังทำ ไม่ต้องมีพื้นฐาน C มาก่อน — คอร์สนี้สอนภาษาตั้งแต่ต้น คอร์สนี้สมมติว่าคุณมีเชลล์แบบยูนิกซ์ที่ใช้งานได้ และตั้งแต่คอร์ส C เป็นต้นไปสมมติว่ามีคอมไพเลอร์ C กับ make ด้วย ถ้ายังไม่มี — หรือไม่เคยเปิดเทอร์มินัลมาก่อน — คอร์ส "ตั้งต้นให้พร้อม" ติดตั้งและยืนยันทั้งหมดนั้นให้ก่อน และเนื้อหาตรงนี้ไม่ได้เล่าซ้ำ
ตัวอย่างโครงสร้างคอร์ส
เมื่อจบคอร์ส คุณจะทำอะไรได้บ้าง
- อธิบายได้ว่าเกิดอะไรขึ้นระหว่างไฟล์ source ของคุณกับโปรแกรมที่กำลังทำงาน
- เขียน C ที่จัดการหน่วยความจำอย่างตั้งใจ แทนการทำแล้วหวังว่าจะรอด
- อ่านและคิดตามเรื่อง pointer ได้ รวมถึงกรณีที่ทำคนสับสน
- รู้จักบั๊กหน่วยความจำที่อยู่เบื้องหลังช่องโหว่จริงจำนวนมาก และหามันเจอด้วยเครื่องมือ
- ทำงานกับบิต การแทนค่าจำนวนเต็ม และเลขทศนิยมได้โดยไม่ต้องเดา
- สร้างโปรเจกต์หลายไฟล์ได้ และอธิบายได้ว่า linker ทำอะไรไป
ก่อนเริ่มเรียน
แผนการเรียน
ภาษาไทยพร้อมสำหรับทุกขั้นการเรียน.
นี่คือเส้นทางการเรียนทั้งหมด แต่ละบทต่อยอดจากบทก่อนหน้า และด่านบังคับคือจุดที่คุณได้แสดงสิ่งที่ทำได้จริง.
- 01
ทำไม C ยังคุ้มที่จะเรียน
บทเรียน · 14 นาที
- 02
จากไฟล์ source สู่โปรแกรมที่ทำงานได้
บทเรียน · 16 นาที
ต่อยอดจาก: ทำไม C ยังคุ้มที่จะเรียน
- 03
โปรแกรม C ตัวแรกของคุณ
บทเรียน · 18 นาที
ต่อยอดจาก: จากไฟล์ source สู่โปรแกรมที่ทำงานได้
- 04
undefined behaviour: เมื่อ C เลิกสัญญา
บทเรียน · 16 นาที
ต่อยอดจาก: โปรแกรม C ตัวแรกของคุณ
- 05
ชนิดข้อมูล การแปลงค่า และตัวดำเนินการที่ทำคนแปลกใจ
บทเรียน · 18 นาที
ต่อยอดจาก: undefined behaviour: เมื่อ C เลิกสัญญา
- 06
การควบคุมการไหลและกับดักในนั้น
บทเรียน · 16 นาที
ต่อยอดจาก: ชนิดข้อมูล การแปลงค่า และตัวดำเนินการที่ทำคนแปลกใจ
- 07
ฟังก์ชัน argument และอายุของตัวแปร
บทเรียน · 18 นาที
ต่อยอดจาก: การควบคุมการไหลและกับดักในนั้น
- 08
array และ string: ที่ที่บั๊กอาศัยอยู่
ด่านบังคับ · 20 นาที
ต่อยอดจาก: ฟังก์ชัน argument และอายุของตัวแปร
- 09
struct: การจัดกลุ่มข้อมูล และสิ่งที่คอมไพเลอร์แถมมาให้
บทเรียน · 18 นาที
ต่อยอดจาก: array และ string: ที่ที่บั๊กอาศัยอยู่
- 10
pointer: ตัวแปรที่เก็บที่อยู่
บทเรียน · 20 นาที
ต่อยอดจาก: struct: การจัดกลุ่มข้อมูล และสิ่งที่คอมไพเลอร์แถมมาให้
- 11
เลขคณิตของ pointer และ array ทำงานอย่างไรจริงๆ
บทเรียน · 18 นาที
ต่อยอดจาก: pointer: ตัวแปรที่เก็บที่อยู่
- 12
stack กับ heap
บทเรียน · 18 นาที
ต่อยอดจาก: เลขคณิตของ pointer และ array ทำงานอย่างไรจริงๆ
- 13
การจองและการคืนหน่วยความจำ
ด่านบังคับ · 22 นาที
ต่อยอดจาก: stack กับ heap
- 14
function pointer: การส่งพฤติกรรมไปมา
บทเรียน · 18 นาที
ต่อยอดจาก: การจองและการคืนหน่วยความจำ
- 15
อ่านอาการ: นี่คือบั๊กหน่วยความจำแบบไหน
บทเรียน · 18 นาที
ต่อยอดจาก: function pointer: การส่งพฤติกรรมไปมา
- 16
เครื่องมือที่หาบั๊กหน่วยความจำให้คุณ
บทเรียน · 18 นาที
ต่อยอดจาก: อ่านอาการ: นี่คือบั๊กหน่วยความจำแบบไหน
- 17
เขียน C ให้ทนต่อความผิดพลาด
ด่านบังคับ · 20 นาที
ต่อยอดจาก: เครื่องมือที่หาบั๊กหน่วยความจำให้คุณ
- 18
จำนวนเต็มถูกเก็บอย่างไร และมันพังตรงไหน
บทเรียน · 18 นาที
ต่อยอดจาก: เขียน C ให้ทนต่อความผิดพลาด
- 19
การทำงานกับบิตทีละตัว
บทเรียน · 18 นาที
ต่อยอดจาก: จำนวนเต็มถูกเก็บอย่างไร และมันพังตรงไหน
- 20
ลำดับไบต์ และข้อมูลที่ข้ามขอบเขตออกไป
บทเรียน · 18 นาที
ต่อยอดจาก: จำนวนเต็มถูกเก็บอย่างไร และมันพังตรงไหน
- 21
เลขทศนิยม: ทำไม 0.1 + 0.2 ถึงไม่เท่ากับ 0.3
บทเรียน · 18 นาที
ต่อยอดจาก: จำนวนเต็มถูกเก็บอย่างไร และมันพังตรงไหน
- 22
หลายไฟล์ header และ linker ทำอะไร
บทเรียน · 18 นาที
ต่อยอดจาก: เลขทศนิยม: ทำไม 0.1 + 0.2 ถึงไม่เท่ากับ 0.3
- 23
ไลบรารี และการ build โปรเจกต์ให้ทำซ้ำได้
บทเรียน · 18 นาที
ต่อยอดจาก: หลายไฟล์ header และ linker ทำอะไร
- 24
อ่านโค้ด C ของจริง และจากตรงนี้ไปไหนต่อ
ด่านบังคับ · 20 นาที
ต่อยอดจาก: ไลบรารี และการ build โปรเจกต์ให้ทำซ้ำได้
เริ่มเรียนด้วยบัญชี CYBERSKILLS เมื่อเปิดให้ใช้งาน
บัญชี CYBERSKILLS จะเก็บความก้าวหน้าและผลจากด่านบังคับไว้ด้วยกัน ระหว่างนี้ คุณใช้แผนการเรียนนี้เลือกเส้นทางที่ตรงกับเป้าหมายได้.
ดูตัวอย่างคอร์สทั้งหมด