Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

รหัสทำลายตนเองในC


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