004AD4B0 |. F7F9 IDIV ECX ; 假码长度/0x11
004AD4B2 |. 8BF2 MOV ESI, EDX ; 余数赋ESI,mod
004AD4B4 |. 8B45 FC MOV EAX, [LOCAL.1]
004AD4B7 |. E8 0C7BF5FF CALL MFR.00404FC8 ; 再取假码长度keylen
004AD4BC |. 8BD8 MOV EBX, EAX
004AD4BE |. 85DB TEST EBX, EBX
004AD4C0 |. 7E 23 JLE SHORT MFR.004AD4E5 ; 小於等於0则跳走
004AD4C2 |. B9 01000000 MOV ECX, 0x1 ; 下标i
004AD4C7 |> 8B45 FC /MOV EAX, [LOCAL.1] ; 假码
004AD4CA |. 0FB64408 FF |MOVZX EAX, BYTE PTR DS:[EAX+ECX-0x1] ; key[i]
004AD4CF |. 03F0 |ADD ESI, EAX ; key[i]+mod
004AD4D1 |. 8BC1 |MOV EAX, ECX ; 下标i
004AD4D3 |. 25 01000080 |AND EAX, 0x80000001 ; 变为奇数
004AD4D8 |. 79 05 |JNS SHORT MFR.004AD4DF ; 不为负则跳
004AD4DA |. 48 |DEC EAX
004AD4DB |. 83C8 FE |OR EAX, 0xFFFFFFFE
004AD4DE |. 40 |INC EAX
004AD4DF |> 03F0 |ADD ESI, EAX ; mod再加上i,i为奇则是1,为偶则为0
004AD4E1 |. 41 |INC ECX ; ++i
004AD4E2 |. 4B |DEC EBX ; keylen-=1
004AD4E3 |.^ 75 E2 \JNZ SHORT MFR.004AD4C7
004AD4E5 |> 8B45 FC MOV EAX, [LOCAL.1] ; 假码
004AD4E8 |. E8 DB7AF5FF CALL MFR.00404FC8 ; 取假码长度
004AD4ED |. 8BD8 MOV EBX, EAX ; kenlen
004AD4EF |. 85DB TEST EBX, EBX
004AD4F1 |. 7E 2F JLE SHORT MFR.004AD522 ; 再次判断是否小於或等於0
004AD4F3 |. B9 01000000 MOV ECX, 0x1 ; 下标i
004AD4F8 |> 8B45 FC /MOV EAX, [LOCAL.1] ; 假码
004AD4FB |. 0FB64408 FF |MOVZX EAX, BYTE PTR DS:[EAX+ECX-0x1] ; user[i]
004AD500 |. BF 06000000 |MOV EDI, 0x6
004AD505 |. 33D2 |XOR EDX, EDX ; EDX作为余数
004AD507 |. F7F7 |DIV EDI ; user[i]/6
004AD509 |. 42 |INC EDX ; 余数+1
004AD50A |. 8BC1 |MOV EAX, ECX ; j=i
004AD50C |. 25 03000080 |AND EAX, 0x80000003 ; 转成j小於3的数
004AD511 |. 79 05 |JNS SHORT MFR.004AD518
004AD513 |. 48 |DEC EAX
004AD514 |. 83C8 FC |OR EAX, 0xFFFFFFFC
004AD517 |. 40 |INC EAX
004AD518 |> 40 |INC EAX ; ++j
004AD519 |. 0FAFD0 |IMUL EDX, EAX ; k*j
004AD51C |. 03F2 |ADD ESI, EDX ; 再加上esi,即mod
004AD51E |. 41 |INC ECX ; ++i
004AD51F |. 4B |DEC EBX ; keylen-1
004AD520 |.^ 75 D6 \JNZ SHORT MFR.004AD4F8
004AD522 |> 81FE E3080000 CMP ESI, 0x8E3 ; 和是一定要0x8e3
最终计算的值一定要是8e3,但这样不知道怎麽写注册鸡,後面懂了再写。