Reflexil是一個(gè).NET程序集編輯器,結(jié)合Reflector,可以進(jìn)行DLL代碼注入等工作,實(shí)踐證明完全可用,方便開發(fā)人員對(duì).NET程序進(jìn)行修改;可以作為一個(gè)Reflector插件修改程序集的IL并保存到磁盤文件,也可以在自己的.NET程序中調(diào)用進(jìn)行更為靈活的.NET程序集修改。
Reflexil特色:
可以改繼承類,添加方法, 字段,事件,“replace all with code"功能也很強(qiáng),可以C#的代碼片段直接替換Method里的功能。
另外,子類里調(diào)用父類的方法,在msil里這個(gè)是直接用”父類::方法名",而且似乎非virtual也是調(diào)用callvirt 命令。
還有,簽名的話,它會(huì)給你選是保留原來的,覆蓋pfx,去除簽名。我選保留原來的,不過這個(gè)是我自己做的程序,簽名在電腦里注冊(cè)過,不知道改別人的簽名dll會(huì)不會(huì)有問題。
最后還順便玩了下,SimpleAssemblyExplorer,也有些特色,不過似乎不能改繼承類,添加方法, 字段,事件。代碼到可以是重別的dll里倒入。
修改方法:
下載Reflector插件Reflexil,并添加到Relector中。
在左邊的對(duì)象樹中打開需要修改的類,再在Reflexil中找到需要修改的地方,直接修改或刪除就可以了,如下圖
最后選擇在對(duì)象樹中選擇DLL,并在Reflexil的Save As一下就可以了。
需要注意一下的是,一些DLL擁有強(qiáng)名稱,重新應(yīng)用的時(shí)候可能會(huì)出現(xiàn)錯(cuò)誤,這時(shí)需要在Save As的時(shí)候去除一下強(qiáng)名稱就可以了。