因为有需要,所以对一款CAD导出插件进行逆向分析。该插件主要作用是把AutoCAD模型对象导出为obj模型,插件名:OBJ Exporter for Autodesk® AutoCAD®,下称OBJ Exporter。
OBJ Exporter是由一家以插件开发为主的数据公司开发,本文逆向分析的是OBJ Exporter的试用版,正式版需要支付$99! OBJ Exporter的使用非常简单,几乎是一键导出。安装后在CAD的附件模块:
OBJ Exporter插件位置
插件只有两个界面,一个。一个选项界面,一个关于界面:
选项界面1
选项界面2
1. 导出设置界面:可以设置导出参数,主要是精度和法线,及翻转设置。可以通过设置精度多次导出实现导出带LOD(level of detail)的模型,当然这不是本文关注的重点。
关于界面
2. 关于界面:这个是本文的关注重点,上图红色框内的提示则是也是突破点!
我这里导出看一下
点一下Export后输入文件名即可:
导出过程(动图)
用win10自带的Paint3D查看如下(至于颜色为什么是这样,我暂时也不清楚):
Paint3D查看
我们再来看一下“关于”,试用次数变为9。
二话不说,开干!
开打插件安装目录C:ProgramDataAutodeskApplicationPluginsOBJExporterForAutoCAD.bundle
插件安装目录
打开PackageContents.xml文件查看下入口模块。
入口模块
进入主目录:
插件主目录
几乎可以肯定,混淆了!先用dnSpy查看下:
OBJExporterForAutoCAD反编译结果
随便点开一个类查看:
Zheshi需要祭出另外一款神器:de4dot。.net反混淆工具。使用方法非常简单,把需要处理的dll/exe拖上去即可!下图为反混淆后的dll:
反混淆后的dll
我们再看下OBJExporterForAutoCAD:
反混淆后的OBJExporterForAutoCAD.Dll
那么问题来了:这么多个dll怎么查找我们想要的信息呢?回过头看下插件的两个界面及PackageContents.xml文件便能找到些蛛丝马迹。插件的几个菜单按钮记录在PackageContents.xml文件中的:分别是AboutOBJExporter、SaveAsOBJ和OBJPreferences。这三个关键函数一定存在于OBJExporterForAutoCAD.dll中。
PackageContents.xml文件信息
查看下OBJExporterForAutoCAD.dll可以看到下面的信息:
OBJExporterForAutoCAD.dll结构
为了方便查找(当然也可以不导出到工程,我需要的不仅仅是破解所以导出了整个工程),将整个工程保存为解决方案,在dnSpy中选中这几个dll,保存为工程,然后用vs打开,解决方案结构如下:
OBJExporterForAutoCAD解决方案结构
打开在dnSpy中看到的类:
SaveAsCommand类
没什么好说的,基本算是现场裸奔!顺藤摸瓜,打开关于窗体,打开设计器:
关于窗体设计器
注意红色框,转到代码,构造函数里面:
AboutDialog构造方法
可以看到标签内容是根据licenseStatus改变的,继续往上找:
进入ValidateLocalLicense方法:
注意Licensepath这个属性,进入查看:
这应该是一个本地文件,存放在C盘用户,公用目录下,如下,几乎可以断定,@16@20@19@0103@1502.1293为license文件。
回到ValidateLocalLicense方法再简单看下两个判断,文件存在时自然应该是验证内容,我们再看下不存在的情况做了什么,进入method_6:
感觉像是读一个东西然后把内容写到刚才的本地目录,有可能是读注册表的内容!再接着往上看RegistryEntry. BaseRegistryKey:
一个引用,还是刚才那个get,registryKey_0应该只是个私有字段,搜索下赋值基本就能找到:
虽然没有找到直接赋值的地方,但是找到这个注册表信息,直接按照上面的注册表信息查找下:CMDàregedità回车,找到键值:
废话不多说,干掉注册表和本地文件看下:
至此,破解完成,没什么技术含量。
总结:
总结还是需要的。本文通过对AutoCAD一款导出插件逆向分析,该过程没什么技术含量,几乎只是dnSpy和de4Dot两款工具的使用。当然无限试用该插件还有其他方法。破解该插件不是目的,只是一种学习、成长的手段。本人虽然把该插件的核心代码完全反编译甚至还原,但并没有将该插件据为己有倒卖成品,相反通过反编译该插件,学习了AutoCAD的一些新东西,一些网上几乎没找到的用法。
来源:CSDN
作者:AfricChang
链接:https://blog.csdn.net/wy1334526911/article/details/103486319