欢迎来到 嗅灵易学

零基础也能上手的脚本技术课,一对一答疑带你入门

答复

答复

看看谁能把下面的内嵌汇编转成C语言的:

代码:
int Test_Encode(PBYTE psrc, int srclen, PBYTE buf)

{

        BYTE    _cache;

        DWORD   Low_l;

        DWORD   Low_h;

        DWORD   uiSom;

        int     i;

        int     j;

        BYTE    b;

        __asm

        {

            xor     edi, edi

            xor     edx, edx

            xor     esi, esi

            mov     ebx, 400h

            mov     Low_l, edx

            mov     Low_h, edx

            mov     uiSom, 0FFFFFFFFh

            mov     _cache, dl

            mov     i, edx

            cmp     srclen, 0

            jle     loc_01

        loc_12:     

            mov     eax, psrc

            mov     ecx, i

            mov     j, 0

            mov     dl, [ecx+eax]

            mov     b, dl

        loc_11:     

            mov     al, b

            mov     cl, byte ptr j

            mov     edx, uiSom

            shr     al, cl

            shr     edx, 0Bh

            imul    edx, ebx

            test    al, 1

            jnz     loc_02

            mov     ecx, 800h

            mov     uiSom, edx

            sub     ecx, ebx

            shr     ecx, 5

            add     ebx, ecx

            jmp     loc_03

        loc_02:     

            add     Low_l, edx

            adc     Low_h, 0

            sub     uiSom, edx

            mov     edx, ebx

            shr     edx, 5

            sub     ebx, edx

        loc_03:     

            cmp     uiSom, 1000000h

            jnb     loc_04

            shl     uiSom, 8

            cmp     Low_l, 0FF000000h

            jb      loc_05

            cmp     Low_h, 0

            jz      loc_06

        loc_05:     

            mov     cl, _cache

            test    esi, esi

            jz      loc_07

            mov     al, byte ptr Low_h

        loc_08:     

            mov     dl, al

            add     dl, cl

            mov     ecx, buf

            mov     [edi+ecx], dl

            inc     edi

            or      cl, 0FFh

            dec     esi

            jnz     loc_08

        loc_07:     

            mov     eax, Low_l

            shr     eax, 18h

            mov     _cache, al

            jmp     loc_09

        loc_06:     

            mov     al, _cache

        loc_09:     

            shl     Low_l, 8

            mov     Low_h, 0

            inc     esi

            jmp     loc_10

        loc_04:

            mov     al, _cache

        loc_10:

            inc     j

            cmp     j, 8

            jl      loc_11

            mov     edx, srclen

            inc     i

            cmp     i, edx

            jl      loc_12

        loc_01:     

            mov     srclen, 5

        loc_17:     

            mov     edx, Low_l

            cmp     edx, 0FF000000h

            jb      loc_13

            cmp     Low_h, 0

            jz      loc_14

        loc_13:     

            test    esi, esi

            jz      loc_15

            mov     cl, byte ptr Low_h

        loc_16:     

            mov     bl, cl

            add     bl, al

            mov     eax, buf

            mov     [edi+eax], bl

            inc     edi

            or      al, 0FFh

            dec     esi

            jnz     loc_16

        loc_15:     

            mov     eax, edx

            shr     eax, 18h

        loc_14:     

            inc     esi

            shl     edx, 8

            mov     Low_l, edx

            mov     Low_h, 0

            dec     srclen

            jnz     loc_17

            mov     i, edi

        }

        return i;

}

注意:上传附件及图片大小不得大于30M。

⚠️ 版权声明:
本博客所有内容(含教程、源码、工具)仅供个人技术学习与研究交流使用,严禁商用、倒卖、二次分发及非法用途
未经作者书面授权,任何组织或个人不得转载、复制或用于其他平台,违者将追究相关责任。

0 0 0 举报
复制成功