首页
社区
课程
招聘
关于算法的请教,研究很久,没有看懂
2005-3-2 16:57 5964

关于算法的请教,研究很久,没有看懂

2005-3-2 16:57
5964
现在遇到一个问题,请各位指教一下
以下,这段代码,是什么算法?
var_18                = dword        ptr -18h
var_14                = dword        ptr -14h
var_10                = dword        ptr -10h
var_C                = dword        ptr -0Ch
var_8                = dword        ptr -8
var_4                = dword        ptr -4
arg_0                = dword        ptr  4
arg_4                = dword        ptr  8

                sub        esp, 18h
                mov        eax, [esp+18h+arg_0]        '指向要解密得数据 16 byte
                xor        ecx, ecx
                xor        edx, edx
                push        ebx
                mov        cl, [eax+1]
                mov        dh, [eax]
                xor        edx, ecx
                xor        ecx, ecx
                mov        cl, [eax+2]
                xor        ebx, ebx
                shl        edx, 8
                xor        edx, ecx
                mov        bl, [eax+5]
                xor        ecx, ecx
                push        esi
                mov        cl, [eax+3]
                push        edi
                shl        edx, 8
                xor        edx, ecx
                xor        ecx, ecx
                mov        ch, [eax+4]
                mov        edi, ds:dword_4132A8
                xor        ecx, ebx
                xor        ebx, ebx
                mov        bl, [eax+6]
                xor        edx, edi
                shl        ecx, 8
                xor        ecx, ebx
                xor        ebx, ebx
                mov        bl, [eax+7]
                mov        [esp+24h+var_C], edx
                shl        ecx, 8
                xor        ecx, ebx
                mov        ebx, ds:dword_4132AC
                xor        ecx, ebx
                xor        ebx, ebx
                mov        bl, [eax+9]
                mov        esi, ecx
                xor        ecx, ecx
                mov        [esp+24h+var_10], esi
                mov        ch, [eax+8]
                xor        ecx, ebx
                xor        ebx, ebx
                mov        bl, [eax+0Ah]
                shl        ecx, 8
                xor        ecx, ebx
                xor        ebx, ebx
                mov        bl, [eax+0Bh]
                shl        ecx, 8
                xor        ecx, ebx
                mov        ebx, ds:dword_4132B0
                xor        ecx, ebx
                xor        ebx, ebx
                mov        bl, [eax+0Dh]
                mov        [esp+24h+arg_0], ecx
                xor        ecx, ecx
                mov        ch, [eax+0Ch]
                xor        ecx, ebx
                xor        ebx, ebx
                mov        bl, [eax+0Eh]
                shl        ecx, 8
                xor        ecx, ebx
                xor        ebx, ebx
                mov        bl, [eax+0Fh]
                xor        eax, eax
                shl        ecx, 8
                xor        ecx, ebx
                mov        ebx, ds:dword_4132B4
                xor        ecx, ebx
                mov        [esp+24h+var_4], ecx
                xor        ecx, ecx
                mov        cl, byte ptr [esp+24h+arg_0+1]
                mov        al, byte ptr [esp+24h+var_4+2]
                mov        edi, ds:dword_4126A8[ecx*4]
                mov        eax, ds:dword_4122A8[eax*4]
                mov        ecx, edx
                xor        eax, edi
                shr        ecx, 18h
                mov        edi, ds:dword_411EA8[ecx*4]
                mov        ecx, esi
                xor        eax, edi
                mov        ebx, ds:dword_4132B8
                and        ecx, 0FFh
                shr        esi, 18h
                mov        edi, ds:dword_412AA8[ecx*4]
                xor        ecx, ecx
                mov        cl, byte ptr [esp+24h+var_4+1]
                xor        eax, edi
                xor        eax, ebx
                xor        ebx, ebx
                mov        bl, byte ptr [esp+24h+var_C+2]
                mov        ecx, ds:dword_4126A8[ecx*4]
                mov        [esp+24h+var_8], eax
                mov        edi, ds:dword_4122A8[ebx*4]
                xor        ebx, ebx
                xor        ecx, edi
                mov        edi, ds:dword_411EA8[esi*4]
                mov        esi, [esp+24h+arg_0]
                xor        ecx, edi
                and        esi, 0FFh
                mov        bl, dh
                mov        edi, ds:dword_412AA8[esi*4]
                mov        esi, ds:dword_4132BC
                xor        ecx, edi
                mov        edx, ds:dword_4126A8[ebx*4]
                xor        ecx, esi
                mov        [esp+24h+var_14], ecx
                xor        ecx, ecx
                mov        cl, byte ptr [esp+24h+var_10+2]
                mov        ecx, ds:dword_4122A8[ecx*4]
                xor        ecx, edx
                mov        edx, [esp+24h+arg_0]
                shr        edx, 18h
                mov        edi, ds:dword_411EA8[edx*4]
                mov        edx, [esp+24h+var_4]
                and        edx, 0FFh
                xor        ecx, edi
                mov        edi, ds:dword_4132C0
                mov        ebx, ds:dword_412AA8[edx*4]
                xor        edx, edx
                mov        dl, byte ptr [esp+24h+var_10+1]
                xor        ecx, ebx
                xor        ecx, edi
                mov        esi, ds:dword_4126A8[edx*4]
                mov        edx, [esp+24h+var_4]
                mov        [esp+24h+var_18], ecx
                xor        ecx, ecx
                mov        cl, byte ptr [esp+24h+arg_0+2]
                shr        edx, 18h
                mov        ecx, ds:dword_4122A8[ecx*4]
                mov        edi, ds:dword_411EA8[edx*4]
                mov        edx, [esp+24h+var_C]
                and        edx, 0FFh
                xor        ecx, esi
                xor        ecx, edi
                mov        edi, ds:dword_4132C4
                mov        ebx, ds:dword_412AA8[edx*4]
                mov        edx, [esp+24h+var_18]
                xor        ecx, ebx
                xor        ebx, ebx
                xor        ecx, edi
                mov        bl, dh
                mov        [esp+24h+var_4], ecx
                xor        ecx, ecx
                mov        cl, byte ptr [esp+24h+var_4+2]
                mov        esi, ds:dword_4126A8[ebx*4]
                mov        edi, ds:dword_4132C8
                mov        ecx, ds:dword_4122A8[ecx*4]
                xor        ecx, esi
                mov        esi, eax
                shr        esi, 18h
                mov        ebx, ds:dword_411EA8[esi*4]
                mov        esi, [esp+24h+var_14]
                and        esi, 0FFh
                xor        ecx, ebx
                xor        ecx, ds:dword_412AA8[esi*4]
                xor        ecx, edi
                mov        [esp+24h+var_C], ecx
                xor        ecx, ecx
                mov        cl, byte ptr [esp+24h+var_4+1]
                xor        ebx, ebx
                mov        bl, byte ptr [esp+24h+var_8+2]
                mov        ecx, ds:dword_4126A8[ecx*4]
                mov        esi, ds:dword_4122A8[ebx*4]
                mov        ebx, ds:dword_4132CC
                xor        ecx, esi
                mov        esi, [esp+24h+var_14]
                shr        esi, 18h
                mov        edi, ds:dword_411EA8[esi*4]
                mov        esi, edx
                and        esi, 0FFh
                xor        ecx, edi
                shr        edx, 18h
                xor        ecx, ds:dword_412AA8[esi*4]
                xor        ecx, ebx
                xor        ebx, ebx
                mov        [esp+24h+var_10], ecx
                mov        bl, ah
                xor        ecx, ecx
                and        eax, 0FFh
                mov        cl, byte ptr [esp+24h+var_14+2]
                mov        edi, ds:dword_4126A8[ebx*4]
                mov        ebx, ds:dword_411EA8[edx*4]
                mov        edx, [esp+24h+var_4]
                mov        ecx, ds:dword_4122A8[ecx*4]
                and        edx, 0FFh
                xor        ecx, edi
                mov        edi, ds:dword_4132D4
                mov        esi, ds:dword_412AA8[edx*4]
                mov        edx, ds:dword_4132D0
                xor        ecx, ebx
                xor        ecx, esi
                xor        ecx, edx
                xor        edx, edx
                mov        dl, byte ptr [esp+24h+var_14+1]
                mov        [esp+24h+arg_0], ecx
                xor        ecx, ecx
                mov        ebx, ds:dword_4126A8[edx*4]
                mov        cl, byte ptr [esp+24h+var_18+2]
                mov        edx, [esp+24h+var_4]
                mov        ecx, ds:dword_4122A8[ecx*4]
                shr        edx, 18h
                xor        ecx, ebx
                mov        ebx, ds:dword_412AA8[eax*4]
                mov        esi, ds:dword_411EA8[edx*4]
                xor        eax, eax
                xor        ecx, esi
                xor        edx, edx
                mov        dl, byte ptr [esp+24h+arg_0+1]
                xor        ecx, ebx
                xor        ecx, edi
                mov        esi, ds:dword_4126A8[edx*4]
                mov        edx, [esp+24h+var_C]
                mov        [esp+24h+var_4], ecx
                mov        al, byte ptr [esp+24h+var_4+2]
                mov        eax, ds:dword_4122A8[eax*4]
                xor        eax, esi
                mov        esi, edx
                shr        esi, 18h
                mov        edi, ds:dword_411EA8[esi*4]
                mov        esi, [esp+24h+var_10]
                xor        eax, edi
                mov        edi, esi
                and        edi, 0FFh
                shr        esi, 18h
                mov        ebx, ds:dword_412AA8[edi*4]
                xor        eax, ebx
                mov        ebx, ds:dword_4132D8
                xor        eax, ebx
                xor        ebx, ebx
                mov        bl, byte ptr [esp+24h+var_C+2]
                mov        [esp+24h+var_8], eax
                xor        eax, eax
                mov        edi, ds:dword_4122A8[ebx*4]
                mov        al, ch
                mov        eax, ds:dword_4126A8[eax*4]
                xor        eax, edi
                mov        edi, ds:dword_411EA8[esi*4]
                mov        esi, [esp+24h+arg_0]
                xor        eax, edi
                and        esi, 0FFh
                mov        edi, ds:dword_412AA8[esi*4]
                mov        ebx, ds:dword_4132DC
                xor        eax, edi
                xor        eax, ebx
                xor        ebx, ebx
                mov        bl, dh
                mov        edx, [esp+24h+arg_0]
                mov        [esp+24h+var_14], eax
                xor        eax, eax
                mov        al, byte ptr [esp+24h+var_10+2]
                mov        edi, ds:dword_4126A8[ebx*4]
                shr        edx, 18h
                mov        eax, ds:dword_4122A8[eax*4]
                mov        ebx, ds:dword_411EA8[edx*4]
                mov        edx, ecx
                and        edx, 0FFh
                xor        eax, edi
                xor        eax, ebx
                mov        edi, ds:dword_4132E4
                mov        esi, ds:dword_412AA8[edx*4]
                mov        edx, ds:dword_4132E0
                xor        eax, esi
                xor        eax, edx
                xor        edx, edx
                mov        dl, byte ptr [esp+24h+var_10+1]
                mov        [esp+24h+var_18], eax
                xor        eax, eax
                mov        al, byte ptr [esp+24h+arg_0+2]
                mov        ebx, ds:dword_4126A8[edx*4]
                shr        ecx, 18h
                mov        eax, ds:dword_4122A8[eax*4]
                xor        edx, edx
                mov        esi, ds:dword_411EA8[ecx*4]
                mov        ecx, [esp+24h+var_C]
                and        ecx, 0FFh
                xor        eax, ebx
                xor        eax, esi
                mov        dl, byte ptr [esp+24h+var_18+1]
                mov        ebx, ds:dword_412AA8[ecx*4]
                xor        ecx, ecx
                xor        eax, ebx
                mov        esi, ds:dword_4126A8[edx*4]
                xor        eax, edi
                mov        edx, [esp+24h+var_8]
                mov        [esp+24h+var_4], eax
                mov        cl, byte ptr [esp+24h+var_4+2]
                mov        ecx, ds:dword_4122A8[ecx*4]
                xor        ecx, esi
                mov        esi, edx
                shr        esi, 18h
                mov        edi, ds:dword_411EA8[esi*4]
                mov        esi, [esp+24h+var_14]
                xor        ecx, edi
                mov        edi, esi
                and        edi, 0FFh
                shr        esi, 18h
                mov        ebx, ds:dword_412AA8[edi*4]
                xor        ecx, ebx
                mov        ebx, ds:dword_4132E8
                xor        ecx, ebx
                xor        ebx, ebx
                mov        bl, byte ptr [esp+24h+var_8+2]
                mov        [esp+24h+var_C], ecx
                xor        ecx, ecx
                mov        edi, ds:dword_4122A8[ebx*4]
                mov        cl, ah
                mov        ebx, ds:dword_4132EC
                mov        ecx, ds:dword_4126A8[ecx*4]
                xor        ecx, edi
                mov        edi, ds:dword_411EA8[esi*4]
                mov        esi, [esp+24h+var_18]
                xor        ecx, edi
                and        esi, 0FFh
                xor        ecx, ds:dword_412AA8[esi*4]
                xor        ecx, ebx
                mov        [esp+24h+var_10], ecx
                xor        ecx, ecx
                mov        cl, byte ptr [esp+24h+var_14+2]
                xor        ebx, ebx
                mov        bl, dh
                mov        edx, [esp+24h+var_18]
                mov        edi, ds:dword_4126A8[ebx*4]
                mov        ecx, ds:dword_4122A8[ecx*4]
                shr        edx, 18h
                xor        ecx, edi
                mov        edi, ds:dword_4132F4
                mov        ebx, ds:dword_411EA8[edx*4]
                mov        edx, eax
                and        edx, 0FFh
                xor        ecx, ebx
                shr        eax, 18h
                mov        esi, ds:dword_412AA8[edx*4]
                mov        edx, ds:dword_4132F0
                xor        ecx, esi
                mov        esi, ds:dword_411EA8[eax*4]
                mov        eax, [esp+24h+var_8]
                xor        ecx, edx
                mov        [esp+24h+arg_0], ecx
                xor        ecx, ecx
                mov        cl, byte ptr [esp+24h+var_18+2]
                xor        edx, edx
                mov        dl, byte ptr [esp+24h+var_14+1]
                and        eax, 0FFh
                mov        ecx, ds:dword_4122A8[ecx*4]
                mov        ebx, ds:dword_4126A8[edx*4]
                xor        edx, edx
                xor        ecx, ebx
                mov        ebx, ds:dword_412AA8[eax*4]
                xor        ecx, esi
                mov        dl, byte ptr [esp+24h+arg_0+1]
                xor        ecx, ebx
                xor        eax, eax
                mov        esi, ds:dword_4126A8[edx*4]
                xor        ecx, edi
                mov        edx, [esp+24h+var_C]
                mov        [esp+24h+var_4], ecx
                mov        al, byte ptr [esp+24h+var_4+2]
                mov        eax, ds:dword_4122A8[eax*4]
                xor        eax, esi
                mov        esi, edx
                shr        esi, 18h
                mov        edi, ds:dword_411EA8[esi*4]
                mov        esi, [esp+24h+var_10]
                xor        eax, edi
                mov        edi, esi
                and        edi, 0FFh
                shr        esi, 18h
                mov        ebx, ds:dword_412AA8[edi*4]
                xor        eax, ebx
                mov        ebx, ds:dword_4132F8
                xor        eax, ebx
                xor        ebx, ebx
                mov        bl, byte ptr [esp+24h+var_C+2]
                mov        [esp+24h+var_8], eax
                xor        eax, eax
                mov        edi, ds:dword_4122A8[ebx*4]
                mov        al, ch
                mov        ebx, ds:dword_4132FC
                mov        eax, ds:dword_4126A8[eax*4]
                xor        eax, edi
                mov        edi, ds:dword_411EA8[esi*4]
                mov        esi, [esp+24h+arg_0]
                xor        eax, edi
                and        esi, 0FFh
                xor        eax, ds:dword_412AA8[esi*4]
                xor        eax, ebx
                xor        ebx, ebx
                mov        [esp+24h+var_14], eax
                xor        eax, eax
                mov        al, byte ptr [esp+24h+var_10+2]
                mov        bl, dh
                mov        edx, [esp+24h+arg_0]
                mov        eax, ds:dword_4122A8[eax*4]
                mov        edi, ds:dword_4126A8[ebx*4]
                shr        edx, 18h
                xor        eax, edi
                mov        ebx, ds:dword_411EA8[edx*4]
                mov        edx, ecx
                xor        eax, ebx
                and        edx, 0FFh
                mov        esi, ds:dword_412AA8[edx*4]
                mov        edx, ds:dword_413300
                xor        eax, esi
                mov        edi, ds:dword_413304
                xor        eax, edx
                xor        edx, edx
                mov        dl, byte ptr [esp+24h+var_10+1]
                mov        [esp+24h+var_18], eax
                xor        eax, eax
                mov        al, byte ptr [esp+24h+arg_0+2]
                mov        ebx, ds:dword_4126A8[edx*4]
                shr        ecx, 18h
                mov        eax, ds:dword_4122A8[eax*4]
                xor        edx, edx
                mov        esi, ds:dword_411EA8[ecx*4]
                mov        ecx, [esp+24h+var_C]
                and        ecx, 0FFh
                xor        eax, ebx
                xor        eax, esi
                mov        dl, byte ptr [esp+24h+var_18+1]
                mov        ebx, ds:dword_412AA8[ecx*4]
                xor        ecx, ecx
                xor        eax, ebx
                mov        esi, ds:dword_4126A8[edx*4]
                xor        eax, edi
                mov        edx, [esp+24h+var_8]
                mov        [esp+24h+var_4], eax
                mov        cl, byte ptr [esp+24h+var_4+2]
                mov        ecx, ds:dword_4122A8[ecx*4]
                xor        ecx, esi
                mov        esi, edx
                shr        esi, 18h
                mov        edi, ds:dword_411EA8[esi*4]
                mov        esi, [esp+24h+var_14]
                xor        ecx, edi
                mov        edi, esi
                and        edi, 0FFh
                shr        esi, 18h
                mov        ebx, ds:dword_412AA8[edi*4]
                xor        ecx, ebx
                mov        ebx, ds:dword_413308
                xor        ecx, ebx
                xor        ebx, ebx
                mov        bl, byte ptr [esp+24h+var_8+2]
                mov        [esp+24h+var_C], ecx
                xor        ecx, ecx
                mov        edi, ds:dword_4122A8[ebx*4]
                mov        cl, ah
                mov        ebx, ds:dword_41330C
                mov        ecx, ds:dword_4126A8[ecx*4]
                xor        ecx, edi
                mov        edi, ds:dword_411EA8[esi*4]
                mov        esi, [esp+24h+var_18]
                xor        ecx, edi
                and        esi, 0FFh
                xor        ecx, ds:dword_412AA8[esi*4]
                xor        ecx, ebx
                xor        ebx, ebx
                mov        bl, dh
                mov        edx, [esp+24h+var_18]
                mov        [esp+24h+var_10], ecx
                xor        ecx, ecx
                mov        cl, byte ptr [esp+24h+var_14+2]
                mov        edi, ds:dword_4126A8[ebx*4]
                shr        edx, 18h
                mov        ecx, ds:dword_4122A8[ecx*4]
                mov        ebx, ds:dword_411EA8[edx*4]
                mov        edx, eax
                and        edx, 0FFh
                xor        ecx, edi
                xor        ecx, ebx
                mov        esi, ds:dword_412AA8[edx*4]
                mov        edx, ds:dword_413310
                xor        ecx, esi
                xor        ecx, edx
                mov        [esp+24h+arg_0], ecx
                xor        ecx, ecx
                mov        cl, byte ptr [esp+24h+var_18+2]
                xor        edx, edx
                mov        dl, byte ptr [esp+24h+var_14+1]
                mov        ecx, ds:dword_4122A8[ecx*4]
                mov        ebx, ds:dword_4126A8[edx*4]
                shr        eax, 18h
                mov        edi, ds:dword_413314
                xor        ecx, ebx
                mov        esi, ds:dword_411EA8[eax*4]
                mov        eax, [esp+24h+var_8]
                and        eax, 0FFh
                xor        ecx, esi
                xor        edx, edx
                mov        ebx, ds:dword_412AA8[eax*4]
                mov        dl, byte ptr [esp+24h+arg_0+1]
                xor        ecx, ebx
                xor        eax, eax
                mov        esi, ds:dword_4126A8[edx*4]
                xor        ecx, edi
                mov        edx, [esp+24h+var_C]
                mov        [esp+24h+var_4], ecx
                mov        al, byte ptr [esp+24h+var_4+2]
                mov        eax, ds:dword_4122A8[eax*4]
                xor        eax, esi
                mov        esi, edx
                shr        esi, 18h
                mov        edi, ds:dword_411EA8[esi*4]
                mov        esi, [esp+24h+var_10]
                xor        eax, edi
                mov        edi, esi
                and        edi, 0FFh
                shr        esi, 18h
                mov        ebx, ds:dword_412AA8[edi*4]
                xor        eax, ebx
                mov        ebx, ds:dword_413318
                xor        eax, ebx
                xor        ebx, ebx
                mov        bl, byte ptr [esp+24h+var_C+2]
                mov        [esp+24h+var_8], eax
                xor        eax, eax
                mov        edi, ds:dword_4122A8[ebx*4]
                mov        al, ch
                mov        ebx, ds:dword_41331C
                mov        eax, ds:dword_4126A8[eax*4]
                xor        eax, edi
                mov        edi, ds:dword_411EA8[esi*4]
                mov        esi, [esp+24h+arg_0]
                xor        eax, edi
                and        esi, 0FFh
                xor        eax, ds:dword_412AA8[esi*4]
                xor        eax, ebx
                xor        ebx, ebx
                mov        bl, dh
                mov        edx, [esp+24h+arg_0]
                mov        [esp+24h+var_14], eax
                xor        eax, eax
                mov        al, byte ptr [esp+24h+var_10+2]
                mov        edi, ds:dword_4126A8[ebx*4]
                shr        edx, 18h
                mov        eax, ds:dword_4122A8[eax*4]
                mov        ebx, ds:dword_411EA8[edx*4]
                mov        edx, ecx
                and        edx, 0FFh
                xor        eax, edi
                xor        eax, ebx
                mov        esi, ds:dword_412AA8[edx*4]
                mov        edx, ds:dword_413320
                xor        eax, esi
                xor        eax, edx
                xor        edx, edx
                mov        dl, byte ptr [esp+24h+var_10+1]
                mov        [esp+24h+var_18], eax
                xor        eax, eax
                mov        al, byte ptr [esp+24h+arg_0+2]
                mov        ebx, ds:dword_4126A8[edx*4]
                shr        ecx, 18h
                mov        eax, ds:dword_4122A8[eax*4]
                mov        esi, ds:dword_411EA8[ecx*4]
                mov        ecx, [esp+24h+var_C]
                xor        eax, ebx
                xor        eax, esi
                and        ecx, 0FFh
                mov        ebx, ds:dword_412AA8[ecx*4]
                mov        edi, ds:dword_413324
                xor        eax, ebx
                xor        eax, edi
                xor        ecx, ecx
                mov        [esp+24h+var_4], eax
                xor        edx, edx
                mov        cl, byte ptr [esp+24h+var_4+2]
                mov        dl, byte ptr [esp+24h+var_18+1]
                mov        ecx, ds:dword_4122A8[ecx*4]
                mov        esi, ds:dword_4126A8[edx*4]
                mov        edx, [esp+24h+var_8]
                xor        ecx, esi
                mov        esi, edx
                shr        esi, 18h
                mov        edi, ds:dword_411EA8[esi*4]
                mov        esi, [esp+24h+var_14]
                xor        ecx, edi
                mov        edi, esi
                and        edi, 0FFh
                shr        esi, 18h
                mov        ebx, ds:dword_412AA8[edi*4]
                xor        ecx, ebx
                mov        ebx, ds:dword_413328
                xor        ecx, ebx
                xor        ebx, ebx
                mov        bl, byte ptr [esp+24h+var_8+2]
                mov        [esp+24h+var_C], ecx
                xor        ecx, ecx
                mov        edi, ds:dword_4122A8[ebx*4]
                mov        cl, ah
                mov        ebx, ds:dword_41332C
                mov        ecx, ds:dword_4126A8[ecx*4]
                xor        ecx, edi
                mov        edi, ds:dword_411EA8[esi*4]
                mov        esi, [esp+24h+var_18]
                xor        ecx, edi
                and        esi, 0FFh
                xor        ecx, ds:dword_412AA8[esi*4]
                xor        ecx, ebx
                xor        ebx, ebx
                mov        bl, dh
                mov        edx, [esp+24h+var_18]
                mov        [esp+24h+var_10], ecx
                xor        ecx, ecx
                mov        cl, byte ptr [esp+24h+var_14+2]
                mov        edi, ds:dword_4126A8[ebx*4]
                shr        edx, 18h
                mov        ecx, ds:dword_4122A8[ecx*4]
                mov        ebx, ds:dword_411EA8[edx*4]
                mov        edx, eax
                and        edx, 0FFh
                xor        ecx, edi
                xor        ecx, ebx
                mov        edi, ds:dword_413334
                mov        esi, ds:dword_412AA8[edx*4]
                mov        edx, ds:dword_413330
                xor        ecx, esi
                xor        ecx, edx
                xor        edx, edx
                mov        dl, byte ptr [esp+24h+var_14+1]
                mov        [esp+24h+arg_0], ecx
                xor        ecx, ecx
                mov        cl, byte ptr [esp+24h+var_18+2]
                mov        ebx, ds:dword_4126A8[edx*4]
                shr        eax, 18h
                mov        ecx, ds:dword_4122A8[ecx*4]
                mov        esi, ds:dword_411EA8[eax*4]
                mov        eax, [esp+24h+var_8]
                and        eax, 0FFh
                xor        ecx, ebx
                xor        ecx, esi
                mov        ebx, ds:dword_412AA8[eax*4]
                xor        eax, eax
                xor        ecx, ebx
                xor        ecx, edi
                xor        edx, edx
                mov        dl, byte ptr [esp+24h+arg_0+1]
                mov        [esp+24h+var_4], ecx
                mov        al, byte ptr [esp+24h+var_4+2]
                mov        eax, ds:dword_4122A8[eax*4]
                mov        esi, ds:dword_4126A8[edx*4]
                mov        edx, [esp+24h+var_C]
                xor        eax, esi
                mov        esi, edx
                shr        esi, 18h
                mov        edi, ds:dword_411EA8[esi*4]
                mov        esi, [esp+24h+var_10]
                xor        eax, edi
                mov        edi, esi
                and        edi, 0FFh
                shr        esi, 18h
                mov        ebx, ds:dword_412AA8[edi*4]
                xor        eax, ebx
                mov        ebx, ds:dword_413338
                xor        eax, ebx
                xor        ebx, ebx
                mov        bl, byte ptr [esp+24h+var_C+2]
                mov        [esp+24h+var_8], eax
                xor        eax, eax
                mov        edi, ds:dword_4122A8[ebx*4]
                mov        al, ch
                xor        ebx, ebx
                mov        eax, ds:dword_4126A8[eax*4]
                mov        bl, dh
                xor        eax, edi
                mov        edi, ds:dword_411EA8[esi*4]
                mov        esi, [esp+24h+arg_0]
                xor        eax, edi
                and        esi, 0FFh
                mov        edx, ds:dword_4126A8[ebx*4]
                mov        edi, ds:dword_412AA8[esi*4]
                mov        esi, ds:dword_41333C
                xor        eax, edi
                xor        eax, esi
                mov        [esp+24h+var_14], eax
                xor        eax, eax
                mov        al, byte ptr [esp+24h+var_10+2]
                mov        eax, ds:dword_4122A8[eax*4]
                xor        eax, edx
                mov        edx, [esp+24h+arg_0]
                shr        edx, 18h
                mov        edi, ds:dword_411EA8[edx*4]
                mov        edx, ecx
                and        edx, 0FFh
                xor        eax, edi
                mov        edi, ds:dword_413340
                mov        ebx, ds:dword_412AA8[edx*4]
                xor        edx, edx
                mov        dl, byte ptr [esp+24h+var_10+1]
                xor        eax, ebx
                xor        eax, edi
                mov        ebx, ds:dword_413344
                mov        esi, ds:dword_4126A8[edx*4]
                mov        [esp+24h+var_18], eax
                xor        eax, eax
                mov        al, byte ptr [esp+24h+arg_0+2]
                shr        ecx, 18h
                mov        eax, ds:dword_4122A8[eax*4]
                mov        edi, ds:dword_411EA8[ecx*4]
                mov        ecx, [esp+24h+var_C]
                and        ecx, 0FFh
                xor        eax, esi
                xor        eax, edi
                mov        edx, ds:dword_412AA8[ecx*4]
                xor        ecx, ecx
                xor        eax, edx
                xor        edx, edx
                mov        dl, byte ptr [esp+24h+var_18+1]
                xor        eax, ebx
                mov        [esp+24h+var_4], eax
                mov        cl, byte ptr [esp+24h+var_4+2]
                mov        edx, ds:dword_412EA8[edx*4]
                and        edx, 0FF00h
                mov        ecx, ds:dword_412EA8[ecx*4]
                and        ecx, 0FF0000h
                xor        ecx, edx
                mov        edx, [esp+24h+var_8]
                mov        esi, edx
                shr        esi, 18h
                mov        esi, ds:dword_412EA8[esi*4]
                and        esi, 0FF000000h
                mov        edi, [esp+24h+var_14]
                xor        ecx, esi
                mov        esi, edi
                xor        ebx, ebx
                and        esi, 0FFh
                mov        bl, byte ptr [esp+24h+var_8+2]
                shr        edi, 18h
                mov        esi, ds:dword_412EA8[esi*4]
                and        esi, 0FFh
                mov        edi, ds:dword_412EA8[edi*4]
                xor        ecx, esi
                mov        esi, ds:dword_413348
                xor        ecx, esi
                mov        esi, ds:dword_412EA8[ebx*4]
                xor        ebx, ebx
                and        esi, 0FF0000h
                mov        bl, ah
                and        edi, 0FF000000h
                mov        ebx, ds:dword_412EA8[ebx*4]
                and        ebx, 0FF00h
                xor        esi, ebx
                mov        ebx, ds:dword_41334C
                xor        esi, edi
                mov        edi, [esp+24h+var_18]
                and        edi, 0FFh
                mov        edi, ds:dword_412EA8[edi*4]
                and        edi, 0FFh
                xor        esi, edi
                mov        edi, ds:dword_413350
                xor        esi, ebx
                xor        ebx, ebx
                mov        bl, byte ptr [esp+24h+var_14+2]
                mov        [esp+24h+var_10], esi
                mov        esi, ds:dword_412EA8[ebx*4]
                xor        ebx, ebx
                and        esi, 0FF0000h
                mov        bl, dh
                mov        [esp+24h+arg_0], esi
                mov        esi, ds:dword_412EA8[ebx*4]
                mov        edx, [esp+24h+arg_0]
                and        esi, 0FF00h
                mov        ebx, ecx
                xor        edx, esi
                mov        esi, [esp+24h+var_18]
                shr        esi, 18h
                mov        esi, ds:dword_412EA8[esi*4]
                and        esi, 0FF000000h
                xor        edx, esi
                mov        esi, eax
                and        esi, 0FFh
                shr        eax, 18h
                mov        esi, ds:dword_412EA8[esi*4]
                and        esi, 0FFh
                mov        eax, ds:dword_412EA8[eax*4]
                xor        edx, esi
                and        eax, 0FF000000h
                xor        edx, edi
                mov        [esp+24h+arg_0], edx
                xor        edx, edx
                mov        dl, byte ptr [esp+24h+var_18+2]
                mov        edx, ds:dword_412EA8[edx*4]
                and        edx, 0FF0000h
                mov        [esp+24h+var_4], edx
                xor        edx, edx
                mov        dl, byte ptr [esp+24h+var_14+1]
                mov        esi, ds:dword_412EA8[edx*4]
                mov        edx, [esp+24h+var_4]
                and        esi, 0FF00h
                xor        edx, esi
                mov        esi, ds:dword_413354
                xor        edx, eax
                mov        eax, [esp+24h+var_8]
                and        eax, 0FFh
                mov        eax, ds:dword_412EA8[eax*4]
                and        eax, 0FFh
                xor        edx, eax
                mov        eax, [esp+24h+arg_4]
                xor        edx, esi
                shr        ebx, 18h
                mov        [eax], bl
                mov        ebx, ecx
                shr        ebx, 10h
                mov        [eax+1], bl
                mov        ebx, ecx
                shr        ebx, 8
                mov        [eax+3], cl
                mov        ecx, [esp+24h+var_10]
                mov        [eax+2], bl
                mov        ebx, ecx
                shr        ebx, 18h
                mov        [eax+4], bl
                mov        ebx, ecx
                shr        ebx, 10h
                mov        [eax+5], bl
                mov        ebx, ecx
                shr        ebx, 8
                mov        [eax+7], cl
                mov        ecx, [esp+24h+arg_0]
                mov        [eax+6], bl
                mov        ebx, ecx
                shr        ebx, 18h
                mov        [eax+8], bl
                mov        ebx, ecx
                shr        ebx, 10h
                mov        [eax+9], bl
                mov        ebx, ecx
                mov        [eax+0Bh], cl
                mov        ecx, edx
                shr        ecx, 18h
                mov        [eax+0Ch], cl
                mov        ecx, edx
                shr        ecx, 10h
                mov        [eax+0Dh], cl
                mov        ecx, edx
                shr        ebx, 8
                shr        ecx, 8
                pop        edi
                mov        [eax+0Ah], bl
                pop        esi
                mov        [eax+0Eh], cl
                mov        [eax+0Fh], dl
                pop        ebx
                add        esp, 18h
                retn

[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
免费 0
打赏
分享
最新回复 (18)
雪    币: 398
活跃值: (343)
能力值: (RANK:650 )
在线值:
发帖
回帖
粉丝
shoooo 16 2005-3-2 17:03
2
0
类blowfish
雪    币: 213
活跃值: (41)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
coolfree 2005-3-2 19:12
3
0
谢谢提示,我大致看了一下,还是有疑问
blowfish 有 pbox,sbox,pbox+sbox应该有5个表,但是,上面的算法,仅仅用 四个表,而且,上面的算法,每次都是解密的数据都是 16 字节
而且,四个表的数据很有特点,举例如下
4126a8表:a1b2c3d4,e5f6g7h8,.......
4122a8表:d4a1b2c3,h8e5f6g7,.....
411ea8表:c3d4a1b2,g7h8e5f6,....
412aa8表:b2c3d4a1,f6g7h8e5,.....
雪    币: 398
活跃值: (343)
能力值: (RANK:650 )
在线值:
发帖
回帖
粉丝
shoooo 16 2005-3-2 19:13
4
0
最初由 coolfree 发布
谢谢提示,我大致看了一下,还是有疑问
blowfish 有 pbox,sbox,pbox+sbox应该有5个表,但是,上面的算法,仅仅用 四个表,而且,上面的算法,每次都是解密的数据都是 16 字节
而且,四个表的数据很有特点,举例如下
4126a8表:a1b2c3d4,e5f6g7h8,.......
4122a8表:d4a1b2c3,h8e5f6g7,.....
........


不要着急:)我也不是很肯定的
先在本版搜索一下关键字blowfish,也许就有答案了
雪    币: 3686
活跃值: (1036)
能力值: (RANK:760 )
在线值:
发帖
回帖
粉丝
cnbragon 18 2005-3-2 19:33
5
0
根据你说的四个表的特征以及判断为AES,但是你帖的汇编代码不同于标准的AES
雪    币: 398
活跃值: (343)
能力值: (RANK:650 )
在线值:
发帖
回帖
粉丝
shoooo 16 2005-3-2 19:41
6
0
最初由 cnbragon 发布
根据你说的四个表的特征以及判断为AES,但是你帖的汇编代码不同于标准的AES



这个把握比较大
雪    币: 213
活跃值: (41)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
coolfree 2005-3-2 20:30
7
0
谢谢各位
表的数据不会有错误,代码有差异,难道是变化了?
雪    币: 3686
活跃值: (1036)
能力值: (RANK:760 )
在线值:
发帖
回帖
粉丝
cnbragon 18 2005-3-2 20:37
8
0
不一定,实现的算法很多,用PEiD的kanal插件看看
雪    币: 213
活跃值: (41)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
coolfree 2005-3-2 20:38
9
0
下面的代码是把输入的 16 byte 变成 4 个dword
比如,输入的是 a1b2c3d4e5f6g7h8i9....,变成
a1b2c3d4,e5f6g7h8,...然后把这4个dword,和另外的值分别进行 xor
sub  esp, 18h
    mov  eax, [esp+18h+arg_0]  '指向要解密得数据 16 byte
    xor  ecx, ecx
    xor  edx, edx
    push  ebx
    mov  cl, [eax+1]
    mov  dh, [eax]
    xor  edx, ecx
    xor  ecx, ecx
    mov  cl, [eax+2]
    xor  ebx, ebx
    shl  edx, 8
    xor  edx, ecx
    mov  bl, [eax+5]
    xor  ecx, ecx
    push  esi
    mov  cl, [eax+3]
    push  edi
    shl  edx, 8
    xor  edx, ecx
    xor  ecx, ecx
    mov  ch, [eax+4]
    mov  edi, ds:dword_4132A8
    xor  ecx, ebx
    xor  ebx, ebx
    mov  bl, [eax+6]
    xor  edx, edi
    shl  ecx, 8
    xor  ecx, ebx
    xor  ebx, ebx
    mov  bl, [eax+7]
    mov  [esp+24h+var_C], edx
    shl  ecx, 8
    xor  ecx, ebx
    mov  ebx, ds:dword_4132AC
    xor  ecx, ebx
    xor  ebx, ebx
    mov  bl, [eax+9]
    mov  esi, ecx
    xor  ecx, ecx
    mov  [esp+24h+var_10], esi
    mov  ch, [eax+8]
    xor  ecx, ebx
    xor  ebx, ebx
    mov  bl, [eax+0Ah]
    shl  ecx, 8
    xor  ecx, ebx
    xor  ebx, ebx
    mov  bl, [eax+0Bh]
    shl  ecx, 8
    xor  ecx, ebx
    mov  ebx, ds:dword_4132B0
    xor  ecx, ebx
    xor  ebx, ebx
    mov  bl, [eax+0Dh]
    mov  [esp+24h+arg_0], ecx
    xor  ecx, ecx
    mov  ch, [eax+0Ch]
    xor  ecx, ebx
    xor  ebx, ebx
    mov  bl, [eax+0Eh]
    shl  ecx, 8
    xor  ecx, ebx
    xor  ebx, ebx
    mov  bl, [eax+0Fh]
    xor  eax, eax
    shl  ecx, 8
    xor  ecx, ebx
    mov  ebx, ds:dword_4132B4
    xor  ecx, ebx
    mov  [esp+24h+var_4], ecx
雪    币: 3686
活跃值: (1036)
能力值: (RANK:760 )
在线值:
发帖
回帖
粉丝
cnbragon 18 2005-3-2 20:42
10
0
差不多就是AES,用PEiD的kanal插件看看,是不是有Rijndael的S-box
雪    币: 213
活跃值: (41)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
coolfree 2005-3-2 20:43
11
0
用 peid 的 kanal 插件(版本是 2.82)看了.没有发现
雪    币: 3686
活跃值: (1036)
能力值: (RANK:760 )
在线值:
发帖
回帖
粉丝
cnbragon 18 2005-3-2 20:45
12
0
那发现什么了
雪    币: 397
活跃值: (799)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
wsy 2005-3-2 20:59
13
0
三个特征像aes
四个表,字节操作,16字节分组
雪    币: 213
活跃值: (41)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
coolfree 2005-3-2 21:20
14
0
No known crypto signatures found  (in 0.7s)
雪    币: 97
活跃值: (135)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
采臣·宁 1 2005-3-3 00:21
15
0
代码量这么小,我一般就是DUMP代码下来,再内连汇编。又快又准,什么变形MD5,变形DES,都全部克隆
雪    币: 213
活跃值: (41)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
coolfree 2005-3-3 00:30
16
0
对啊,好主意,我也这样做
雪    币: 213
活跃值: (41)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
coolfree 2005-3-3 23:30
17
0
还得请教朋友,这样即使能把数据还原,但是,不能把新数据重新加密,还得请朋友指点一下,这个到底是什么算法
雪    币: 97
活跃值: (135)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
采臣·宁 1 2005-3-3 23:47
18
0
嗯,对于HASH算法可以DUMP代码的,你可以把程序放上来,大家才好看是什么算法啊。国产及商业程序就不要放了
雪    币: 213
活跃值: (41)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
coolfree 2005-3-3 23:53
19
0
呵呵,懂得规矩,所以,仅仅放上加密部分.
对于算法分析,现在只能说当时没有好好学高数,以至于很头痛
游客
登录 | 注册 方可回帖
返回