ฉันต้องการเขียนโปรแกรมที่สามารถปรับเปลี่ยนส่วนโค้ดของตัวเองได้ ตัวอย่างเช่นพิจารณารหัสแอสเซมบลีนี้:
รหัสดั้งเดิม:
i1: mov eax,0
i2: mov eax,0X01
โค้ดผลลัพธ์ที่ฉันต้องการสร้างขณะรันไทม์ด้วยโค้ดเดียวกัน:
i1: mov eax,0
i": // some modifing instructions that when are excuted they change the i2 and/or add or remove some instruction such i3
i2: jmp 0x32
i3: mov ebx,0x67
คุณเห็นว่า i2
มีการเปลี่ยนแปลงหลังจากดำเนินการตามคำสั่ง i"
i"
จำเป็นต้องแก้ไขคำแนะนำในการส่งต่อโค้ด
ตอนนี้คำถามของฉันคือ:
- จะแก้ไขส่วนของโค้ดได้อย่างไร? หรือจะระบุพื้นที่หน่วยความจำส่วนของรหัสได้อย่างไร?
- เราอนุญาตให้แก้ไขจากส่วนโค้ดเดียวกันได้หรือไม่ (ไม่ใช่โปรแกรมอื่นที่ไม่สามารถเข้าถึงได้)
- เราจะแก้ไขปัญหาที่เกิดจากการเปลี่ยนแปลงขนาดส่วนของโค้ดได้อย่างไร
- ปัญหาสุดท้ายอาจเป็นแอนตี้ไวรัส! โดยจะตรวจสอบพฤติกรรมของโปรแกรมขณะรันไทม์และมีความไวต่อการปรับเปลี่ยนตัวเอง
ขอบคุณเพื่อนของฉัน