-
-
[求助][求助]磁盘逻辑序列号计算注册码的逆向算法困惑
-
-
[求助][求助]磁盘逻辑序列号计算注册码的逆向算法困惑
初学逆向,好不容易跟踪了一个软件,等到写逆向算法的时候,仔细推敲变量的时候傻眼了
注册时候软件显示以下两个数值
computerkey: 001P1E38(这个值经过观察试验成功一次加一)
network add:xxxxxxxxxx这个肯定不变了,网卡地址
license type :one day 注册类型选择
license key:这个要我们输入了
经过跟踪分析算法发现
程序在计算注册码的时候用了一下5个数值
A=磁盘逻辑序列号
B=软件版本号
C=NTFS/FAT32
D=网卡序列号
E=注册成功次数(该软件注册后过一段就会过期,不同的注册模式使用时间不同,应该是变相的computerkey了)
array=0123456789ABCDEFGHIGKLMNOPQRSTUVWXYZ
计算注册码是用一个函数依次处理这5个数值然后把返回值累加得到值F
即:F=FUN(A)+FUN(B)+FUN(C)+FUN(D)+FUN(E)
然后通过除法运算G=F%36
取array[G]作为注册码,一共取八次得到8位注册码,可喜的是次注册码会明码显示在堆栈中
通过分析小弟有以下困惑,甚为不解?
如果写出注册机是不是只能在本机注册成功(因为硬盘序列号重复可能性太小了)?对付其他机器可能就不行了?
针对不同的机器这个磁盘逻辑序列相当于不确定的量了,如何绕过这个呢?
各位大侠是否有同样的经历,望指点一二。从哪里入手分析寻找突破呢?
[招生]系统0day安全班,企业级设备固件漏洞挖掘,Linux平台漏洞挖掘!