好友
阅读权限10
听众
最后登录1970-1-1
|
本帖最后由 Steven_Hu 于 2019-6-21 09:05 编辑
上一篇:逆向笔记---160CrackMe之001(Acid Burn)
AfKayAs
0x01 环境与工具
系统:吾爱破解XP SP3
工具:PEiD,OD(ICE版本)
0x02 程序概览
程序概览1
程序界面很简单,只需输入用户名和序列号即可。
(这里应该再查一下壳,因为是比较简单的程序所以忘记截图了)
0x03 暴破流程
OD中F3载入程序,运行。输入任意的用户名/序列号,如:”123123/234234”,弹出错误窗口。F12暂停,ALT +F9返回用户领空,然后点击确定,来到下图所示位置:
暴破流程1
紧邻上方的call应该是调用MessageBox弹出提示框,继续往上翻代码,找到如下跳转:
暴破流程2
这个跳转是跳到错误窗口。而且从下面的注释可以看出,紧邻的代码应该是弹出爆破成功的窗口。所以把je short 004025E5用NOP填充,并保存,爆破成功:
暴破流程3
0x04 算法部分
大致思路如下:猜测输入随机用户名/注册码后,程序会生成一个正确的注册码然后与我们输入的进行比对,所以只要找到对应的生成码(这个程序中是形如 “AKA-XXXXXX”这样的字符串),然后尝试输入,如果可通过测试,则在生成的注册码上方寻找附近的call,最后逐个F7进行分析。
当然在这里,很多call都是调用的DLL,比如0040243F那里的call,进去后发现有一个主要的循环,是将EAX的值反复除以0x0A,然后得出的余数(存放在EDX)加上30,很明显是将一个十进制数转换为字符串。继续向上查看,可以发现这个算法不是很复杂,主要部分如下图:
算法部分1
首先获取用户名长度,然后用这个长度乘以0x17CFB,得出的结果在加上一个参数,这个参数是用户名第一个字符对应的ASCII码。
算法部分2
最后,得出的结果前面连接上字符串”AKA-”就得出最终注册码。
C语言代码如下:
算法部分3
|
免费评分
-
查看全部评分
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|