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的一些新東西,一些網上幾乎沒找到的用法。

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