- พอ Explorer แครชเพิ่มขึ้นอย่างรวดเร็ว จึงไล่หาสาเหตุแล้วพบฟังก์ชันพอยน์เตอร์ในสแตกที่คล้ายกับมัลแวร์
- พอขุดดูแล้วพบว่าไม่ใช่มัลแวร์ แต่เป็นตัวถอนการติดตั้ง
- หลังจากตัวถอนการติดตั้งทำงานเสร็จ มันจะรอเพื่อลบไบนารีของตัวเอง (Self Deleting)
- โค้ดนี้ใช้วิธีที่เคยถูกแนะนำใน CodeProject เมื่อ 10 ปีก่อน
- น่าจะเป็นกรณีที่ต้องเรียกใช้ฟังก์ชันของ DLL บางตัว แต่เกิดการอ้อมเส้นทาง (Detour) เลยทำให้เกิดปัญหานี้
- ถ้าจะลบตัวเอง อย่าใช้การฉีดโค้ดหรือทำ detour เข้าไปในโปรเซสอื่น (Explorer) แบบนี้ แต่ให้ใช้ไฟล์ชั่วคราวอย่าง
cleanup.js ตามตัวอย่างด้านล่าง
- โค้ดนี้ลบตัวมันเอง และยังพยายามลบ uninstaller ต่ออีก 20 วินาที
var fso = new ActiveXObject("Scripting.FileSystemObject");
fso.DeleteFile("C:\\Users\\Name\\AppData\\Local\\Temp\\cleanup.js");
var path = "C:\\Program Files\\Contoso\\contoso_update.exe";
for (var count = 0; fso.FileExists(path) && count < 40; count++) {
try { fso.DeleteFile(path); break; } catch (e) { }
WSH.Sleep(500);
}
5 ความคิดเห็น
จำได้ว่าเมื่อก่อนเคยใช้โปรแกรมลบไฟล์ตกค้างอยู่เหมือนกัน...
แต่ทุกวันนี้ Windows เองก็มีโปรแกรมจัดการแพ็กเกจที่ค่อย ๆ พัฒนาขึ้นเรื่อย ๆ เลยกำลังคาดหวังอยู่ครับ +_+
ดูเหมือนว่าจะใช้คำว่า 'อย่างสูง' บ่อยมากนะครับ วิทยาศาสตร์ที่พัฒนาอย่างสูงย่อมไม่อาจแยกออกจากเวทมนตร์ได้
ชื่อบทความมาจากคำกล่าวของเซอร์ อาร์เธอร์ ซี. คลาร์ก นักเขียนนิยายวิทยาศาสตร์ชื่อดัง
ความคิดเห็นจาก Hacker News