国外一款串口通信控件破解(一) 兼谈 .net Attribute原理

近日破解了一个国外的串口通信控件,.net写的,中间破费周折,写下来希望能给大火一点启示帮助。具体名字就不写了,用xx.2.dll替代。

1、IDLASM进行反汇编,结果提示

受保护的模块 -- 无法进行反汇编

看来需要改造版本的 ILDASM 

下载ILDASM修改版V2.0

可以成功进行反编译了。

ildasm xx.2.dll /out=xx.2.il

2、大量的名称被混淆,需要仔细分析相关代码

反编译后,il大量的name被混淆,

直接尝试 ilasm 
ilasm /dll /res:xx.2.res /key:xx.2.snk xx.2.il /out:xx.2.dll /quiet
结果发现根本不能编译反汇编出来的il文件
看来要进行 名称反混淆后 ,再进行处理才可以。

3、名称反混淆

使用在pediy下载的Simple Assembly Explorer 进行名称反混淆,之前使用过一个DeObfuscator反混淆,反混淆后有问题,很多能读的类都给修改了,导致暴露给外界调用的类名找不到。使用Simple Assembly Explorer 的没有问题。

使用Simple Assembly Explorer 进行名称反混淆后。Ildasm成IL,再ilasm后 可以正常组装成dll了
但是运行例子的时候出现了
未能加载文件或程序集“xx.2, Version=2.0.0.3108, Culture=neutral, PublicKeyToken=98fd87b7d0f115c7”或它的某一个依赖项。强名称验证失败。 (异常来自 HRESULT:0x8013141A)

因为自己生成一个SNK,编译后导致
PublicKeyToken改变了。重新编译例子程序,ok,这个错误消失,但是出现了新错误
posted @ 2008-08-02 11:36  jetwong  阅读(548)  评论(0编辑  收藏  举报