⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 int386.asm

📁 usb加密狗复制小工具 ┆加密狗信息复制工具
💻 ASM
📖 第 1 页 / 共 4 页
字号:
                MOV     AL,[RTABLE-1+ECX]
                CALL32F SEL_CODE32,OUCH
                MOV     AL,'S'
                CALL32F SEL_CODE32,OUCH
                MOV     AL,'='
                CALL32F SEL_CODE32,OUCH
                POP     EAX
                CALL32F SEL_CODE32,HEXOUT2
                PUSH    ECX
                MOV     ECX,6
LSP1:           MOV     AL,' '
                CALL32F SEL_CODE32,OUCH
                LOOP    LSP1
                POP     ECX
                LOOP    INTL1
                CALL32F SEL_CODE32,CRLF
                XOR     ECX,ECX
INTL2:          CMP     CL,5
                JNZ     SHORT NOCRINT
                CALL32F SEL_CODE32,CRLF
NOCRINT:
                MOV     AL,'E'
                CALL32F SEL_CODE32,OUCH
                MOV     AL,[GTABLE+ECX*2]
                CALL32F SEL_CODE32,OUCH
                MOV     AL,[GTABLE+1+ECX*2]
                CALL32F SEL_CODE32,OUCH
                MOV     AL,'='
                CALL32F SEL_CODE32,OUCH
                POP     EAX
                CALL32F SEL_CODE32,HEXOUT4
                MOV     AL,' '
                CALL32F SEL_CODE32,OUCH
                INC     CL
                CMP     CL,8
                JNE     SHORT INTL2
                MOV     EBX,OFFSET MESSAGEA
                CALL32F SEL_CODE32,MESSOUT
                POP     EAX
                CALL32F SEL_CODE32,HEXOUT
                MOV     EBX,OFFSET TASKM
                CALL32F SEL_CODE32,MESSOUT
                STR     AX
                CALL32F SEL_CODE32,HEXOUT2
                CALL32F SEL_CODE32,CRLF
;stack dump
                MOV     AX,SS
                MOVZX   EAX,AX
                LSL     EDX,EAX
                JNZ     SHORT INTABT
                MOV     EBX,OFFSET STKM
                CALL32F SEL_CODE32,MESSOUT
                XOR     CL,CL
                MOV     SI,64
INTL3:          CMP     ESP,EDX
                JAE     SHORT INTABT
                DEC     SI
                JZ      SHORT INTABT
                TEST    CL,7
                JNZ     SHORT NOSCR
                CALL32F SEL_CODE32,CRLF
NOSCR:
                POP     EAX
                CALL32F SEL_CODE32,HEXOUT4
                INC     CL
                MOV     AL,' '
                CALL32F SEL_CODE32,OUCH
                JMP     SHORT INTL3
INTABT:
;check for memory dump request
                MOV     AX,SEL_DATA
                MOV     DS,AX
                ASSUME  DS:DAT32
                MOV     AX,WORD PTR DUMP_SEG
                OR      AX,AX
                JZ      SHORT NOMEMDUMP
;come here to do memory dump
                CALL32F SEL_CODE32,CRLF
                PUSH    DS
                PUSH    CS
                POP     DS
                MOV     EBX,OFFSET MEMMESS
                CALL32F SEL_CODE32,MESSOUT
                CALL32F SEL_CODE32,CRLF
                POP     DS
                MOV     AX,WORD PTR DUMP_SEG
                MOV     ES,AX
                CALL32F SEL_CODE32,HEXOUT2
                MOV     AL,':'
                CALL32F SEL_CODE32,OUCH
                MOV     EDX,DUMP_OFF
                MOV     EAX,EDX
                CALL32F SEL_CODE32,HEXOUT4
                MOV     ECX,DUMP_CNT
DUMPLOOP:
                MOV     AL,' '
                CALL32F SEL_CODE32,OUCH
                MOV     EAX,ES:[EDX]    ;get word
                CALL32F SEL_CODE32,HEXOUT4
                ADD     EDX,4
                SUB     ECX,4
                JA      SHORT DUMPLOOP
                CALL32F SEL_CODE32,CRLF
NOMEMDUMP:
                MOV     AL,20H          ;Send EOI signal
                CMP     _PC386,0
                JNZ     SHORT NOTANAT2
                OUT     0A0H,AL
NOTANAT2:
                OUT     20H,AL          ;just in case hardware did it
                MOV     AL,7FH          ;return 7f to dos
                BACK2DOS
;*****************************************************************************
;* Here emulation input a data from a port                                   *
;*****************************************************************************

CHECKINPORT     PROC    FAR
                PUSH    EBX
                PUSH    ECX
                PUSH    EDX
                PUSH    ESI
                PUSH    EDI

                MOV     BYTE PTR GS:_CURTYPE,AL
                MOV     WORD PTR GS:_CURPORT,DX
                MOV     ESI,GS:CURBLOCKADDR
                MOV     EDI,ESI
                MOV     EBX,GS:BYTESCOUNTER
CMPINPORT:
                MOV     AL,BYTE PTR GS:_CURTYPE
                CMP     AL,BYTE PTR ES:[ESI+EBX+4]        ;DATA TYPE
                JNZ     INSEARCHNEXTBLOCK
                MOV     DX,WORD PTR GS:_CURPORT
                CMP     DX,WORD PTR ES:[ESI+EBX+5]        ;PORT NO
                JNZ     INSEARCHNEXTBLOCK
                MOV     GS:CURBLOCKADDR,ESI
                MOV     GS:BYTESCOUNTER,EBX
                CMP     AL,0
                JZ      INBYTE
                CMP     AL,1
                JZ      INWORD
                CMP     AL,2
                JZ      INDWORD
                MOV     AL,GS:_CURTYPE
                POP     EDI
                POP     ESI
                POP     EDX
                POP     ECX
                POP     EBX
                STC
                RETF
INBYTE:
                MOV     EAX,GS:BYTESCOUNTER
                ADD     EAX,4
                CMP     EAX,ES:[ESI]
                JB      INNOTCIRCLE1
                MOV     EAX,0
INNOTCIRCLE1:
                MOV     GS:BYTESCOUNTER,EAX
                MOV     AL,BYTE PTR ES:[ESI+EBX+7]
                POP     EDI
                POP     ESI
                POP     EDX
                POP     ECX
                POP     EBX
                CLC
                RETF
INWORD:
                MOV     EAX,GS:BYTESCOUNTER
                ADD     EAX,5
                CMP     EAX,ES:[ESI]
                JB      INNOTCIRCLE2
                MOV     EAX,0
INNOTCIRCLE2:
                MOV     GS:BYTESCOUNTER,EAX
                MOV     AX,WORD PTR ES:[ESI+EBX+7]
                POP     EDI
                POP     ESI
                POP     EDX
                POP     ECX
                POP     EBX
                CLC
                RETF
INDWORD:
                MOV     EAX,GS:BYTESCOUNTER
                ADD     EAX,7
                CMP     EAX,ES:[ESI]
                JB      INNOTCIRCLE3
                MOV     EAX,0
INNOTCIRCLE3:
                MOV     GS:BYTESCOUNTER,EAX
                MOV     EAX,DWORD PTR ES:[ESI+EBX+7]
                POP     EDI
                POP     ESI
                POP     EDX
                POP     ECX
                POP     EBX
                CLC
                RETF
INSEARCHNEXTBLOCK:
                MOV     EAX,ES:[EDI]
                ADD     EDI,EAX
                ADD     EDI,4
                MOV     EAX,ES:[EDI]
                CMP     EAX,EBX
                JB      INEMULATIONERROR
                MOV     EDX,EBX
                MOV     EBX,0
CMPINLOOP:
                CMP     EBX,EDX
                JZ      INEQUAL
                MOV     AL,ES:[ESI+EBX+4]
                CMP     AL,ES:[EDI+EBX+4]
                JNZ     INNOTEQUAL
                INC     EBX
                JMP     CMPINLOOP
INEQUAL:
                MOV     EBX,EDX
                MOV     ESI,EDI
                JMP     CMPINPORT
INNOTEQUAL:
                MOV     EBX,EDX
                JMP     INSEARCHNEXTBLOCK
INEMULATIONERROR:
                MOV     AL,GS:_CURTYPE
                POP     EDI
                POP     ESI
                POP     EDX
                POP     ECX
                POP     EBX
                STC
                RETF
CHECKINPORT     ENDP

;*****************************************************************************
;* Here emulation output a data to a port                                    *
;*****************************************************************************

CHECKOUTPORT    PROC    FAR
                PUSH    EBX
                PUSH    ECX
                PUSH    EDX
                PUSH    ESI
                PUSH    EDI

                MOV     BYTE PTR GS:_CURTYPE,BL          ;current type
                MOV     WORD PTR GS:_CURPORT,DX          ;current port
                MOV     DWORD PTR GS:_CURVALUE,EAX       ;current output value
                MOV     ESI,GS:CURBLOCKADDR
                MOV     EDI,ESI
                MOV     EBX,GS:BYTESCOUNTER
CMPOUTPORT:
                MOV     AL,BYTE PTR GS:_CURTYPE
                CMP     AL,BYTE PTR ES:[ESI+EBX+4]        ;DATA TYPE
                JNZ     OUTSEARCHNEXTBLOCK
                MOV     DX,WORD PTR GS:_CURPORT
                CMP     DX,WORD PTR ES:[ESI+EBX+5]        ;PORT NO
                JNZ     OUTSEARCHNEXTBLOCK
                CMP     AL,10H
                JZ      OUTBYTE
                CMP     AL,11H
                JZ      OUTWORD
                CMP     AL,12H
                JZ      OUTDWORD
                POP     EDI
                POP     ESI
                POP     EDX
                POP     ECX
                POP     EBX
                STC
                RETF
OUTBYTE:
                MOV     EAX,DWORD PTR GS:_CURVALUE
                CMP     AL,BYTE PTR ES:[ESI+EBX+7]
                JNZ     OUTSEARCHNEXTBLOCK
                MOV     GS:CURBLOCKADDR,ESI
                MOV     GS:BYTESCOUNTER,EBX
                MOV     EAX,GS:BYTESCOUNTER
                ADD     EAX,4
                CMP     EAX,ES:[ESI]
                JB      OUTNOTCIRCLE1
                MOV     EAX,0
OUTNOTCIRCLE1:
                MOV     GS:BYTESCOUNTER,EAX
                POP     EDI
                POP     ESI
                POP     EDX
                POP     ECX
                POP     EBX
                CLC
                RETF
OUTWORD:
                MOV     EAX,DWORD PTR GS:_CURVALUE
                CMP     AX,WORD PTR ES:[ESI+EBX+7]
                JNZ     OUTSEARCHNEXTBLOCK
                MOV     GS:CURBLOCKADDR,ESI
                MOV     GS:BYTESCOUNTER,EBX
                MOV     EAX,GS:BYTESCOUNTER
                ADD     EAX,5
                CMP     EAX,ES:[ESI]
                JB      OUTNOTCIRCLE2
                MOV     EAX,0
OUTNOTCIRCLE2:
                MOV     GS:BYTESCOUNTER,EAX
                POP     EDI
                POP     ESI
                POP     EDX
                POP     ECX
                POP     EBX
                CLC
                RETF
OUTDWORD:
                MOV     EAX,DWORD PTR GS:_CURVALUE
                CMP     EAX,DWORD PTR ES:[ESI+EBX+7]
                JNZ     OUTSEARCHNEXTBLOCK
                MOV     GS:CURBLOCKADDR,ESI
                MOV     GS:BYTESCOUNTER,EBX
                MOV     EAX,GS:BYTESCOUNTER
                ADD     EAX,7
                CMP     EAX,ES:[ESI]
                JB      OUTNOTCIRCLE3
                MOV     EAX,0
OUTNOTCIRCLE3:
                MOV     GS:BYTESCOUNTER,EAX
                POP     EDI
                POP     ESI
                POP     EDX
                POP     ECX
                POP     EBX
                CLC
                RETF
OUTSEARCHNEXTBLOCK:
                MOV     EAX,ES:[EDI]
                ADD     EDI,EAX
                ADD     EDI,4
                MOV     EAX,ES:[EDI]
                CMP     EAX,EBX
                JB      OUTEMULATIONERROR
                MOV     EDX,EBX
                MOV     EBX,0
CMPOUTLOOP:
                CMP     EBX,EDX
                JZ      OUTEQUAL
                MOV     AL,ES:[ESI+EBX+4]
                CMP     AL,ES:[EDI+EBX+4]
                JNZ     OUTNOTEQUAL
                INC     EBX
                JMP     CMPOUTLOOP
OUTEQUAL:
                MOV     EBX,EDX
                MOV     ESI,EDI
                JMP     CMPOUTPORT
OUTNOTEQUAL:
                MOV     EBX,EDX
                JMP     OUTSEARCHNEXTBLOCK
OUTEMULATIONERROR:
                POP     EDI
                POP     ESI
                POP     EDX
                POP     ECX
                POP     EBX
                STC
                RETF
CHECKOUTPORT    ENDP


ISREND          EQU     $
ISR             ENDS

ISRLEN          EQU     (ISREND-ISRBEG)-1
IDTLEN          EQU     (IDTEND-IDTBEG)-1
INTLEN          EQU     (INT1-INT0)
                PUBLIC  ISRLEN,IDTLEN,INT0,INT1
                PUBLIC  IDTBEG,INTLEN,MESSAGEA
                END

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -