以下是一个对用户名的浮点运算 循环
004084A4 |> /8B45 F8 /MOV EAX,DWORD PTR SS:[EBP-8]
004084A7 |. |8A4418 FF |MOV AL,BYTE PTR DS:[EAX+EBX-1] 用户名第i字节
004084AB |. |25 FF000000 |AND EAX,0FF
004084B0 |. |8945 F4 |MOV DWORD PTR SS:[EBP-C],EAX
004084B3 |. |DB45 F4 |FILD DWORD PTR SS:[EBP-C]
004084B6 |. |8B45 F8 |MOV EAX,DWORD PTR SS:[EBP-8]
004084B9 |. |8A0418 |MOV AL,BYTE PTR DS:[EAX+EBX] 用户名第i + 1字节
004084BC |. |25 FF000000 |AND EAX,0FF
004084C1 |. |8945 F0 |MOV DWORD PTR SS:[EBP-10],EAX
004084C4 |. |DB45 F0 |FILD DWORD PTR SS:[EBP-10]
004084C7 |. |DEF9 |FDIVP ST(1),ST 第一字节除以第二字节
004084C9 |. |D80D 48854000 |FMUL DWORD PTR DS:[408548] 乘以一个定值
004084CF |. |8B45 F8 |MOV EAX,DWORD PTR SS:[EBP-8]
004084D2 |. |0FB64418 FF |MOVZX EAX,BYTE PTR DS:[EAX+EBX-1]
004084D7 |. |8B55 F8 |MOV EDX,DWORD PTR SS:[EBP-8]
004084DA |. |0FB6141A |MOVZX EDX,BYTE PTR DS:[EDX+EBX]
004084DE |. |F7EA |IMUL EDX 第一字节乘以第二字节
004084E0 |. |8945 EC |MOV DWORD PTR SS:[EBP-14],EAX
004084E3 |. |DB45 EC |FILD DWORD PTR SS:[EBP-14]
004084E6 |. |DEC9 |FMULP ST(1),ST 再乘以上面的定值
004084E8 |. |E8 CFA1FFFF |CALL Crackme.004026BC
004084ED |. |03F8 |ADD EDI,EAX
004084EF |. |43 |INC EBX
004084F0 |. |4E |DEC ESI
004084F1 |.^\75 B1 \JNZ SHORT Crackme.004084A4
我写的 有些字符会有误差
一样的用户名 比如 111111 aaaaaa 就可以 望高手赐教
我的
for (int i = 0;i < strlen(username) - 1;i++)
{
nbufone = username[i];
nbuftwo = username[i + 1];
nbufThree = nbufone / nbuftwo;
nbufThree = nbufThree * 8556835.;
nBuf64 = nbufone * nbuftwo * nbufThree;
nNum = nNum + *((DWORD*)&nBuf64);
}
传了附件
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)