MicroStation 是国际上和AutoCAD齐名的二维和三维CAD设计软件,terramatch (tmatch)是其一个插件,该插件需要注册,我们就来把它解除之。
提示输入名字,注册码等信息。按照这个对话框至少可看出计算机名被绑定了。里面有试用时间的限制。
思路一:
因为试用时候跟正版的功能是一样的,首先可以考虑能否把试用时间设置为无限长。
对敏感的时间API下断看看:
FileTimeToSystemTime
SystemTimeToFileTime
FileTimeToLocalFileTime
LocalFileTimeToFileTime
GetLocalTime
localtime
结合自己更改系统时间,了解了系统每次load tmatch做了以下事情:
1,获得当前时间。
2,获得tmatch.dll,tmatchsb.dll已经当前运行的实例的时间,如果发现系统设置的当前时间早于文件时间,那么认为用户恶意地调整了系统时间,发出时间被调整的提示。并且此时不导入tmatch。
3,如果比较文件时间早于当前时间,那么认为系统时间是正常的,此时去读取tmatch.app的时间信息,如果发现系统当前时间早于tmatch.app的所读取出来的时间,那么仍然以tmatch.app的时间为准。
4,鉴于以上分析,如果要使文件使用时间无限延长,那么需要注意更改以下几个地方,使其协调工作:
A,GetLocalTime返回的时间点。
B,FileTimeToLocalFileTime的返回点。
C,读取tmatch.app的返回点。
只要把以上时间改成一致,那么试用的时间便无限延长了。
思路二:
只有在不能注册的情况下,才考虑试用时间的无限延长,因为试用毕竟是试用,看起来就不爽。那好吧,来看看对注册方面的验证信息。先随便填写注册信息,发现其保存为tmatch.lic。对tmatch.lic的文件读取设置断点,一步步跟踪,发现对注册码等信息的判断流程基本上是这样的:
1,首先获取计算机名,如果计算机名与lic里面的计算机名不一致的话,那么直接认为还没注册。
2,如果计算机名正确,那么由计算机名生成一段CODE,该CODE与lic中的code进行比较,如果不一致,认为没注册。
3,把CODE和NUMBER解析,还原为到期时间。判断到期时间是否到期,如果到期,直接提示。
根据以上流程,由于生成的CODE为明码,那么可以直接生成,难点在于CODE和NUMBER的解析逆向,有两种思路解除:
1,随便构造NUMBER,在最后生成到期时间时更改程序,该方法比较简单,但是还是要更改代码。
2,逆向NUMBER的值,从而到达生成注册机的作用。
稍微跟踪了下,不是使用大型算法,直接抠出来或dll注入运算都可得出正确的值。