ที่นี่เราจะมาดูวิธีการสร้างโค้ดที่ทำลายตัวเองใน C โค้ดที่ทำลายตัวเองได้นั้นโดยทั่วไปแล้วจะเรียกใช้โค้ด จากนั้นจึงนำไฟล์ที่เรียกใช้งานได้ออกหลังจากดำเนินการแล้ว
งานนี้ง่ายมาก เราจำเป็นต้องได้รับชื่อไฟล์ปฏิบัติการเพื่อลบออก เราสามารถใช้อาร์กิวเมนต์บรรทัดคำสั่ง argv[0] จะเก็บชื่อไฟล์ที่ปฏิบัติการได้ จากนั้นใช้ฟังก์ชัน remove() เราก็สามารถลบออกได้
ในโปรแกรมเราจะเห็นว่ามีการพิมพ์หนึ่งบรรทัดหลังจากการลบไฟล์นั้น ตอนนี้คำถามมาว่าบรรทัดถัดไปทำงานอย่างไรในขณะที่ไฟล์ปัจจุบันไม่มีอยู่
ที่จริงแล้ว รหัสที่แปลงแล้วทั้งหมดจะถูกคัดลอกไปยังหน่วยความจำหลักก่อนดำเนินการ เนื้อหาไฟล์ที่ดำเนินการจะถูกคัดลอก มันไม่ได้ใช้เอง ดังนั้นจากหน่วยความจำหลัก บรรทัดถัดไปจะถูกพิมพ์
ตัวอย่าง
#include<stdio.h>
int main(int c, char *argv[]) {
printf("After completing this, the file will be removed\n");
remove(argv[0]); //remove the argv[0] this is the name of the executable
printf("Removed\n");
return 0;
} ผลลัพธ์
After completing this, the file will be removed Removed