ที่นี่เราจะมาดูวิธีการสร้างโค้ดที่ทำลายตัวเองใน 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