首页
社区
课程
招聘
[原创]Crackme 05 的详解
发表于: 2011-8-20 19:15 11921

[原创]Crackme 05 的详解

2011-8-20 19:15
11921

【破文标题】Crackme 05 的详解
【难度级别】初入门的新手
【下载地址】见附件
【破解工具】OD,peid
【加壳方式】无壳
【保护方式】无Anti-debug
【破解声明】本人破解很菜,此CrackMe算是入门级的,希望以此作为一些简单的案例,给我室友以及才开始接触逆向的各位兄弟,希望大家有所收获,如果不出意外这是一个长期的学习笔记,请大家多多指教。
【前文连接】http://bbs.pediy.com/showthread.php?t=138271
及才开始接触逆向的各位兄弟,希望大家有所收获,如果不出意外这是一个长期的学习笔记,请大家多多指教。
【备  注】
1.老手勿看。
2.前段时候回家和高中同学聚会,学习什么的就偷了点懒,更新速度慢了些,不过还是希望大家多多支持。
3.过段时间CrackMe比赛就要开始了,大家提早热热身找找感觉噢

   老规矩,首先用PEiD载入。如图,我们发现显示的是"什么也没发现",可能加了壳的,但是我们观察区段信息和导入表的的API又发现貌似是未加壳滴。所以,我们直接用OD加载,通过对反汇编代码的观察,我们大致可以确定是masm编写的。对GetWindowTextA这个API下断点,然后按F9,程序跑起来。在"help"菜单下点击"registra",弹出了输入用户名和密码的对话框。我们随便输入一组"loongzyd","1234567890"。点击"OK"Button,我们来到了0x4014AD处,我们发现这里调用了两次GetWindowTextA,显示这是获取我们输入的用户名和密码,接下来的几十行就是整个算法的处理。
    首先,程序将我们输入的用户名和密码分别存放在两个数组中,其中要求用户名的长度要大于等于6并且最多只读入前10位的字符,而密码的长度必须为10。然后通过一个循环来判断输入的密码字符串的字符是否都是数字字符(0-9)或者B-F,只要有一个字符不符合要求就失败,接下来通过另外一个循环将输入的用户名字符串的字符的asc码之和模256的值保存(即取其低16位)


0040154B   .  0FB605 F33140>MOVZX EAX,BYTE PTR DS:[4031F3]
00401552   .  8AC8          MOV CL,AL                                ;  密码前2个字符处理之后的果
00401554   .  2ACB          SUB CL,BL                                ;  减去用户名字符串的和的低16的值
00401556   .  80F9 04       CMP CL,4                                 ;  如果大于0x4则失败
00401559   .  7F 63         JG SHORT Pythagor.004015BE
0040155B   .  80F9 FC       CMP CL,0FC                               ;  如果小于-4则失败
0040155E   .  7C 5E         JL SHORT Pythagor.004015BE


00401560   .  F7E0          MUL EAX                                  ;  0x12*0x12(密

码字符串前2个字符处理之后的数值计算其平方)
00401562   .  8BD8          MOV EBX,EAX
00401564   .  0FB705 F43140>MOVZX EAX,WORD PTR DS:[4031F4]           ;  

0x3456*0x3456(密码字符串第3-6位字符处理之后的数值计算其平方)
0040156B   .  F7E0          MUL EAX
0040156D   .  03D8          ADD EBX,EAX                              ;  前两个值相加
0040156F   .  0FB705 F63140>MOVZX EAX,WORD PTR DS:[4031F6]
00401576   .  F7E0          MUL EAX                                  ;  

0x7890*0x7890(密码字符串第7-10位字符处理之后的数值计算其平方)
00401578   .  33C3          XOR EAX,EBX                              ;  

0x12*0x12+0x3456*0x3456==0x7890*0x7890(两个必须相等)
0040157A   .  75 42         JNZ SHORT Pythagor.004015BE

0040157C   .  66:A1 F631400>MOV AX,WORD PTR DS:[4031F6]
00401582   .  66:2B05 F4314>SUB AX,WORD PTR DS:[4031F4]              ;  0x7890-0x3456
00401589   .  2C 08         SUB AL,8                                 ;  0x90-0x56 == 

0x08
0040158B   .  75 31         JNZ SHORT Pythagor.004015BE
0040158D   .  6A 30         PUSH 30                                  ; /Style = 

MB_OK|MB_ICONEXCLAMATION|MB_APPLMODAL
0040158F   .  68 B0314000   PUSH Pythagor.004031B0                   ; |Title = ":-) 

Well done!!!"
00401594   .  68 7F314000   PUSH Pythagor.0040317F                   ; |Text = 

"Bravo, hai trovato il seriale di questo CrackMe!"
00401599   .  FF75 08       PUSH DWORD PTR SS:[EBP+8]                ; |hOwner
0040159C   .  E8 3D010000   CALL <JMP.&USER32.MessageBoxA>           ; \MessageBoxA

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

上传的附件:
收藏
免费 7
支持
分享
最新回复 (13)
雪    币: 3688
活跃值: (4242)
能力值: (RANK:215 )
在线值:
发帖
回帖
粉丝
2
分析的很详细,学习了。
2011-8-20 20:05
0
雪    币: 697
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
续集5出来了哈,顶一个
2011-8-20 20:09
0
雪    币: 3572
活跃值: (760)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
菜鸟顶个。。。。
2011-8-21 00:23
0
雪    币: 89
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
不错不错  学习学习
2011-8-22 09:30
0
雪    币: 1015
活跃值: (235)
能力值: ( LV12,RANK:440 )
在线值:
发帖
回帖
粉丝
6
光看可没意思,你也来几个嘛
2011-8-22 18:18
0
雪    币: 193
活跃值: (1215)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
太详细了,有空学习一下
2011-8-23 09:41
0
雪    币: 21
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
为啥版主的crack就能拿精华。。。普通人的就拿不了?
2011-8-23 10:02
0
雪    币: 1015
活跃值: (235)
能力值: ( LV12,RANK:440 )
在线值:
发帖
回帖
粉丝
9
回复楼上:
          首先,CrackMe<>ReverseMe版块至今一共有800篇左右的精华文章(包括"精华","优秀","关注"),显然这不可能都是版主们写的,所以楼主这句话本身是不对滴
          其次,我的实习版主是前几天才任命的,除了这篇文章外其他都是在担任实习版主之前写的。其他版主也一样,在担任版主前后都有文章,所以是不是版主与有没有精华文章没有必然关系,也没有规定说版主的文章不能评精华文章吧。
          然后,如果说楼主对于之前您所谓"普通人"的CrackMe的文章认为可以达到精华标准的文章,请跟贴列出,我会和其他版主商量,因为之前我没有相应权限,而且没有特殊情况一般不会对以前的文章进行改动。
         最后,引用论坛规则:

1.精华帖:有正确的写作态度,文章体裁、内容字数不做限定。
1).精华帖仅针对文章(包括程序的源码),纯工具帖请不要设为精华;(特别说明:『资源下载』版块的精华不计数)
2).精华帖必须是有一定质量和技术含量的原创文章,转贴他人的不算。转帖的特别优秀文章请标注“转帖”。
3).资料性或技术性的整理文档视情况决定
4).正确翻译的有一定技术价值的文章可设置精华。
5).目前精华只能对主题而言,对某单独的帖子的精华处理由版主权宜实施(如将帖子分离出来设置精华)。
  2.关注帖:所讨论的话题和帖子内容属于优秀帖范畴,有保留价值,可以打上“关注”标签。
3.转帖:从网络上转载他人发表的优秀帖子。
  4.置顶帖:在通常意义上,“置顶”应理解为是对文章内容所涉及思想、涵盖话题值得探讨的一种肯定,只是建议讨论而非认可。置顶帖同样需要有理有据,观点明确,内容完整。其次,也可以是论坛公告等等。置顶的期限不宜过长,以三日至一周之内为限最好,版主有权灵活调整。

      精华贴的目的在于提醒读者该文章具有一定的价值以及可读性。

       近段时间板块的主题发帖量较少,希望大家不要保留,多给大家奉献一些好的文章。

       不知道,给您的解释是否能够让您满意,如果您还有疑问的话可以继续跟帖说明或者向其他正式版主以及论坛管理人员说明,谢谢。
2011-8-23 11:31
0
雪    币: 123
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
楼主第三个限制条件不太明白,
“现在还剩最后一个限制条件:c%256 - b%256必须等于8(此为限制条件3).”
      感觉这个算法结果不对。
我是菜鸟,有弄错的地方请多包涵。谢谢!
2011-8-24 00:56
0
雪    币: 1015
活跃值: (235)
能力值: ( LV12,RANK:440 )
在线值:
发帖
回帖
粉丝
11
那么,我可以理解为楼上您前两个限制条件明白了的


前面我们得到三个数据分别分别计为a,b,c(1-2,3-6,7-10位字符分别处理之后的数据),这三个值需要满足a*a + b*b = c*c,此为限制条件2.


0x4031F4里面的内容为b,0x4031F6里面的内容为c这个应该没有问题吧。

0040157C   .  66:A1 F631400>MOV AX,WORD PTR DS:[4031F6] ;Ax=c
00401582   .  66:2B05 F4314>SUB AX,WORD PTR DS:[4031F4] ; Ax=Ax-b         
00401589   .  2C 08         SUB AL,8    ;AL=(c-b)%256 - 8
0040158B   .  75 31         JNZ SHORT Pythagor.004015BE   AL == 0

AL为AX的低8位,2的8此方为256= =

这最后一个限制条件确实有点小失误:
(c-b)%256必须等于8,之前忽略c的低8位的值小于b的低8位的值产生c的低8位向高8位借位的情况,导致最后的在注册码计算的时候可能会漏掉有效地序列号。
不知道您指的是否是这个,非常感谢
2011-8-24 11:55
0
雪    币: 47147
活跃值: (20450)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
12
这篇文章应该拿精华。
由于老版主们比较忙,许多帖子没有及时打理 ,loongzyd 会将近期论坛帖子扫描一遍,如果符合精华要求会设置的,论坛精华设置为四个档次:
1.酷帖
2.精华
3.优秀
4.关注

希望大家多多支持新版主的工作,谢谢!
2011-8-24 17:38
0
雪    币: 123
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
[QUOTE=loongzyd;993980]那么,我可以理解为楼上您前两个限制条件明白了的

0x4031F4里面的内容为b,0x4031F6里面的内容为c这个应该没有问题吧。

0040157C   .  66:A1 F631400>MOV AX,WORD PTR DS:[4031F6] ;Ax=c
00401...[/QUOTE]

嘿嘿、楼主真是客气,在考虑借位的时候我怎么都想不通,所以弱弱的问了一句。这样看来这第三个限制条件应该是可以改进的吧。
2011-8-26 09:42
0
雪    币: 1015
活跃值: (235)
能力值: ( LV12,RANK:440 )
在线值:
发帖
回帖
粉丝
14
呵呵,楼上你才客气了= = 应该直接指出来嘛!当初没有考虑仔细,惭愧,再次感谢噢!
2011-8-26 09:57
0
游客
登录 | 注册 方可回帖
返回
//