004024CC <>|> 8A51 01 /mov dl,byte ptr ds:[ecx+1] ; 依次取假码的偶数位(2,4,6,8,10,12,14,16)位经上面循环变换后的结果,记为OU
004024CF |. 8A19 |mov bl,byte ptr ds:[ecx] ; 依次取假码的奇数位(1,3,5,7,9,11,13,15)经上面循环变换后的结果,记为QI
004024D1 |. C0E2 04 |shl dl,4 ; shl OU,4(实际就是反转ascii,如:02->20)
004024D4 |. 02D3 |add dl,bl ; (shl OU,4)+QI,每次结果记为A(i)
004024D6 |. 83C1 02 |add ecx,2 ; 移到下2个
004024D9 |. 885404 04 |mov byte ptr ss:[esp+eax+4],dl ; A(i)->[12ef9c]
004024DD |. 40 |inc eax ; 计数
004024DE |. 83F8 08 |cmp eax,8
004024E1 |.^ 7C E9 \jl short <QQPwd.loc_4024CC> ; 是否循环完
004024E3 |. 8A4424 07 mov al,byte ptr ss:[esp+7] ; A(4)[12ef9f]->al
004024E7 |. 8A5C24 04 mov bl,byte ptr ss:[esp+4] ; A(1)[12ef9c]->bl
004024EB |. 8A4C24 0B mov cl,byte ptr ss:[esp+B] ; A(8)[12efa3]->cl
004024EF |. 8A5424 05 mov dl,byte ptr ss:[esp+5] ; A(2)[12ef9d]->dl
004024F3 |. 32C3 xor al,bl ; xor A(4),A(1),结果记为B1
004024F5 |. 8A5C24 06 mov bl,byte ptr ss:[esp+6] ; A(3)->bl
004024F9 |. 32CA xor cl,dl ; xor A(8),A(2),结果记为B2
004024FB |. 8A5424 09 mov dl,byte ptr ss:[esp+9] ; A(6)->dl
004024FF |. 32D3 xor dl,bl ; xor A(6),A(3),结果记为B3
00402501 |. 8A5C24 08 mov bl,byte ptr ss:[esp+8] ; A(5)->bl
00402505 |. 325C24 0A xor bl,byte ptr ss:[esp+A] ; xor A(7),A(5),结果记为B4
00402509 |. 3C 55 cmp al,55
0040250B |. 75 35 jnz short <QQPwd.loc_402542> ; B1 !=55则跳
0040250D |. 80F9 6E cmp cl,6E
00402510 |. 75 30 jnz short <QQPwd.loc_402542> ; B2 !=6E则跳
00402512 |. 80FA 4E cmp dl,4E
00402515 |. 75 2B jnz short <QQPwd.loc_402542> ; B3 !=4E则跳
00402517 |. 80FB 19 cmp bl,19
0040251A |. 75 26 jnz short <QQPwd.loc_402542> ; B4 !=19则跳
0040251C |. 8D4C24 2C lea ecx,dword ptr ss:[esp+2C] ; 4024ae处循环变换后值保存地址->ecx
00402520 |. C74424 24 >mov dword ptr ss:[esp+24],-1
00402528 |. E8 5FC3000>call <QQPwd.sub_40E88C>
0040252D |. B8 0100000>mov eax,1
00402532 |. 5B pop ebx