Crackme014

Crackme014 的逆向分析

 

1.程序观察

 

 

 

 2.简单查壳

 

 无壳,使用 VB 编写。

3.程序分析

使用 OD 载入程序,搜索字符串

 

 可以看到先前报错时,所提示的语句。

双击跟进程序。

在错误的字符串上方,有一个循环。

 

 循环的最开始,会进行一个比较。若是比较结果正确,会跳转到正确的提示代码处。

在循环的上方,还有一处关键的代码。

 

 程序先得到所输入序列号的长度,如果不为9,则跳转到错误提示。

所以序列号的程度应该是9位。

然后程序建立循环,就是上面那一张图上的大循环。
循环次数是 9 ,也就是序列号的位数。

 

然后程序将循环的次数,与 0x2 做异或运算

 

 循环的最后,程序将计算出来的值和我们输入的序列号作比较

 

 

 

 因为程序是单个单个进行比较的,所以循环要进行 9 次,一次不符合就会跳转到错误提示处。

这样我们就可以通过计算得到正确的序列号

第一位:1 xor 2 = 3
第二位:2 xor 2 = 0
第三位:3 xor 2 = 1
第四位:4 xor 2 = 6
第五位:5 xor 2 = 7
第六位:6 xor 2 = 4
第七位:7 xor 2 = 5
第八位:8 xor 2 = 10
第九位:9 xor 2 = 11

这时候或许就有疑问了,最后两个计算出来的是两位数,怎么办呢?

 

 可以看到,程序计算出来值之后,是取所得值右边的一位,所以最后的序列号是:301674501。

 

 

相关文件在我的 Github:https://github.com/UnreachableLove/160-Crackme/tree/master/Crackme014

 

转载于:https://www.cnblogs.com/white-album2/p/11530302.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值