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

📄 int386.asm

📁 usb加密狗复制小工具 ┆加密狗信息复制工具
💻 ASM
📖 第 1 页 / 共 4 页
字号:
                JZ      ABOUTCR
                CMP     EAX,21H
                JZ      ABOUTDR
                CMP     EAX,24H
                JZ      ABOUTTR
                JMP     NOTRECOVER
ABOUTCR:
                MOV     ECX,0H
                MOV     EDX,1FH
                JMP     RUNINSTRUCTION
ABOUTDR:
                MOV     ECX,0H
                MOV     EDX,3FH
                JMP     RUNINSTRUCTION
ABOUTTR:
                MOV     ECX,30H
                MOV     EDX,3FH
RUNINSTRUCTION:
                MOV     EAX,ES:[EBX]
                SHR     EAX,16
                AND     EAX,03FH
                CMP     EAX,ECX
                JB      NOTRECOVER
                CMP     EAX,EDX
                JA      NOTRECOVER
                MOV     AX,SEL_ISR       ;The alias of ISR
                MOV     GS,AX
                MOV     EAX,ES:[EBX]
                MOV     BYTE PTR GS:THEINSTRUCTION,AL
                SHR     EAX,8
                MOV     BYTE PTR GS:THEINSTRUCTION+1,AL
                SHR     EAX,8
                MOV     BYTE PTR GS:THEINSTRUCTION+2,AL
                MOV     EAX,[ESP+30H+4]
                ADD     EAX,3
                MOV     [ESP+30H+4],EAX

                POP     GS
                POP     FS
                POP     ES
                POPAD
THEINSTRUCTION  LABEL
                DB      0,0,0
                ADD     ESP,8
                IRETD

SKIPINSTRUCTION:
                MOV     EAX,[ESP+30H+4]
                ADD     EAX,3
                MOV     [ESP+30H+4],EAX
                POP     GS
                POP     FS
                POP     ES
                POPAD
                ADD     ESP,8
                IRETD

;****************************************************************************
;*  here handle the I/O instruction,Analyse                                 *
;****************************************************************************

NOTMOV:
                CMP     BYTE PTR FS:EXEFLAG,0H
                JZ      EMULATEDOG    ;IS 1, analyse the soft dog
                CMP     EAX,0ECH      ;IN AL,DX
                JZ      INAL_DX
                CMP     EAX,0EDH      ;IN AX,DX
                JZ      INAX_DX
                CMP     EAX,0E4H      ;IN AL,XX
                JZ      INAL_XX
                CMP     EAX,0E5H      ;IN AX,XX
                JZ      INAX_XX
                CMP     EAX,0EEH      ;OUT DX,AL
                JZ      OUTDX_AL
                CMP     EAX,0EFH      ;OUT DX,AX
                JZ      OUTDX_AX
                CMP     EAX,0E6H      ;OUT XX,AL
                JZ      OUTXX_AL
                CMP     EAX,0E7H      ;OUT XX,AX
                JZ      OUTXX_AX
                CMP     EAX,06CH      ;INSB
                JZ      ABOUTINSB
                CMP     EAX,06DH      ;INSW
                JZ      ABOUTINSW
                CMP     EAX,6EH       ;OUTSB
                JZ      ABOUTOUTSB
                CMP     EAX,6FH       ;OUTSW
                JZ      ABOUTOUTSW
                CMP     EAX,0F3H      ;REP
                JZ      ABOUTREP
                JMP     NOTRECOVER
INAL_DX:
                MOV     AX,SEL_UDATA
                MOV     GS,AX
                MOV     EDX,[ESP+20H] ;OLD EDX
                IN      AL,DX
                MOV     ESI,GS:PORTDATAADDR
                MOV     EBX,ES:[ESI+2]
                MOV     BYTE PTR ES:[ESI+EBX+6],0    ;in byte
                MOV     WORD PTR ES:[ESI+EBX+7],DX   ;port no
                MOV     BYTE PTR ES:[ESI+EBX+9],AL   ;value
                ADD     EBX,4
                MOV     ES:[ESI+2],EBX                   ;counter
                MOV     BYTE PTR [ESP+28H],AL
                MOV     EAX,[ESP+30H+4]                 ;to next instruction
                INC     EAX
                MOV     [ESP+30H+4],EAX
                JMP     IOINSTRUCTIONOVER
INAX_DX:
                MOV     AX,SEL_UDATA
                MOV     GS,AX
                MOV     EDX,[ESP+20H] ;OLD EDX
                IN      AX,DX
                MOV     ESI,GS:PORTDATAADDR
                MOV     EBX,ES:[ESI+2]
                MOV     BYTE PTR ES:[ESI+EBX+6],1    ;in word
                MOV     WORD PTR ES:[ESI+EBX+7],DX   ;port no
                MOV     WORD PTR ES:[ESI+EBX+9],AX   ;value
                ADD     EBX,5
                MOV     ES:[ESI+2],EBX                   ;counter
                MOV     WORD PTR [ESP+28H],AX
                MOV     EAX,[ESP+30H+4]                 ;to next instruction
                INC     EAX
                MOV     [ESP+30H+4],EAX
                JMP     IOINSTRUCTIONOVER
INAL_XX:
                MOV     EDX,ES:[EBX]          ;CURRENT INSTRUCTION
                SHR     EDX,8
                AND     EDX,0FFH
                MOV     AX,SEL_UDATA
                MOV     GS,AX
                IN      AL,DX
                MOV     ESI,GS:PORTDATAADDR
                MOV     EBX,ES:[ESI+2]
                MOV     BYTE PTR ES:[ESI+EBX+6],0     ;in byte
                MOV     WORD PTR ES:[ESI+EBX+7],DX    ;port no
                MOV     BYTE PTR ES:[ESI+EBX+9],AL    ;value
                ADD     EBX,4
                MOV     ES:[ESI+2],EBX                    ;counter
                MOV     BYTE PTR [ESP+28H],AL
                MOV     EAX,[ESP+30H+4]                 ;to next instruction
                ADD     EAX,2
                MOV     [ESP+30H+4],EAX
                JMP     IOINSTRUCTIONOVER
INAX_XX:
                MOV     EDX,ES:[EBX]          ;CURRENT INSTRUCTION
                SHR     EDX,8
                AND     EDX,0FFH
                MOV     AX,SEL_UDATA
                MOV     GS,AX
                IN      AX,DX
                MOV     ESI,GS:PORTDATAADDR
                MOV     EBX,ES:[ESI+2]
                MOV     BYTE PTR ES:[ESI+EBX+6],1    ;in word
                MOV     WORD PTR ES:[ESI+EBX+7],DX   ;port no
                MOV     WORD PTR ES:[ESI+EBX+9],AX   ;value
                ADD     EBX,5
                MOV     ES:[ESI+2],EBX                   ;counter
                MOV     WORD PTR [ESP+28H],AX
                MOV     EAX,[ESP+30H+4]                  ;to next instruction
                ADD     EAX,2
                MOV     [ESP+30H+4],EAX
                JMP     IOINSTRUCTIONOVER
OUTDX_AL:
                MOV     AX,SEL_UDATA
                MOV     GS,AX
                MOV     EDX,[ESP+20H] ;OLD EDX
                MOV     AL,BYTE PTR [ESP+28H]   ;OLD EAX
                OUT     DX,AL
                MOV     ESI,GS:PORTDATAADDR
                MOV     EBX,ES:[ESI+2]
                MOV     BYTE PTR ES:[ESI+EBX+6],10H   ;out byte
                MOV     WORD PTR ES:[ESI+EBX+7],DX    ;port no
                MOV     BYTE PTR ES:[ESI+EBX+9],AL    ;value
                ADD     EBX,4
                MOV     ES:[ESI+2],EBX                    ;counter
                MOV     EAX,[ESP+30H+4]                    ;to next instruction
                INC     EAX
                MOV     [ESP+30H+4],EAX
                JMP     IOINSTRUCTIONOVER
OUTDX_AX:
                MOV     AX,SEL_UDATA
                MOV     GS,AX
                MOV     EDX,[ESP+20H]           ;OLD EDX
                MOV     AX,WORD PTR [ESP+28H]   ;OLD EAX
                OUT     DX,AX
                MOV     ESI,GS:PORTDATAADDR
                MOV     EBX,ES:[ESI+2]
                MOV     BYTE PTR ES:[ESI+EBX+6],11H  ;out word
                MOV     WORD PTR ES:[ESI+EBX+7],DX   ;portno
                MOV     WORD PTR ES:[ESI+EBX+9],AX   ;value
                ADD     EBX,5
                MOV     ES:[ESI+2],EBX                   ;counter
                MOV     EAX,[ESP+30H+4]                   ;to next instruction
                INC     EAX
                MOV     [ESP+30H+4],EAX
                JMP     IOINSTRUCTIONOVER
OUTXX_AL:
                MOV     EDX,ES:[EBX]          ;CURRENT INSTRUCTION
                SHR     EDX,8
                AND     EDX,0FFH
                MOV     AX,SEL_UDATA
                MOV     GS,AX
                MOV     AL,BYTE PTR [ESP+28H] ;OLD EAX
                OUT     DX,AL
                MOV     ESI,GS:PORTDATAADDR
                MOV     EBX,ES:[ESI+2]
                MOV     BYTE PTR ES:[ESI+EBX+6],10H ;word byte
                MOV     WORD PTR ES:[ESI+EBX+7],DX  ;port no
                MOV     BYTE PTR ES:[ESI+EBX+9],AL  ;value
                ADD     EBX,4
                MOV     ES:[ESI+2],EBX
                MOV     EAX,[ESP+30H+4]                 ;to next instruction
                ADD     EAX,2
                MOV     [ESP+30H+4],EAX
                JMP     IOINSTRUCTIONOVER
OUTXX_AX:
                MOV     EDX,ES:[EBX]          ;CURRENT INSTRUCTION
                SHR     EDX,8
                AND     EDX,0FFH
                MOV     AX,SEL_UDATA
                MOV     GS,AX
                MOV     AX,WORD PTR [ESP+28H]  ;OLD EAX
                OUT     DX,AX
                MOV     ESI,GS:PORTDATAADDR
                MOV     EBX,ES:[ESI+2]
                MOV     BYTE PTR ES:[ESI+EBX+6],11H  ;out word
                MOV     WORD PTR ES:[ESI+EBX+7],DX   ;port no
                MOV     WORD PTR ES:[ESI+EBX+9],AX   ;value
                ADD     EBX,5
                MOV     ES:[ESI+2],EBX
                MOV     EAX,[ESP+30H+4]                 ;to next instruction
                ADD     EAX,2
                MOV     [ESP+30H+4],EAX
                JMP     IOINSTRUCTIONOVER
ABOUTINSB:
                MOV     EAX,[ESP+44H+4]      ;OLD ES
                SHL     EAX,4
                MOV     EDI,[ESP+0CH]        ;OLD EDI
                ADD     EDI,EAX
                MOV     EDX,[ESP+20H]        ;OLD DX
                CLD
                MOV     EAX,[ESP+38H+4]      ;OLD FLAG,DF
                AND     EAX,400H
                JZ      NOTCHANGE1
                STD
                INSB
                MOV     CL,BYTE PTR ES:[EDI+1]
                MOV     EAX,[ESP+0CH]
                DEC     EAX
                AND     EAX,0FFFFH
                MOV     [ESP+0CH],EAX
                JMP     INSBOVER
NOTCHANGE1:
                INSB
                MOV     CL,BYTE PTR ES:[EDI-1]
                MOV     EAX,[ESP+0CH]
                INC     EAX
                AND     EAX,0FFFFH
                MOV     [ESP+0CH],EAX
INSBOVER:
                MOV     AX,SEL_UDATA
                MOV     GS,AX
                MOV     ESI,GS:PORTDATAADDR
                MOV     EBX,ES:[ESI+2]
                MOV     BYTE PTR ES:[ESI+EBX+6],0H  ;in byte
                MOV     WORD PTR ES:[ESI+EBX+7],DX  ;port no
                MOV     BYTE PTR ES:[ESI+EBX+9],CL  ;value
                ADD     EBX,4
                MOV     ES:[ESI+2],EBX
                MOV     EAX,[ESP+30H+4]                ;to next instruction
                INC     EAX
                MOV     [ESP+30H+4],EAX
                JMP     IOINSTRUCTIONOVER
ABOUTINSW:
                MOV     EAX,[ESP+44H+4]      ;OLD ES
                SHL     EAX,4
                MOV     EDI,[ESP+0CH]        ;OLD EDI
                ADD     EDI,EAX
                MOV     EDX,[ESP+20H]        ;OLD DX
                CLD
                MOV     EAX,[ESP+38H+4]      ;OLD FLAG,DF
                AND     EAX,400H
                JZ      NOTCHANGE2
                STD
                INSW
                MOV     CX,WORD PTR ES:[EDI+2]
                MOV     EAX,[ESP+0CH]
                SUB     EAX,2
                MOV     [ESP+0CH],EAX
                JMP     INSWOVER
NOTCHANGE2:
                INSW
                MOV     CX,WORD PTR ES:[EDI-2]
                MOV     EAX,[ESP+0CH]
                ADD     EAX,2
                MOV     [ESP+0CH],EAX
INSWOVER:
                MOV     AX,SEL_UDATA
                MOV     GS,AX
                MOV     ESI,GS:PORTDATAADDR
                MOV     EBX,ES:[ESI+2]
                MOV     BYTE PTR ES:[ESI+EBX+4],1H  ;in word
                MOV     WORD PTR ES:[ESI+EBX+5],DX  ;port no
                MOV     WORD PTR ES:[ESI+EBX+7],CX  ;value
                ADD     EBX,5
                MOV     ES:[ESI+2],EBX
                MOV     EAX,[ESP+30H+4]                ;to next instruction
                INC     EAX
                MOV     [ESP+30H+4],EAX
                JMP     IOINSTRUCTIONOVER

ABOUTOUTSB:
                MOV     EAX,[ESP+48H+4]      ;OLD DS
                SHL     EAX,4
                MOV     ESI,[ESP+10H]        ;OLD ESI
                ADD     ESI,EAX
                MOV     EDX,[ESP+20H]        ;OLD DX
                CLD
                MOV     EAX,[ESP+38H+4]      ;OLD FLAG,DF
                AND     EAX,400H
                JZ      NOTCHANGE3
                STD
                OUTSB
                MOV     CL,BYTE PTR ES:[ESI+1]
                MOV     EAX,[ESP+0CH]
                DEC     EAX
                AND     EAX,0FFFFH
                MOV     [ESP+0CH],EAX
                JMP     OUTSBOVER
NOTCHANGE3:
                OUTSB
                MOV     CL,BYTE PTR ES:[ESI-1]
                MOV     EAX,[ESP+0CH]
                INC     EAX
                AND     EAX,0FFFFH
                MOV     [ESP+0CH],EAX
OUTSBOVER:
                MOV     AX,SEL_UDATA
                MOV     GS,AX
                MOV     ESI,GS:PORTDATAADDR
                MOV     EBX,ES:[ESI+2]
                MOV     BYTE PTR ES:[ESI+EBX+6],10H  ;out byte
                MOV     WORD PTR ES:[ESI+EBX+7],DX   ;port no
                MOV     BYTE PTR ES:[ESI+EBX+9],CL   ;value
                ADD     EBX,4
                MOV     ES:[ESI+2],EBX
                MOV     EAX,[ESP+30H+4]
                INC     EAX
                MOV     [ESP+30H+4],EAX                 ;next instruction
                JMP     IOINSTRUCTIONOVER

ABOUTOUTSW:
                MOV     EAX,[ESP+48H+4]      ;OLD DS
                SHL     EAX,4
                MOV     ESI,[ESP+10H]        ;OLD ESI
                ADD     ESI,EAX
                MOV     EDX,[ESP+20H]        ;OLD DX
                CLD
                MOV     EAX,[ESP+38H+4]      ;OLD FLAG,DF
                AND     EAX,400H
                JZ      NOTCHANGE4
                STD
                OUTSW
                MOV     CX,WORD PTR ES:[ESI+2]
                MOV     EAX,[ESP+0CH]
                SUB     EAX,2
                AND     EAX,0FFFFH
                MOV     [ESP+0CH],EAX
                JMP     OUTSWOVER
NOTCHANGE4:
                OUTSW
                MOV     CX,WORD PTR ES:[ESI-2]
                MOV     EAX,[ESP+0CH]
                ADD     EAX,2
                AND     EAX,0FFFFH
                MOV     [ESP+0CH],EAX
OUTSWOVER:
                MOV     AX,SEL_UDATA
                MOV     GS,AX

⌨️ 快捷键说明

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