首页
社区
课程
招聘
[求助]CrackMe中浮点运算的疑惑
发表于: 2009-5-7 03:43 3253

[求助]CrackMe中浮点运算的疑惑

2009-5-7 03:43
3253
以下是一个对用户名的浮点运算 循环

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);
        }

传了附件

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 2110
活跃值: (21)
能力值: (RANK:260 )
在线值:
发帖
回帖
粉丝
2
C语言中的整数运算,结果仍为整数。

比如,3/2,结果是1

要用浮点运算,需要用浮点数类型,表达式中至少有一个是浮点类型(变量或常量的类型是浮点都可以)。

比如,3/2.0,结果是1.5
2009-5-7 10:32
0
游客
登录 | 注册 方可回帖
返回
//