170529 逆向-序列号保护

1625-5 王子昂 总结《2017年5月29日》 【连续第240天总结】

A. 序列号保护方式

B. 软件验证序列号的过程,其实就是验证用户名和序列号之间的数学映射关系。这个映射关系是由软件的设计者制定的,因此各个软件生成序列号的算法是不同的。

根据映射关系的不同,程序检查注册码通常有4种方法:

1.以用户名等信息作为自变量,通过函数F变换之后得到注册码

这种方法是最不安全的,因为验证时需要在客户端进行注册码生成,无论函数F有多么复杂,揭秘则只需把F函数的实现代码从软件中提取出来就可制造注册机。

2.通过注册码验证用户名的正确性

这种要求F是可逆变换,在客户端不进行注册码生成,而是进行用户名验证。这样生成注册码的函数F没有直接出现在客户端中,稍微安全一些。

解决方法:可通过F的逆函数(直接存在于客户端中)来找出F函数;也可给出一个用户名,穷举得到注册码;给出一个序列号,计算得到用户名

3.通过对等函数检查注册码

这种与上一种方法没有明显区别,都是函数F的推广

4.同时采用用户名和序列号作为自变量,即采用二元函数

当二元函数的值为一个特定值时则判断合法。这个算法看上去很不错,但是可能会失去用户名与序列号的一一对应关系。

攻击方法:

一种是通过跟踪输入注册码之后 的判断,从而找到注册码。由于软件需要调用一些标准的API来将编辑框中输入的注册码字符拷贝到自己的缓冲区中,因此对API设断点则可以跟踪。

另一种方法就是跟踪程序启动时对注册码的判断。由于程序每次启动时都需要将注册码读出来加以判断,从而决定是否以注册码的模式工作。

C. 明日计划

CrackMe(5)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值