光通软件 传奇汇编优化封包加解密算法

传奇汇编优化封包加解密算法

  • 2021/08/31 21:34:39
  • 作者:传三动力
  • 来源:光通软件

function Encode6BitBufEx(s, d: Pointer; slen, dlen: LongWord): LongWord;
asm
        PUSH    ESI
        PUSH    EDI
        PUSH    EBX
        XOR     EBX, EBX
        MOV     ESI, EAX
        MOV     EDI, EDX
        TEST    ESI, ESI
        JZ      @@_END
        TEST    EDI, EDI
        JZ      @@_END
        TEST    ECX, ECX
        JE      @@_END
        MOV     EDX, ECX
        MOV     ECX, 02H
        CMP     [EBP + 08H], ECX
        JB      @@_END
        CLD
@@_LOOP:
        CMP     EBX, [EBP + 08H]
        JNB     @@_EXITLOOP
        XOR     EAX, EAX
        LODSB
        ROR     AX, CL
        OR      AL, CH
        ADD     AL, 3CH
        SHR     AH, 02H
        MOV     CH, AH
        ADD     CL, 02H
        CMP     CL, 08H
        JNB     @@_DOUBLEMADE
        STOSB
        INC     EBX
        JMP     @@_CHECKLOOP
@@_DOUBLEMADE:
        PUSH    EDX
        MOV     EDX, [EBP + 08H]
        DEC     EDX
        CMP     EBX, EDX
        JNB     @@_MADE
        STOSB
        INC     EBX
        MOV     AL, CH
        ADD     AL, 3CH
@@_MADE:
        STOSB
        INC     EBX
        MOV     CX, 02H
        POP     EDX
@@_CHECKLOOP:
        DEC     EDX
        JNZ     @@_LOOP
@@_EXITLOOP:
        CMP     CL, 04H
        JB      @@_MAKEZERO
        MOV     AL, CH
        ADD     AL, 3CH
        STOSB
        INC     EBX
@@_MAKEZERO:
        CMP     EBX, [EBP + 08H]
        JNB     @@_END
        XOR     AL, AL
        STOSB
@@_END:
        MOV     EAX, EBX
        POP     EBX
        POP     EDI
        POP     ESI
end;


function Decode6BitBufEx(s, d: Pointer; slen, dlen: LongWord): LongWord;
asm
        PUSH    ESI
        PUSH    EDI
        PUSH    EBX
        XOR     EBX, EBX
        MOV     ESI, EAX
        MOV     EDI, EDX
        TEST    ESI, ESI
        JZ      @@_END
        TEST    EDI, EDI
        JZ      @@_END
        CMP     ECX, 02H
        JB      @@_END
        MOV     EDX, ECX
        CMP     [EBP + 08H], EBX
        JE      @@_END
        MOV     CL, 06H
        CLD
@@_LOOP:
        CMP     EBX, [EBP + 08H]
        JNB     @@_EXITLOOP
        XOR     EAX, EAX
        LODSB
        SUB     AL, 3CH
        CMP     AL, 40H
        JB      @@_CHECKBIT
        XOR     EBX, EBX
        JMP     @@_END
@@_CHECKBIT:
        CMP     CL, 06H
        JNB     @@_MADE6BIT
        ROR     AX, CL
        OR      AL, CH
        MOV     CH, AH
        STOSB
        INC     EBX
        SUB     CL, 02H
        JNS     @@_CHECKLOOP
        MOV     CL, 06H
        JMP     @@_CHECKLOOP
@@_MADE6BIT:
        SHL     AL, 02H
        SUB     CL, 02H
        MOV     CH, AL
@@_CHECKLOOP:
        DEC     EDX
        JNZ     @@_LOOP
@@_EXITLOOP:
        CMP     EBX, [EBP + 08H]
        JNB     @@_END
        XOR     AL, AL
        STOSB
@@_END:
        MOV     EAX, EBX
        POP     EBX
        POP     EDI
        POP     ESI
end;

本文来源:光通软件

光通软件

© 2019-2021