mirror of
https://github.com/vxunderground/MalwareSourceCode.git
synced 2026-06-16 15:59:24 +00:00
re-organize
push
This commit is contained in:
@@ -0,0 +1,296 @@
|
||||
;*************************************************************
|
||||
;** Terminate-but-Stay-Resident **
|
||||
;** Original from the "Programmer's Journal" **
|
||||
;** Modified by Alroger L. Gomes Jr. **
|
||||
;** Any comments/question send message for "Roger Gomes" **
|
||||
;** on the PDSE BBS (408)735-7190. Have Fun! **
|
||||
;*************************************************************
|
||||
; Insert you program on line # 157.
|
||||
|
||||
Delay_Count Equ 36 ;36 ticks=approx. 2 seconds
|
||||
|
||||
; Locations of BIOS Data needed by the resident program
|
||||
|
||||
Bios_Data Segment at 40h
|
||||
Org 17h
|
||||
Kbd_Status dw ?
|
||||
Org 6Ch
|
||||
Low_Timer dw ?
|
||||
Bios_Data EndS
|
||||
|
||||
|
||||
Code Segment
|
||||
Assume Cs:Code, Ds:Code, Es:Nothing, Ss:Nothing
|
||||
Org 100h
|
||||
Entry_Point:
|
||||
Jmp Install
|
||||
|
||||
Hot_Keys dw 01010B
|
||||
This_Time dw ?
|
||||
Trig_Time dw ?
|
||||
Dos_Busy Label dword
|
||||
Dos_Busy_Off dw ?
|
||||
Dos_Busy_Seg dw ?
|
||||
Criterr_Flag db ?
|
||||
|
||||
Already8 db 0
|
||||
MenuON db 0
|
||||
|
||||
|
||||
;*** Replacement for Int 24h - critical Dos Error ***
|
||||
Diverted_Int24:
|
||||
Mov Cs:Criterr_Flag,1
|
||||
Xor Al,Al
|
||||
Iret
|
||||
|
||||
Int_24_Vect Label dword
|
||||
Int_24_Off dw ?
|
||||
Int_24_Seg dw ?
|
||||
|
||||
;***** ID CODE *****
|
||||
Res_ID1 dw 'Al'
|
||||
Res_ID2 dw 'ro'
|
||||
Res_ID3 dw 'ge'
|
||||
;*******************
|
||||
|
||||
;*** Replacement for Int 8 - Timer hardware Interrupt ***
|
||||
Diverted_Int8:
|
||||
Pushf
|
||||
Call_Int8 db 09Ah
|
||||
Int_8_Vect Label dword
|
||||
Int_8_Off dw ?
|
||||
Int_8_Seg dw ?
|
||||
|
||||
Cmp Cs:MenuOn,0
|
||||
Je MenuNOT
|
||||
Iret
|
||||
MenuNOT:
|
||||
Mov Cs:MenuOn,1
|
||||
Push Ds
|
||||
Push Bx
|
||||
Lds Bx,Cs:Dos_Busy
|
||||
Cmp Byte Ptr [Bx],0
|
||||
Pop Bx
|
||||
Pop Ds
|
||||
Mov Cs:MenuOn,0
|
||||
Jz Get_Bios_Data
|
||||
Dos_is_Busy:
|
||||
Iret
|
||||
|
||||
;*** Replacement for Int 28 - Generated by Dos, esp. during keyboard I/O ***
|
||||
Diverted_Int28:
|
||||
Pushf
|
||||
Call_Int28 db 09Ah
|
||||
Int_28_Vec Label dword
|
||||
Int_28_Off dw ?
|
||||
Int_28_Seg dw ?
|
||||
Cmp Cs:MenuOn,0
|
||||
Je Get_Bios_Data
|
||||
Iret
|
||||
|
||||
Get_Bios_Data:
|
||||
Mov Cs:MenuOn,1
|
||||
Sti
|
||||
Push Ds
|
||||
Push Ax
|
||||
Mov Ax,Bios_Data
|
||||
Mov Ds,Ax
|
||||
Assume Ds:Bios_Data
|
||||
Mov Ax,Low_Timer
|
||||
Mov Cs:This_time,Ax
|
||||
Mov Ax,Kbd_Status
|
||||
Push Cs
|
||||
Pop Ds
|
||||
Assume Ds:Code
|
||||
Chk_Keys:
|
||||
And Ax,Hot_Keys
|
||||
Cmp Ax,Hot_Keys
|
||||
Jne Back_to_Applic
|
||||
Chk_Timer:
|
||||
Mov Ax,This_Time
|
||||
Cmp Ax,Trig_Time
|
||||
Jb Time_is_Right
|
||||
Sub Ax,Trig_Time
|
||||
Sub Ax,Delay_Count
|
||||
Jnc Time_is_Right
|
||||
|
||||
Back_to_Applic:
|
||||
Pop Ax
|
||||
Pop Ds
|
||||
Mov Cs:MenuOn,0
|
||||
Iret
|
||||
|
||||
Time_is_Right:
|
||||
Mov Ax,This_Time
|
||||
Mov Trig_Time,Ax
|
||||
Pop Ax
|
||||
Pop Ds
|
||||
|
||||
;***************************************************************************
|
||||
; This is the Start of the application-dependent resident code
|
||||
|
||||
Start_Program:
|
||||
Mov Cs:MenuOn,1
|
||||
Push Ax
|
||||
Push Bx
|
||||
Push Cx
|
||||
Push Dx
|
||||
Push Si
|
||||
Push Di
|
||||
Push Bp
|
||||
Push Ds
|
||||
Push Es
|
||||
|
||||
Push Cs
|
||||
Pop Ds
|
||||
|
||||
Mov Ax,3524h
|
||||
Int 21h
|
||||
Mov Int_24_Off,Bx
|
||||
Mov Int_24_Seg,Es
|
||||
Mov Ax,2524h
|
||||
Mov Dx,Offset Diverted_Int24
|
||||
Int 21h
|
||||
|
||||
;****************************************************************************
|
||||
|
||||
; Insert your program here.
|
||||
|
||||
;****************************************************************************
|
||||
|
||||
Restore_Int24:
|
||||
Lds Dx,Int_24_Vect
|
||||
Mov Ax,2524h
|
||||
Int 21h
|
||||
Pop Es
|
||||
Pop Ds
|
||||
Pop Bp
|
||||
Pop Di
|
||||
Pop Si
|
||||
Pop Dx
|
||||
Pop Cx
|
||||
Pop Bx
|
||||
Pop Ax
|
||||
Mov Cs:MenuOn,0
|
||||
Mov Cs:Already8,0
|
||||
Iret
|
||||
|
||||
; This is the end off the applicant-dependent resident code
|
||||
|
||||
End_of_Res Label word
|
||||
|
||||
;***************************************************************************
|
||||
; Installation
|
||||
|
||||
Install:
|
||||
Mov Ax,Cs
|
||||
Mov Ds,Ax
|
||||
Mov Es,Ax
|
||||
|
||||
Mov Ah,9
|
||||
Mov Dx,OffSet CopyRight
|
||||
Int 21h
|
||||
|
||||
; Make sure that it is at least Dos 2.00
|
||||
Mov Ah,30h
|
||||
Int 21h
|
||||
Or Al,Al
|
||||
Jnz Chk_Vectors
|
||||
Mov Dx,Offset BadDos_Msg
|
||||
Mov Ah,9
|
||||
Int 21h
|
||||
Int 20h
|
||||
|
||||
; See if resident code is already Installed in Memory
|
||||
|
||||
Chk_Vectors:
|
||||
Mov Ax,Cs
|
||||
Mov Ds,Ax
|
||||
Mov Es,Ax
|
||||
|
||||
Mov Ax,3508h
|
||||
Int 21h
|
||||
Cmp Word Ptr [Es:Bx-6],'Al'
|
||||
Jne Not_Installed1
|
||||
Cmp Word Ptr [Es:Bx-4],'ro'
|
||||
Jne Not_Installed1
|
||||
Cmp Word Ptr [Es:Bx-2],'ge'
|
||||
Jne Not_Installed1
|
||||
|
||||
Mov Dx,Offset No_Install_Msg
|
||||
Mov Ah,9
|
||||
Int 21h
|
||||
Mov Ax,4C01h
|
||||
Int 21h
|
||||
|
||||
Not_Installed1:
|
||||
Mov Ax,3577h
|
||||
Int 21h
|
||||
Mov Ax,Es
|
||||
Cmp Ax,'Al'
|
||||
Jne Not_Installed
|
||||
Cmp Bx,'ro'
|
||||
Jne Not_Installed
|
||||
|
||||
Mov Dx,Offset No_Install_Msg
|
||||
Mov Ah,9
|
||||
Int 21h
|
||||
Mov Ax,4C01h
|
||||
Int 21h
|
||||
|
||||
Not_Installed:
|
||||
Mov Ax,Cs
|
||||
Mov Ds,Ax
|
||||
Mov Es,Ax
|
||||
|
||||
Push Es
|
||||
Mov Ax,Cs
|
||||
Mov Ds,Ax
|
||||
Mov Es,Ax
|
||||
|
||||
Mov Ah,34h
|
||||
Int 21h
|
||||
Mov Dos_Busy_Off,Bx
|
||||
Mov Dos_Busy_Seg,Es
|
||||
|
||||
Mov Ax,3508h
|
||||
Int 21h
|
||||
Mov Int_8_Off,Bx
|
||||
Mov Int_8_Seg,Es
|
||||
|
||||
Mov Ax,Cs
|
||||
Mov Es,Ax
|
||||
Mov Ds,Ax
|
||||
|
||||
Mov Ax,2508h
|
||||
Mov Dx,Offset Diverted_Int8
|
||||
Int 21h
|
||||
|
||||
Mov Ax,'Al'
|
||||
Mov Ds,Ax
|
||||
Mov Dx,'ro'
|
||||
Mov Ax,2577h
|
||||
Int 21h
|
||||
Mov Ax,Cs
|
||||
Mov Ds,Ax
|
||||
|
||||
Mov Ax,3528h
|
||||
Int 21h
|
||||
Mov Int_28_Off,Bx
|
||||
Mov Int_28_Seg,Es
|
||||
Mov Ax,2528h
|
||||
Mov Dx,Offset Diverted_Int28
|
||||
Int 21h
|
||||
Pop Es
|
||||
|
||||
; Terminate and stay resident
|
||||
Mov Dx,Offset Install
|
||||
Int 27h
|
||||
|
||||
No_Install_Msg db 'xxxx is already in memory!',10,13,10,13,'$'
|
||||
BadDos_Msg db 'DOS 2.0 or greater needed!',10,13,10,13,'$'
|
||||
CopyRight db 'xxxx by ?????? - yyyy $'
|
||||
|
||||
Code EndS
|
||||
End Entry_Point
|
||||
|
||||
Reference in New Issue
Block a user