170529 逆向-序列号保护

来源:互联网 发布:永久域名注册网站 编辑:程序博客网 时间:2024/06/03 03:20

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)

原创粉丝点击