25
11 月
Autodesk激活机制浅析
- By IanGoo
最近升级Autodesk Alias AutoStudio 2025.1,发出了这样的感慨:每次升级这个破软件都得脱层皮。
原因很简单,也很好理解:Autodesk的软件订阅费那是相当高的,大概在百万元一年。我作为一个个人用户很显然不可能订阅正版,只能用学习版。同样,为了保证商业利益,Autodesk为旗下软件设置的激活验证机制也是比较复杂的。对于学习版用户来说,就得身兼企业IT和终端用户两个职责。
我大概是在Alias 2024.1开始接触这套激活机制的,几次升级下来,也算是摸清楚了这套机制的工作流程,因此专门写下来,录以备忘。
Autodesk使用的激活机制是由GLOBEtrotter开发的FLEXlm[1]。FLEXlm是FLEXible License Manager的缩写,是一套非常行之有效、被超过2000家软件商采用的License管理机制——其中就包括Autodesk。
FLEXlm的运行结构分成两大块:服务端和客户端。对于企业当中的正版用户来说,通常是将服务端安装在企业的IT基础设施当中,企业的工作站安装Autodesk的软件,软件通过配置正确的License Server地址来启动。但是对于我等学习版用户来说,就得将服务端和客户端都装在自己的电脑里了。
Autodesk的网络授权管理(Network License Manager,NLM)是一个相对于Autodesk软件本体独立的软件,其中包含下列文件[2]:
文件名 | 描述 |
---|---|
adskflex.exe | NLM守护程序,负责跟踪签出的License和使用各个License的计算机。 |
lmgrd.exe | NLM守护程序,负责与Autodesk软件的客户端联系,并在adskflex.exe与客户端之间传递信息。 |
xxx.lic 或者xxx.dat | License文件本体。 |
lmutil.exe | 服务器配置程序(CLI)。 |
lmtools.exe | 服务器配置程序(GUI)。 |
在客户端,也就是Autodesk的软件安装的计算机上,会同步安装一个名为Autodesk Desktop Licensing Service的服务,实际上负责激活的就是NLM和Desktop Licensing Service,它们之间对接成功就可以让Autodesk的软件运行起来。
基本的流程如下:
- Desktop Licensing Service通过软件配置里填写的服务器地址,连接上服务器上的
lmgrd.exe
。 adflex.exe
审核对应终端上的Licensing Service是否上报了正确的配置信息、终端请求的License类型和数量,并检查服务器上是否有剩余的License,如果满足全部要求,就将License释放给客户端。- Desktop Licensing Service接收License后,获准启动对应的软件。
Hmm,基本上就是这么个流程:
我(用户)要找一个维修工(Autodesk软件)干点事,但这货要先拿钱才干活,于是找一个人(Desktop Licensing Service)去银行取钱。他来到了银行窗口(lmgrd.exe
),递上了我的银行卡(License请求),柜员(adskflex.exe
)检查了一下银行卡,审核了一下我的账户(License文件),确认要取的钱没有超出余额,就点出对应数量的钞票(License)给这个人,这人拿着钞票核验了一下都是真钞,拿回来交给维修工,于是——Autodesk,启动!
当然,这是正版的做法。我们是学习版嘛……那该怎么办呢?
作为学习版用户,我的账户里……没钱。所以,我们要从三个地方入手:
- 伪造账户,假装我的账户里有钱。
- 将柜员换成自己人,看一眼我的账户里“有钱”,于是取钱——但是取出来的都是假钞。
- 将来取钱、验钞的也换成自己人,明明拿的是假币,也声称这些都是真钱。
这就OK了,因为维修工是个傻子,他只认花花绿绿的钞票和取钱人的信誓旦旦,他刮大白换空开拧水龙头是把好手但是他不会验钞。
大致就是这么个流程。所以对应的破解工作如下:
- 伪造账户:修改并替换、指定License文件,这个可以通过LMTools来配置。
- 将柜员换成自己人:替换
adskflex.exe
。 - 将取钱人换成自己人:在
AdskLicensingAgent
当中添加一个dll文件,这个文件将和adskflex.exe
对接,并劫持客户端和服务器之间的通讯,让软件认为自己拿到了正确的License。
这么理解的话,就很容易想明白以后Autodesk的软件该怎么处理了:
首先,就是最关键的:要换上对应的License文件。这次升级2025.1就是在寻找支持这一版本的License文件上小小地卡了一下。
然后要让adskflex.exe
和对应的AdskLicensingAgent
注入的文件对应上。
至于其他的NLM组件其实是完全不用动的。这次在一台电脑上,我只是重建了一个服务,另一台电脑上连服务都没有重建,只是替换了一下License、更新了adskflex.exe
、重新注入version.dll
,就搞定了。