首页
社区
课程
招聘
[旧帖] [求助]非明码比较其中一句不明白,请指点! 0.00雪花
发表于: 2010-3-14 12:45 1382

[旧帖] [求助]非明码比较其中一句不明白,请指点! 0.00雪花

2010-3-14 12:45
1382
004011D4 0FBE81 57214000 movsx eax,byte ptr ds:[ecx+402157] ; eax=lpKeyBuf[ecx];取注册码第ecx+1个字符
004011DB 0FBE99 BB214000 movsx ebx,byte ptr ds:[ecx+4021BB] ; ebx=lpOut[0];取正确注册码第ecx+1个字符
004011E2 3BC3 cmp eax,ebx
004011E4 75 09 jnz short Crackme1.004011EF ; if(ebx!=eax) goto 004011EF(失败消息)不相等就失败;
004011E6 83F8 00 cmp eax,0
004011E9 74 19 je short Crackme1.00401204 ; if(eax==0) goto 00401204(成功消息);
; 此处可暴破
; 此处作者用eax==0判断字符取完
004011EB 41 inc ecx ; ecx=ecx+1;
004011EC ^ EB E6 jmp short Crackme1.004011D4 ; goto 004011D4(循环比较)继续下一位注册码比较;
[LEFT]004011EE C3 retn

cmp eax,0 这句的作用 实在是看不明白  

eax是第一个字符 前面的验证都过来了 怎么还要跟0进行比较?
作者说验证字符取完没有,就1个字符一次就去玩了啊   就这句看不懂 其他的没有问题
[/LEFT]

[课程]FART 脱壳王!加量不加价!FART作者讲授!

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 67
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
咋没有人指点一下呢
2010-3-14 13:03
0
雪    币: 2067
活跃值: (82)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
3
算是这个字符串比对函数的bug
cmp eax, 0 是在看看到结尾了没.
若你只输入一个字符,   'A' , 而真正的注册码又是以 'A'开头
就造成了 "作者说验证字符取完没有,就1个字符一次就去玩了啊"

以上是猜的. 是不是啊?
2010-3-14 14:20
0
雪    币: 521
活跃值: (10)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
4
cmp eax,0
应该是判断注册码是否到了最后一位,因为在C的字符串中字符串是以NULL结尾,用于判断是字符串的结束,而NULL在的ASCII码值在内存是 0 ,所以要和0比较
2010-3-17 22:59
0
游客
登录 | 注册 方可回帖
返回
//