第一篇Crackme破文,第一个keygen

在看雪论坛上看到一个Crackme,下下来练练手。

 

打开EXE文件,在Name和key处随便输入,点击注册,弹出“Wrong Code”的提示框,如下图所示:

 

然后使用PEiD,结果为MASM32 / TASM32,说明这个程序采用汇编语言编写,并且没有加壳。将这个EXE文件拖入OD,尝试着在GetDlgItemTextA和GetDlgItemTextW处下断,然后F9运行,输入Name和Key后,程序停在了GetDlgItemTextA处,如下图所示:

 

然后F8单步运行,直到弹出“Wrong Code”的提示框,如下图所示:

 

 

 

根据代码运行流程,查找到弹出错误提示框的判断语句,如下图所示:

 

 

这段代码的功能是对我们输入的Key和一个程序中生成的字符串("HNT-7440-1347-3820-GP")的长度进行比较,由于二者的长度不等,故弹出错误提示框。我又继续阅读了下面几句代码:

 

 

这段代码对我们输入的Key和一个程序中生成的字符串("HNT-7440-1347-3820-GP")进行比较,如果这两个字符串不相等,则弹出错误提示框。可见,"HNT-7440-1347-3820-GP"就是我们输入的Name所对应的Key。输入Name和Key进行验证,结果正确,如图:

 

 

然后单步跟踪,分析Key生成算法,完成了keygen,如图:

 

 

keygen的关键代码如下:

 

总体来说,这个Crackme并不是很难。如果只是找一个key,用OD运行一遍程序即可,如果要写出keygen,就需要分析一下key生成算法,这个稍微有点麻烦。

总结:

1、下断很重要

2、汇编基础很重要

3、OD和IDA的使用还不够灵活

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值