home *** CD-ROM | disk | FTP | other *** search
/ The Elite Hackers Toolkit / TheEliteHackersToolkitVolume1_1998.rar / HACKERS.BIN / appcraks / PC_BH13.ZIP / BYTEH.ASM < prev    next >
Assembly Source File  |  1998-04-10  |  8KB  |  390 lines

  1. ; ByteHunter by Nop & The_Q    -  Use this prog freely
  2. ; __________________________________________________________________________
  3.  
  4.  
  5. Org  100h
  6.  
  7. Start:
  8.   Jmp Main
  9.  
  10.  
  11. text_title db "┌────────────────────────────────────────────────────────────────────────────┐",0ah,0dh
  12.  
  13.  
  14. SBuff       dw 0
  15. MaxOff      dw 0                        ;Maximun offset
  16. COff        dw 0                        ;Current offset
  17. Off         dw 0
  18. FSeg        dw 0
  19. found       db 0
  20. handle      dw 0
  21. Str2Search  dw 0
  22. str2Put     dw 0
  23.  
  24. about   db 0dh                              ;let that and don't be a lamer
  25.         db "┌─────  Phrozen Crew  ─────┐",0dh
  26.         db "│ Byte Hunter by nOP & THE_q │",0dh
  27.         db "└────────────────────────────┘",0dh
  28.  
  29. text_openingA  db ' ■ OPENiNG FiLE : [ $'
  30. text_openingB  db ' ]',0dh,0ah,'$'
  31. text_searching db ' ■ SEARCHiNG PROGRESS: $'
  32. text_patched   db 0Dh,0ah,' ■ PATCHED!',0dh,0ah,'$'
  33. text_closing   db ' ■ CLOSiNG FiLE',0dh,0ah,0dh,0ah,'$'
  34. text_quit      db ' ■ PRESS A KEY TO EXiT',0dh,0ah,'$'
  35. error1         db ' ■ ERROR : FiLE NOT FOUND!',0dh,0ah,'$'
  36. error2         db 0Dh,0ah,' ■ ERROR: BYTES NOT FOUND',0dh,0ah,'$'
  37. point          db '···$'
  38.  
  39.  
  40.  
  41. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  42. ;;;                   M A I N     P R O C E D U R E S                      ;;;
  43. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  44.  
  45. Do_Search:
  46.  
  47.         Mov dx,Maxoff
  48.         mov ax,Coff
  49.         Sub dx,ax
  50.         Mov word ptr FSEG,DX             ;off=Maxoff-Coff
  51.  
  52.         Xor bx,bx
  53.  
  54.         mov si,str2search
  55.         Lodsb
  56.         mov bl,al                      ;bl with Str2search size
  57.  
  58.         mov CX,word ptr SBuff          ;Size of buffer
  59.         Lea di,Buffer
  60.  
  61.         Lodsb                   ;First byte in Str2Search
  62. Loc4:   Repnz Scasb
  63.  
  64.         Cmp cx, 0                        ;Case not found
  65.         jnz Loc3
  66.  
  67. Loc6:   mov bx,[handle]                         ;file handle
  68.  
  69.         mov cx,word ptr FSEG
  70.  
  71.         mov ax,Sbuff
  72.         Cmp ax,7fffh
  73.         jz j2
  74.         mov ax,8001h
  75.         jmp j3
  76.  
  77.     j2: xor ax,ax
  78.         inc cx
  79.  
  80.     j3: mov dx,ax
  81.         mov ax,4200h
  82.         int 21h                         ;restore file position
  83.  
  84.         mov bx,[handle]                 ;file handle
  85.         mov al,[found]                  ; return value
  86.         RET
  87.  
  88. j_gate: Jmp Loc6
  89.  
  90.  
  91. Loc3:
  92.         push ax                         ;Save current location_in_buffer
  93.         push di
  94.         push cx                         ;Save the first byte in str2search
  95.  
  96.         mov cx,bx
  97.         dec cx                          ;skip the first byte,we know it match
  98.  
  99. Loc2:   Lodsb
  100.         cmp al,'?'
  101.         jz Loc7
  102.         Mov ah,[di]
  103.         Cmp ah,al
  104.         jnz Loc1
  105.  
  106. Loc7:   Dec cx
  107.         jz Loc5
  108.         inc di
  109.         jmp Loc2
  110.  
  111.  
  112. Loc5:
  113.         pop cx
  114.         push cx
  115.  
  116.         mov ax,Sbuff
  117.         Cmp ax,7fffh
  118.         jnz j1
  119.         add ax,8001h
  120.  
  121.   j1:   sub ax,cx                       ;Off=Sbuff-CX-BX
  122.                                         ;If Sbuff=0fff then Off:=Off+f000
  123.         dec ax
  124.         Mov word ptr OFF,AX
  125.  
  126.         mov ax,4200h
  127.         mov bx,[handle]                 ;file handle
  128.         mov cx,word ptr FSEG
  129.         mov dx,word ptr OFF
  130.         int 21h                         ;move file loc to replace
  131.  
  132.         xor cx,cx
  133.  
  134.         mov ah,40h
  135.         mov si,Str2Put
  136.         mov cl,byte ptr [si]
  137.         inc si
  138.         mov dx,si
  139.         int 21h                         ;write rep bytes
  140.  
  141.         inc Byte ptr [Found]
  142.  
  143. Loc1:
  144.         mov si,str2search
  145.         add si,2
  146.         pop cx
  147.         pop di
  148.         pop ax
  149.  
  150.         cmp Byte ptr found,1
  151.         jz j_gate
  152.         Jmp Loc4
  153.  
  154.  
  155.  
  156. GoForIt:
  157. ;;;; FUNCTION
  158. ;;;; AX = point to String to search
  159. ;;;; BX = point to String to put
  160. ;;;; DX = FileName
  161.  
  162.         mov Str2search,ax
  163.         mov str2put,bx
  164.         push dx
  165.         mov si,dx
  166.  
  167.         mov ah,9
  168.         lea dx,text_openingA
  169.         int 21h
  170.  
  171.         mov ah,2
  172. Msg1:   lodsb
  173.         cmp al,0
  174.         jz Msg2
  175.         mov dl,al
  176.         int 21h
  177.         jmp Msg1
  178. Msg2:
  179.         mov ah,9
  180.         lea dx,text_openingB
  181.         int 21h
  182.  
  183. ; ■ Open File
  184.         mov ax,3d02h
  185.         pop dx
  186.         int 21h
  187.         jnc noerror1
  188.  
  189. ; ■ ERROR: File not found
  190.          mov ah,9
  191.          lea dx,error1
  192.          int 21h
  193.          jmp _ret
  194.  
  195.  
  196. noerror1:
  197. ; ■ Save handle in [handle] and BX
  198.         mov bx,ax                          
  199.         mov [handle],bx
  200.  
  201. ; ■ Go to last byte of the file
  202.         mov ax,4202h
  203.         xor cx,cx
  204.         xor dx,dx
  205.         int 21h
  206.  
  207. ; ■ Save Values
  208.     push ax            ;file size in dx:ax
  209.         mov MaxOff,dx
  210.         mov COff,dx
  211.  
  212. ; ■ Go to first byte
  213.     mov ah,42h        ;set file position
  214.     mov al,00h
  215.     xor cx,cx
  216.     xor dx,dx
  217.     int 21h
  218.  
  219. ; ■ Display 'Searching'
  220.         mov ah,9
  221.         lea dx,text_searching
  222.         int 21h
  223.  
  224. ; ■ Put Found value to 0
  225.         xor ax,ax
  226.         mov [found],al
  227.  
  228.         cmp word ptr MaxOff , 0
  229.     jz p3
  230.  
  231. p2:
  232. ; ■ Show waiting string
  233.         mov ah,9
  234.         lea dx,point
  235.         int 21h
  236.  
  237. ; ■ Read 0f000h bytes to buffer
  238.         mov ah,3fh
  239.         lea dx,Buffer
  240.         mov cx,8001h
  241.         int 21h
  242.  
  243.         Mov word ptr SBuff,8001h
  244.         Call Do_Search
  245.         cmp al,1
  246.         je bytes_found0
  247.  
  248.         mov ah,3fh
  249.         mov bx,[handle]
  250.         lea dx,Buffer
  251.         mov cx,7fffh
  252.     int 21h
  253.  
  254.         Mov word ptr SBuff,7fffh
  255.         Call Do_Search
  256.         cmp al, 1
  257.         je bytes_found0
  258.  
  259.         mov bx,[handle]
  260.  
  261.         dec Word ptr COff
  262.     jnz p2
  263.  
  264. p3:    pop cx
  265.  
  266.         mov ah,3fh
  267.         lea dx,Buffer
  268.     int 21h
  269.  
  270.         Mov word ptr SBuff,CX
  271.         Call Do_Search
  272.         cmp al,1
  273.         je bytes_found
  274.  
  275.         mov ah,9
  276.         lea dx,error2
  277.         int 21h
  278.         jmp _ret
  279.  
  280.  bytes_found0:
  281.         pop cx   ; to prevent a bug
  282.  
  283.  bytes_found:
  284.         mov ah,9
  285.         lea dx,text_patched
  286.         int 21h
  287.  
  288.  _ret:
  289. ; ■ Close File
  290.        mov ah,9
  291.        lea dx,text_closing
  292.        int 21h
  293.  
  294.        mov ah, 3eh
  295.        mov bx, [handle]
  296.        int 21h
  297.  
  298.   ret
  299.  
  300. ;┌────────────────────────────────────────┐
  301. ;└────────────────────────────────────────┘
  302. Border:
  303.         Push DS
  304.         mov ax,40h
  305.         mov ds,ax
  306.  
  307.         xor cx,cx
  308.         mov CL,byte ptr [51h]
  309.         dec cl
  310.         push cx
  311.  
  312.         Xor dx,dx
  313.         inc dh
  314.         Mov Word ptr [50h],DX
  315.  
  316.         mov ah,2
  317. Bor1:   mov dl,'│'
  318.         int 21h
  319.         mov dl,0Ah
  320.         int 21h
  321.         mov dl,0dh
  322.         int 21h
  323.         loop Bor1
  324.  
  325.         pop cx
  326.         push cx
  327.  
  328.         mov bx,014dh
  329.         Mov Word ptr [50h],bX
  330.  
  331.         mov ah,2
  332. Bor2:   mov dl,'│'
  333.         int 21h
  334.         inc bh
  335.         Mov Word ptr [50h],bX
  336.         loop Bor2
  337.  
  338.         pop cx
  339.         add cx,3
  340.         mov dh,cl
  341.         xor dl,dl
  342.         Mov Word ptr [50h],DX
  343.  
  344.         Pop DS
  345.         Ret
  346.  
  347. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  348. ;;;                      M A I N     P R O G R A M                         ;;;
  349. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  350. Main:
  351.         mov ax,3
  352.         int 10h                 ;ClrScr
  353.  
  354. ; ■ Display text_title
  355.         mov ah,9
  356.         lea dx,text_title
  357.         int 21h
  358.  
  359.         Call Border             ;Put text in Box ..
  360.  
  361. ; ■ ENTER REF HERE:
  362.  
  363.  
  364.  
  365.  
  366.  
  367.  
  368. ; ■ END OF REF
  369.  
  370. exit:
  371. ; ■ End Message
  372.        mov ah,9
  373.        lea dx,text_Quit
  374.        int 21h
  375.  
  376. ; ■ Wait a Key
  377.        xor ax,ax
  378.        int 16h
  379.  
  380. ; ■ Exit
  381.        mov ax,4c00h
  382.        int 21h
  383.  
  384.  
  385. Buffer:                         ;Buffer where Searched Bytes are .
  386.                                 ;Located in heap to save space .
  387.  
  388. Code Ends
  389. End Start
  390.