能力值:
( 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
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
恩,明白了,谢谢
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
问下这句xor ecx, ebx 因ecx=0,故此处相当于ecx=ebx=40E0F8是不是可以用MOV指令来代替的呢?
用XOR和MOV会有不同的地方吗?还是他用XOR是想来影响标志位呢?
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
这里因该可以用 mov 来代替 xor,结果是一样的。
上面的代码是一个crackme里用来生成注册码的最后一部分的。
一开始 我把 mov eax, 0040E0F8 ; ASCII "FFFFFE5F"
中eax的值当成了字符串,没想到注册码的最后一部分是和用户名无关的
|
|
|