深入探究:Brad Soblesky.2的算法分析
作者:孟翔飞 来源:赛迪论坛 添加时间:2006-5-26 13:16:58题目:Brad Soblesky.2的算法分析
软件:Brad Soblesky.2
工具:PEID,OD
破文作者:rockandtcl
个人网页:http://18232.tianyablog.com
介绍:这是从《加密解密实战攻略》的光盘上拿来的,在第七章。书中是通过WINHEX查看内存方式得到注册码的,最近的我几乎痴迷的对算法有了很大的破解愿望。所以就做了算法分析。有不足的地方和错误的地方还请指教,谢谢!
首先运行下
输入注册名:rockandtcl
输入注册码:123456789
出现错误提示:
好开始破解
用PEID看了下发现无壳
用OD载入,我比较喜欢的是查看参考字符串,于是就找到了个,双击进入CPU查看。
往上找呀找呀,历经了千辛万苦总算被我找到断点(要不怎么说我菜呢),呵呵。设置断点,重新载入
还是输入刚才的注册名和注册码
现在开始分析代码:
0040156D |. E8 DE020000 call Brad_Sob.00401850
关键断点
00401572 |. 8945 E4 mov dword ptr ss:[ebp-1C],eax
00401575 |. 837D E4 05 cmp dword ptr ss:[ebp-1C],5
00401579 |. 7D 43 jge short Brad_Sob.004015BE
比较注册名是否大于等于5位,如果成立就跳到循环位置。
0040157B |. 6A 40 push 40
0040157D |. 68 20404000 push Brad_Sob.00404020
; ASCII "CrackMe"
00401582 |. 68 28404000 push Brad_Sob.00404028
; ASCII "User Name must have at least 5 characters."
代码省略..............
004015BE |> C745 E0 000>mov dword ptr ss:[ebp-20],0
计算前清零,以后这个就是保存计算结果的
004015C5 |. EB 09 jmp short Brad_Sob.004015D0
以下是循环部分。不过第一次循环是从004015D0 mov eax,dword ptr ss:[ebp-20]开始的
004015C7 |> 8B55 E0 /mov edx,dword ptr ss:[ebp-20]
004015CA |. 83C2 01 |add edx,1
004015CD |. 8955 E0 |mov dword ptr ss:[ebp-20],edx
004015D0 |> 8B45 E0 mov eax,dword ptr ss:[ebp-20]
004015D3 |. 3B45 E4 |cmp eax,dword ptr ss:[ebp-1C]
004015D6 |. 7D 42 |jge short Brad_Sob.0040161A