首页
社区
课程
招聘
[旧帖] [求助]很简单的语句,但得出的结果令人费解。 0.00雪花
发表于: 2008-3-1 18:33 3390

[旧帖] [求助]很简单的语句,但得出的结果令人费解。 0.00雪花

2008-3-1 18:33
3390
0040128A  |.  33C0          xor     eax, eax
0040128C  |.  33DB          xor     ebx, ebx
0040128E  |.  33D2          xor     edx, edx
00401290  |.  33C9          xor     ecx, ecx
00401292  |.  B8 F8E04000   mov     eax, 0040E0F8                ;  ASCII "FFFFFE5F"
00401297  |.  03D8          add     ebx, eax
00401299  |.  33CB          xor     ecx, ebx
0040129B  |.  0FAFCB        imul    ecx, ebx
0040129E  |.  2BC8          sub     ecx, eax

执行完 xor ecx,ebx 之后 eax, ebx, ecx 的值都一样了都是 ASCII "FFFFFE5F"

为什么 imul ecx,ebx   
           sub ecx,eax
这两句之后不论 40E0F8处的值是什么,ecx 的值都变成 41720F48  ?????

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 485
活跃值: (12)
能力值: ( LV9,RANK:490 )
在线值:
发帖
回帖
粉丝
2
0040128A  |.  33C0          xor     eax, eax      eax=0
0040128C  |.  33DB          xor     ebx, ebx      ebx=0
0040128E  |.  33D2          xor     edx, edx      edx=0
00401290  |.  33C9          xor     ecx, ecx       ecx=0
00401292  |.  B8 F8E04000   mov     eax, 0040E0F8      eax=40E0F8
00401297  |.  03D8          add     ebx, eax      因ebx=0,故此处相当于ebx=eax=40E0F8
00401299  |.  33CB          xor     ecx, ebx      因ecx=0,故此处相当于ecx=ebx=40E0F8
0040129B  |.  0FAFCB        imul    ecx, ebx   ecx=ecx*ebx =(1071)41B2F040
0040129E  |.  2BC8          sub     ecx, eax     ecx=ecx-eax =(1071)41B2F040-40E0F8=(1071)41720F48
2008-3-1 18:48
0
雪    币: 162
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
恩,明白了,谢谢
2008-3-1 20:54
0
雪    币: 100
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
问下这句xor     ecx, ebx      因ecx=0,故此处相当于ecx=ebx=40E0F8是不是可以用MOV指令来代替的呢?
用XOR和MOV会有不同的地方吗?还是他用XOR是想来影响标志位呢?
2008-3-2 18:23
0
雪    币: 162
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
这里因该可以用 mov 来代替 xor,结果是一样的。

上面的代码是一个crackme里用来生成注册码的最后一部分的。

一开始 我把 mov     eax, 0040E0F8                ;  ASCII "FFFFFE5F"
中eax的值当成了字符串,没想到注册码的最后一部分是和用户名无关的
2008-3-2 21:21
0
游客
登录 | 注册 方可回帖
返回
//