近日破解了一個國外的串口通信控件,.net寫的,中間破費(fèi)周折,寫下來希望能給大火一點(diǎn)啟示幫助。具體名字就不寫了,用xx.2.dll替代。
1、IDLASM進(jìn)行反匯編,結(jié)果提示
受保護(hù)的模塊 -- 無法進(jìn)行反匯編
看來需要改造版本的 ILDASM
下載ILDASM修改版V2.0
可以成功進(jìn)行反編譯了。
ildasm xx.2.dll /out=xx.2.il
2、大量的名稱被混淆,需要仔細(xì)分析相關(guān)代碼
反編譯后,il大量的name被混淆,
直接嘗試 ilasm
ilasm /dll /res:xx.2.res /key:xx.2.snk xx.2.il /out:xx.2.dll /quiet
結(jié)果發(fā)現(xiàn)根本不能編譯反匯編出來的il文件
看來要進(jìn)行 名稱反混淆后 ,再進(jìn)行處理才可以。
3、名稱反混淆
使用在pediy下載的Simple Assembly Explorer 進(jìn)行名稱反混淆,之前使用過一個DeObfuscator反混淆,反混淆后有問題,很多能讀的類都給修改了,導(dǎo)致暴露給外界調(diào)用的類名找不到。使用Simple Assembly Explorer 的沒有問題。
使用Simple Assembly Explorer 進(jìn)行名稱反混淆后。Ildasm成IL,再ilasm后 可以正常組裝成dll了
但是運(yùn)行例子的時候出現(xiàn)了
未能加載文件或程序集 “xx.2, Version=2.0.0.3108, Culture=neutral, PublicKeyToken=98fd87b7d0f115c7” 或它的某一個依賴項(xiàng)。強(qiáng)名稱驗(yàn)證失敗。 (異常來自 HRESULT:0x8013141A)
因?yàn)樽约荷梢粋€SNK,編譯后導(dǎo)致
PublicKeyToken改變了。重新編譯例子程序,ok,這個錯誤消失,但是出現(xiàn)了新錯誤