赞
踩
大家开发过程中难免需要用一些第三方的插件,而很多插件提供商出于各种目的一般会将插件部分代码编译为动态链接库DLL。
有时候,我们需要对库中的一些内容进行简单的修改,例如我们项目中采用的一个DLL把处理文件的路径写死在DLL里,但是此路径与我们工程项目路径规划冲突,因此产生了修改此路径的需求。
具体方法比较简单,工具也都很好获得,步骤如下。
一款免费的反编译软件。笔者用过多款反编译软件,从准确性到简便性来看ILSpy都是首选。
windows系统自带程序。将DLL转换成IL语言文件。
具体路径是C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\ildasm.exe
windows系统自带程序。将IL语言文件生成DLL。
具体路径是C:\Windows\Microsoft.NET\Framework\v2.0.50727\ilasm.exe
在DLL中找到自己要修改的部分,如果找起来比较麻烦,可以在ILSpy中将DLL保存成源代码,然后在源代码中搜索关键字符进行定位。
打开对应的DLL
然后如下图操作,选择Dump,点击OK选择路径保存。
保存后会生成如下两个文件
打开.il文件进行修改。
在Dos窗口中输入如下命令,即可生成新的DLL
c:\windows\microsoft.net\framework\v2.0.50727\ilasm.exe /dll/resource=1.res 1.il
相信大家都注意到了上文路径中的加粗部分,这里代表的是版本号。
这里要着重说一下的是使用ilams.exe生成DLL的时候要选对版本,否则生成的版本不同可能会导致一些异常(在某些情况下)
那么怎么看原来DLL的版本号呢?
在上述第2步中,在ildasm软件中点击MANIFEST查看mscorlib的ver,即是原DLL版本号。
大家可以根据这个版本号在系统中寻找一个最接近的ilasm.exe来进行生成DLL操作。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。