พอดีงานบริษัทมีโปรเจคเขียนโปรแกรมกำลังจะจบโปรเจคแล้ว และเตรียมทำตัวติดตั้ง เตรียมปั๊มซีดี แต่แล้วหลังจากตรวจสอบไฟล์ให้แน่ใจอีกทีก่อนการส่งงาน โอแม่จ้าว ตัวสแกนไวรัสแจ้งว่าโปรแกรมที่ผมเขียนเป็น Trojan เป็นไปได้ไงเนี๊ยะ เขียนเองแท้ๆ จะไปติดมาจากไหนไฟล์เพิ่งสร้าง AVG มันแจ้งว่ามี DLL ของผมตัวหนึ่ง(ซึ่งเขียนขึ้นเอง)เป็นโทรจันชื่อว่า Luhe.MalMSIL.C ง่ะ.... โดนใส่ร้าย
เลยเข้าไปหาข้อมูลชื่อ Luhe.MalMSIL.C มาจากอากู๋ ได้ข้อมูลประมาณนี้
This is a Trojan
File Properties Property Values
McAfee Detection Generic.bfr
Other Common Detection Aliases
Company / Names Detection Names
AVG (GriSoft) Luhe.MalMSIL.C
Kaspersky HEUR:Trojan.Win32.Generic
BitDefender Gen:Heur.MSIL.Krypt.4
F-Prot W32/MSIL_Troj.L.gen!Eldorado
Symantec Suspicious.Cloud.2
Eset MSIL/Autorun.Agent.BF worm (probably variant)
panda Suspicious
Sophos Mal/MSIL-BF
******************************************
เออ เอากับเขาสิ ด้วยความเคืองที่งานจะเสร็จก็ไม่เสร็จ เลยไล่หาทีละฟังชั่นเลยว่ามันติดที่ฟังชั่นไหน ทำไมจึงคิดว่า DLL ที่เราเขียนเป็นโทรจัน โดยการไล่ คอมเม้นท์ ทีละฟังก์ชั่น แล้วทำการคอมไพล์ แล้วก็สแกนไวรัสใหม่ไปเรื่อยๆ จนในที่สุดก็มาเจออยู่ฟังก์ชั่นหนึ่ง ซึ่งเขียนไว้สำหรับเรียกโปรแกรมเพื่อเปิดไฟล์ตามชนิดของนามสกุล ซึ่งต้องเข้าถึง RegistryKey ของ Windows
เช่น ไฟล์ txt ก็จะสั่งให้ไปอ่านใน Registry Key ว่าใช้โปรแกรมใดในการเปิด (notepad wordpad editplus note++ ฯลฯ)
ในคำสั่งจะมีการอ้างถึง key ที่เก็บรายชื่อโปรแกรมสำหรับเปิดแฟ้มต่างๆ ดูภาพปลากรอบ

พอคอมไพล์ไปใช้ปุ๊บก็โดนกล่าวหาว่าเป็นโทรจันปั๊บเลยทีเดียวเชียว ดูการตีไข่ใส่สี...แถมลบ DLL เราออกจากเครื่องอีกต่างหาก... ^_^'
วิธีแก้ไข *************************
ผมคิดไว้สองวิธีคือ 1. เข้ารหัส Registry Path ซะเลย 2. สลับข้อความ Path ไม่ให้อยู่ในแพทเทิร์นที่โปรแกรมสแกนไวรัสรู้จัก
เลยลองแก้โค้ดแบบเอา Registry Path แต่ละตัวไปใส่ไว้ในอะเรย์ก่อน แล้วค่อยเอามาต่อกัน ผลปรากฏว่า ผ่านฉลุยเลยครับ
สแกนไวรัสใหม่อีกทีคราวนี้มันบอกว่า สะอาดปลอดภัย 555+ โปรแกรมทำงานเหมือนกันแท้ๆ อีกอันบอกโทรจันอีกอันบอกปลอดภัย
ดูภาพปลากรอบหลังจากแก้ไข
ผลการสแกนไวรัส
ที่ผมเอามาบอกเพราะว่าไม่อยากให้เพื่อนๆไปเสียเวลาคิดว่าไฟล์เราติดไวรัส รู้แล้วก็มาบอกๆต่อ จะได้ทำงานไวขึ้น ผมเข้าใจหัวอกโปรแกรมเมอร์ครับ
ปอลิง ถ้าต่อไปในอนาคตใช้วิธีนี้แล้วมันยังสแกนใส่ความว่าเป็นโทรจันอีก คราวนี้ก็เข้ารหัส registry path ซะเลยสิ้นเรื่องเวลาจะใช้ก็ถอดรหัสแล้วเอามาใส่ตัวแปรไว้ครับ
สวัสดีครับ
เขาหาว่าหนูเป็น Trojan ให้ตายเหอะโรบิน T.T' !!!!!!!!
เลยเข้าไปหาข้อมูลชื่อ Luhe.MalMSIL.C มาจากอากู๋ ได้ข้อมูลประมาณนี้
This is a Trojan
File Properties Property Values
McAfee Detection Generic.bfr
Other Common Detection Aliases
Company / Names Detection Names
AVG (GriSoft) Luhe.MalMSIL.C
Kaspersky HEUR:Trojan.Win32.Generic
BitDefender Gen:Heur.MSIL.Krypt.4
F-Prot W32/MSIL_Troj.L.gen!Eldorado
Symantec Suspicious.Cloud.2
Eset MSIL/Autorun.Agent.BF worm (probably variant)
panda Suspicious
Sophos Mal/MSIL-BF
******************************************
เออ เอากับเขาสิ ด้วยความเคืองที่งานจะเสร็จก็ไม่เสร็จ เลยไล่หาทีละฟังชั่นเลยว่ามันติดที่ฟังชั่นไหน ทำไมจึงคิดว่า DLL ที่เราเขียนเป็นโทรจัน โดยการไล่ คอมเม้นท์ ทีละฟังก์ชั่น แล้วทำการคอมไพล์ แล้วก็สแกนไวรัสใหม่ไปเรื่อยๆ จนในที่สุดก็มาเจออยู่ฟังก์ชั่นหนึ่ง ซึ่งเขียนไว้สำหรับเรียกโปรแกรมเพื่อเปิดไฟล์ตามชนิดของนามสกุล ซึ่งต้องเข้าถึง RegistryKey ของ Windows
เช่น ไฟล์ txt ก็จะสั่งให้ไปอ่านใน Registry Key ว่าใช้โปรแกรมใดในการเปิด (notepad wordpad editplus note++ ฯลฯ)
ในคำสั่งจะมีการอ้างถึง key ที่เก็บรายชื่อโปรแกรมสำหรับเปิดแฟ้มต่างๆ ดูภาพปลากรอบ
พอคอมไพล์ไปใช้ปุ๊บก็โดนกล่าวหาว่าเป็นโทรจันปั๊บเลยทีเดียวเชียว ดูการตีไข่ใส่สี...แถมลบ DLL เราออกจากเครื่องอีกต่างหาก... ^_^'
วิธีแก้ไข *************************
ผมคิดไว้สองวิธีคือ 1. เข้ารหัส Registry Path ซะเลย 2. สลับข้อความ Path ไม่ให้อยู่ในแพทเทิร์นที่โปรแกรมสแกนไวรัสรู้จัก
เลยลองแก้โค้ดแบบเอา Registry Path แต่ละตัวไปใส่ไว้ในอะเรย์ก่อน แล้วค่อยเอามาต่อกัน ผลปรากฏว่า ผ่านฉลุยเลยครับ
สแกนไวรัสใหม่อีกทีคราวนี้มันบอกว่า สะอาดปลอดภัย 555+ โปรแกรมทำงานเหมือนกันแท้ๆ อีกอันบอกโทรจันอีกอันบอกปลอดภัย
ดูภาพปลากรอบหลังจากแก้ไข
ผลการสแกนไวรัส
ที่ผมเอามาบอกเพราะว่าไม่อยากให้เพื่อนๆไปเสียเวลาคิดว่าไฟล์เราติดไวรัส รู้แล้วก็มาบอกๆต่อ จะได้ทำงานไวขึ้น ผมเข้าใจหัวอกโปรแกรมเมอร์ครับ
ปอลิง ถ้าต่อไปในอนาคตใช้วิธีนี้แล้วมันยังสแกนใส่ความว่าเป็นโทรจันอีก คราวนี้ก็เข้ารหัส registry path ซะเลยสิ้นเรื่องเวลาจะใช้ก็ถอดรหัสแล้วเอามาใส่ตัวแปรไว้ครับ
สวัสดีครับ