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

📄 int386.asm

📁 usb加密狗复制小工具 ┆加密狗信息复制工具
💻 ASM
📖 第 1 页 / 共 4 页
字号:
                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],CX   ;value
                ADD     EBX,5
                MOV     ES:[ESI+2],EBX
                MOV     EAX,[ESP+30H+4]
                INC     EAX
                MOV     [ESP+30H+4],EAX                 ;next instruction
                JMP     IOINSTRUCTIONOVER

ABOUTREP:
                MOV     EAX,GS:[EBX]
                SHR     EAX,8
                AND     EAX,0FFH
                CMP     EAX,6CH
                JZ      ABOUTREPINSB
                CMP     EAX,6DH
                JZ      ABOUTREPINSW
                CMP     EAX,6EH
                JZ      ABOUTREPOUTSB
                CMP     EAX,6FH
                JZ      ABOUTREPOUTSW
                JMP     NOTRECOVER
ABOUTREPINSB:
ABOUTREPINSW:
ABOUTREPOUTSB:
ABOUTREPOUTSW:
                JMP     IOINSTRUCTIONOVER

IOINSTRUCTIONOVER:
                POP     GS
                POP     FS
                POP     ES
                POPAD
                ADD     ESP,8
                IRETD

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

EMULATEDOG:
                CMP     EAX,0ECH      ;IN AL,DX
                JZ      EMINAL_DX
                CMP     EAX,0EDH      ;IN AX,DX
                JZ      EMINAX_DX
                CMP     EAX,0E4H      ;IN AL,XX
                JZ      EMINAL_XX
                CMP     EAX,0E5H      ;IN AX,XX
                JZ      EMINAX_XX
                CMP     EAX,0EEH      ;OUT DX,AL
                JZ      EMOUTDX_AL
                CMP     EAX,0EFH      ;OUT DX,AX
                JZ      EMOUTDX_AX
                CMP     EAX,0E6H      ;OUT XX,AL
                JZ      EMOUTXX_AL
                CMP     EAX,0E7H      ;OUT XX,AX
                JZ      EMOUTXX_AX
                CMP     EAX,06CH      ;INSB
                JZ      EMABOUTINSB
                CMP     EAX,06DH      ;INSW
                JZ      EMABOUTINSW
                CMP     EAX,6EH       ;OUTSB
                JZ      EMABOUTOUTSB
                CMP     EAX,6FH       ;OUTSW
                JZ      EMABOUTOUTSW
                CMP     EAX,0F3H      ;REP
                JZ      EMABOUTREP
                JMP     NOTRECOVER
EMINAL_DX:
                MOV     AX,SEL_UDATA
                MOV     GS,AX
                MOV     EDX,[ESP+20H]           ;OLD EDX
                MOV     AL,0                    ;IN  BYTE
                CALL32F SEL_ICODE,CHECKINPORT
                JC      NOTEMULATION
                MOV     BYTE PTR [ESP+28H],AL   ;EMULATION VALUE
                MOV     EAX,[ESP+30H+4]         ;to next instruction
                INC     EAX
                MOV     [ESP+30H+4],EAX
                JMP     EMIOINSTRUCTIONOVER
EMINAX_DX:
                MOV     AX,SEL_UDATA
                MOV     GS,AX
                MOV     EDX,[ESP+20H]           ;OLD EDX
                MOV     AL,1                    ;IN WORD
                CALL32F SEL_ICODE,CHECKINPORT
                JC      NOTEMULATION
                MOV     WORD PTR [ESP+28H],AX   ;EMULATION VALUE
                MOV     EAX,[ESP+30H+4]         ;to next instruction
                INC     EAX
                MOV     [ESP+30H+4],EAX
                JMP     EMIOINSTRUCTIONOVER
EMINAL_XX:
                MOV     EDX,ES:[EBX]            ;CURRENT INSTRUCTION
                SHR     EDX,8
                AND     EDX,0FFH                ;PORT NO
                MOV     AX,SEL_UDATA
                MOV     GS,AX
                MOV     AL,0                    ;IN BYTE
                CALL32F SEL_ICODE,CHECKINPORT
                JC      NOTEMULATION
                MOV     BYTE PTR [ESP+28H],AL
                MOV     EAX,[ESP+30H+4]         ;to next instruction
                ADD     EAX,2
                MOV     [ESP+30H+4],EAX
                JMP     EMIOINSTRUCTIONOVER
EMINAX_XX:
                MOV     EDX,ES:[EBX]            ;CURRENT INSTRUCTION
                SHR     EDX,8
                AND     EDX,0FFH                ;PORT NO
                MOV     AX,SEL_UDATA
                MOV     GS,AX
                MOV     AL,1                    ;IN WORD
                CALL32F SEL_ICODE,CHECKINPORT
                JC      NOTEMULATION
                MOV     WORD PTR [ESP+28H],AX   ;EMULATION VALUE
                MOV     EAX,[ESP+30H+4]         ;to next instruction
                ADD     EAX,2
                MOV     [ESP+30H+4],EAX
                JMP     EMIOINSTRUCTIONOVER
EMOUTDX_AL:
                MOV     AX,SEL_UDATA
                MOV     GS,AX
                MOV     EDX,[ESP+20H]           ;OLD EDX
                MOV     AL,BYTE PTR [ESP+28H]   ;OLD EAX
                MOV     BL,10H                  ;OUT BYTE
                CALL32F SEL_ICODE,CHECKOUTPORT
                JC      NOTEMULATION
                MOV     EAX,[ESP+30H+4]                 ;to next instruction
                INC     EAX
                MOV     [ESP+30H+4],EAX
                JMP     EMIOINSTRUCTIONOVER
EMOUTDX_AX:
                MOV     AX,SEL_UDATA
                MOV     GS,AX
                MOV     EDX,[ESP+20H]           ;OLD EDX
                MOV     AX,WORD PTR [ESP+28H]   ;OLD EAX
                MOV     BL,11H                  ;OUT WORD
                CALL32F SEL_ICODE,CHECKOUTPORT
                JC      NOTEMULATION
                MOV     EAX,[ESP+30H+4]                 ;to next instruction
                INC     EAX
                MOV     [ESP+30H+4],EAX
                JMP     EMIOINSTRUCTIONOVER
EMOUTXX_AL:
                MOV     EDX,ES:[EBX]            ;CURRENT INSTRUCTION
                SHR     EDX,8
                AND     EDX,0FFH                ;OLD EDX
                MOV     AX,SEL_UDATA
                MOV     GS,AX
                MOV     AL,BYTE PTR [ESP+28H]   ;OLD EAX
                MOV     BL,10H                  ;OUT BYTE
                CALL32F SEL_ICODE,CHECKOUTPORT
                JC      NOTEMULATION
                MOV     EAX,[ESP+30H+4]         ;to next instruction
                ADD     EAX,2
                MOV     [ESP+30H+4],EAX
                JMP     EMIOINSTRUCTIONOVER
EMOUTXX_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
                MOV     BL,11H                  ;OUT WORD
                CALL32F SEL_ICODE,CHECKOUTPORT
                JC      NOTEMULATION
                MOV     EAX,[ESP+30H+4]         ;to next instruction
                ADD     EAX,2
                MOV     [ESP+30H+4],EAX
                JMP     EMIOINSTRUCTIONOVER
EMABOUTINSB:
                MOV     AX,SEL_UDATA
                MOV     GS,AX
                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
                MOV     EAX,[ESP+38H+4]         ;OLD FLAG,DF
                AND     EAX,400H
                JZ      EMNOTCHANGE1
                MOV     AL,0                    ;INBYTE
                CALL32F SEL_ICODE,CHECKINPORT
                JC      NOTEMULATION
                MOV     BYTE PTR ES:[EDI],AL    ;EMULATE DATA
                MOV     EAX,[ESP+0CH]
                DEC     EAX
                AND     EAX,0FFFFH
                MOV     [ESP+0CH],EAX           ;change EDI
                JMP     EMINSBOVER
EMNOTCHANGE1:
                MOV     AL,0                    ;IN BYTE
                CALL32F SEL_ICODE,CHECKINPORT
                JC      NOTEMULATION
                MOV     BYTE PTR ES:[EDI],AL
                MOV     EAX,[ESP+0CH]
                INC     EAX
                AND     EAX,0FFFFH
                MOV     [ESP+0CH],EAX           ;change EDI
EMINSBOVER:
                MOV     EAX,[ESP+30H+4]                ;to next instruction
                INC     EAX
                MOV     [ESP+30H+4],EAX
                JMP     EMIOINSTRUCTIONOVER
EMABOUTINSW:
                MOV     AX,SEL_UDATA
                MOV     GS,AX
                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
                MOV     EAX,[ESP+38H+4]         ;OLD FLAG,DF
                AND     EAX,400H
                JZ      EMNOTCHANGE2
                MOV     AL,1                    ;IN WORD
                CALL32F SEL_ICODE,CHECKINPORT
                MOV     WORD PTR ES:[EDI],AX
                MOV     EAX,[ESP+0CH]
                SUB     EAX,2
                MOV     [ESP+0CH],EAX           ;CHANGE EDI
                JMP     EMINSWOVER
EMNOTCHANGE2:
                MOV     AL,1                    ;IN WORD
                CALL32F SEL_ICODE,CHECKINPORT
                MOV     WORD PTR ES:[EDI],AX
                MOV     EAX,[ESP+0CH]
                ADD     EAX,2
                MOV     [ESP+0CH],EAX            ;CHANGE EDI
EMINSWOVER:
                MOV     EAX,[ESP+30H+4]          ;to next instruction
                INC     EAX
                MOV     [ESP+30H+4],EAX
                JMP     EMIOINSTRUCTIONOVER

EMABOUTOUTSB:
                MOV     AX,SEL_UDATA
                MOV     GS,AX
                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
                MOV     EAX,[ESP+38H+4]      ;OLD FLAG,DF
                AND     EAX,400H
                JZ      EMNOTCHANGE3
                MOV     AL,BYTE PTR ES:[ESI]
                MOV     BL,10                ;OUT BYTE
                CALL32F SEL_ICODE,CHECKOUTPORT
                JC      NOTEMULATION
                MOV     EAX,[ESP+10H]
                DEC     EAX
                AND     EAX,0FFFFH
                MOV     [ESP+10H],EAX        ;CHANGE ESI
                JMP     EMOUTSBOVER
EMNOTCHANGE3:
                MOV     AL,BYTE PTR ES:[ESI]
                MOV     BL,10                ;OUT BYTE
                CALL32F SEL_ICODE,CHECKOUTPORT
                JC      NOTEMULATION
                MOV     EAX,[ESP+10H]
                INC     EAX
                AND     EAX,0FFFFH
                MOV     [ESP+10H],EAX        ;CHANGE EDI
EMOUTSBOVER:
                MOV     EAX,[ESP+30H+4]       ;OLD EIP
                INC     EAX
                MOV     [ESP+30H+4],EAX       ;next instruction
                JMP     EMIOINSTRUCTIONOVER

EMABOUTOUTSW:
                MOV     AX,SEL_UDATA
                MOV     GS,AX
                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
                MOV     EAX,[ESP+38H+4]      ;OLD FLAG,DF
                AND     EAX,400H
                JZ      EMNOTCHANGE4
                MOV     AX,WORD PTR ES:[ESI]
                MOV     BL,11H                ;OUT WORD
                CALL32F SEL_ICODE,CHECKOUTPORT
                JC      NOTEMULATION
                MOV     EAX,[ESP+10H]
                SUB     EAX,2
                AND     EAX,0FFFFH
                MOV     [ESP+10H],EAX         ;CHANGE ESI
                JMP     EMOUTSWOVER
EMNOTCHANGE4:
                MOV     AX,WORD PTR ES:[ESI]
                MOV     BL,11H
                CALL32F SEL_ICODE,CHECKOUTPORT
                JC      NOTEMULATION
                MOV     EAX,[ESP+10H]
                ADD     EAX,2
                AND     EAX,0FFFFH
                MOV     [ESP+10H],EAX         ;CHANGE ESI
EMOUTSWOVER:
                MOV     EAX,[ESP+30H+4]       ;OLD EIP
                INC     EAX
                MOV     [ESP+30H+4],EAX       ;next instruction
                JMP     EMIOINSTRUCTIONOVER

EMABOUTREP:
                MOV     EAX,GS:[EBX]
                SHR     EAX,8
                AND     EAX,0FFH
                CMP     EAX,6CH
                JZ      EMABOUTREPINSB
                CMP     EAX,6DH
                JZ      EMABOUTREPINSW
                CMP     EAX,6EH
                JZ      EMABOUTREPOUTSB
                CMP     EAX,6FH
                JZ      EMABOUTREPOUTSW
                JMP     NOTRECOVER
EMABOUTREPINSB:
EMABOUTREPINSW:
EMABOUTREPOUTSB:
EMABOUTREPOUTSW:
                JMP     EMIOINSTRUCTIONOVER

EMIOINSTRUCTIONOVER:
                POP     GS
                POP     FS
                POP     ES
                POPAD
                ADD     ESP,8
                IRETD
NOTGP:
                MOV     EAX,[ESP+30H]
                ADD     EAX,2
                MOV     [ESP+30H],EAX
                POP     GS
                POP     FS
                POP     ES
                POPAD
                ADD     ESP,4
                IRETD


NOTEMULATION:
                MOV     EAX,GS:CURBLOCKADDR
                CALL32F SEL_CODE32,HEXOUT4
                MOV     EAX,GS:BYTESCOUNTER
                CALL32F SEL_CODE32,HEXOUT4



NOTRECOVER:
                MOV     EAX,[ESP+30H+4]
                MOV     EBX,[ESP+34H+4]
                SHL     EBX,4
                ADD     EBX,EAX
                MOV     EAX,ES:[EBX]
                CALL32F SEL_CODE32,HEXOUT4
                POP     GS
                POP     FS
                POP     ES
                POPAD

                PUSHAD
                PUSH    GS
                PUSH    FS
                PUSH    DS
                PUSH    ES
                MOV     AX,SEL_VIDEO
                MOV     ES,AX
                MOV     AX,CS
                MOV     DS,AX
;do dump
                MOV     ECX,4
INTL1:

⌨️ 快捷键说明

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