简单演示程序序列号的破解


前言

本次破解的程序为一个简单演示程序,当输入错误的序列号时会弹出相关的错误信息,可知序列号为16位。

demo

一、测试平台

实验平台:VMware Workstation Pro,WIN 7系统,内存4GB,硬盘60GB
使用工具:demo.exe,OllyDbg
对OllyDbg的简单使用可以查看我的另一篇文章:OllyDbg使用

二、测试步骤

1.查找Message Box

当我们输入序列号错误时,系统会弹出输入错误的窗口,而且我们知道,弹出窗口函数一般为Message Box,从而我们可以以此作为突破点。使用查找名称功能,进行该函数查找,双击进入该函数以后,设置断点,运行程序,使用F7 F8单步调试功能,查看其返回主函数的位置。

主函数位置

2.比较函数选择

序列号判断我们知道肯定会使用cmp比较指令,所以我们选择最上面一个cmp指令设置断点,而后运行程序,若是程序会在断点处中止,即可知道该处为序列号判断的地方。
中断点

3.序列号寻找(前三部分)

进行比较总会有两个数值,一个是我们自己输入的值,另一个是正确的序列号,因此我们可以发现它判断的是[ESP+0x20]与CX,而通过地址查找我们发现EXP+0x20处存放的数据是我们的输入值1111,因此可以确定前四位序列号为cx所存放的值,为0836,而后进行验证发现正确,通过相同方法我们可以找到第二组四位序列号存放在dx中,第三组四位序列号存放在ax中,从而可以得到它们的值分别为:0004与0076。
破解

4.第四组序列号破解

当我们找完三组序列号后发现,第四组序列号并不是按照四个为一组进行比较的,所以我们并不能使用之前破解前三组时使用的方法,通过查看代码我们发现,后面有四个cmp比较指令,而我们判断它是将后面四位分开进行比较,而又因为我们刚开始并不明白0x69772661这个数字的含义,所以在这我使用了穷举法,进行暴力破解,发现正确的第四组第一个序列号为a,而后进行破解,我们发现我们都可以找到比较的双方,最后将四位组合而成第四组序列号,为aFF0,f与0会使用其ASCII码进行比较。并且在此过程中,我们可以使用地址查询,找到该地址存放的数据,与我们的输入数据比较后,更可以验证我们的验证正确性。
破解成功至此,该序列号破解成功。


总结

有任何问题都可以在评论区和我交流~~

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值