CAD导出插件逆向分析

因为有需要,所以对一款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@[email protected]为license文件。

 

回到ValidateLocalLicense方法再简单看下两个判断,文件存在时自然应该是验证内容,我们再看下不存在的情况做了什么,进入method_6:

 

感觉像是读一个东西然后把内容写到刚才的本地目录,有可能是读注册表的内容!再接着往上看RegistryEntry. BaseRegistryKey:

 

 

一个引用,还是刚才那个get,registryKey_0应该只是个私有字段,搜索下赋值基本就能找到:

 

虽然没有找到直接赋值的地方,但是找到这个注册表信息,直接按照上面的注册表信息查找下:CMDàregedità回车,找到键值:

废话不多说,干掉注册表和本地文件看下:

至此,破解完成,没什么技术含量。

总结:

总结还是需要的。本文通过对AutoCAD一款导出插件逆向分析,该过程没什么技术含量,几乎只是dnSpy和de4Dot两款工具的使用。当然无限试用该插件还有其他方法。破解该插件不是目的,只是一种学习、成长的手段。本人虽然把该插件的核心代码完全反编译甚至还原,但并没有将该插件据为己有倒卖成品,相反通过反编译该插件,学习了AutoCAD的一些新东西,一些网上几乎没找到的用法。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章