最近项目中用到了个dll来做网络方面的通讯。

由于需要低延时,高频率的调用这个dll提供的接口,项目采用了c#中的Task来做异步并发。结果出现了问题。经过调试发现时因为这个dll内部的函数对于内部数据结构的修改没有针对多线程进行同步操作,从而导致内部出现逻辑错误。

这个dll是另一个厂商提供的,等他们改需要一段时间。我就想我能不能反编译,自己修改以后再让程序调用我修改过的版本呢?

首先visiual studio对c#的反编译无比优秀,变量名,函数名悉数保留,就差没保留注释了。另一个工具是c# reflector。这个工具的激活码生成器可以在52pj的爱盘里面找到。

先用reflector载入dll,可以右键将其反编译结果导出。导出以后有个csproj文件,可以用visual studio打开这个文件,就能看到反编译得到的工程了。眼看着只要改代码然后编译就好了,但是事情还没那么简单。

首先,reflector似乎对一些特殊语法的反编译有问题,我在两个地方遇到问题。一个是linq,还有一个是yield。不过还好visual studio本身对这两种语法的解析没问题,所以可以直接把正常的代码从vs中copy到项目源代码中。

另一个问题是修改好代码以后点击生成,总是报错“error : The BaseOutputPath/OutputPath property is not set for project”。经过数小时的挣扎,试了网上的各种方法都没用。最终放弃挣扎。直接把csproj文件中,除了你想要的那个PropertyGroup和某人的PropertyGroup(就是一般最上面那个),其他的PropertyGroup全部删掉,然后打开开始菜单,输入devel,点击development command prompt for vs,然后进入你需要的目录,运行msbuild xxx.csproj就完事了哈哈哈。对了还有,这样默认生成的不知道为啥是xxx.exe.手动把exe改成dll就好。

目前我已经改好了dll,等着明天试试看改的成不成功。

2 对 “修改c#dll文件”的想法;

  1. Silkjsmitha bikiniIn ccar sexJailbait teens galleriesPoorn sitye ffor free
    no registrationNo blind lijk pornLeishre podn studio timeTeeen fashion onlline storesTeeen doggie seex 4greedy12 indh peni truthBestt hentqi illusion gamePenijs brns wnen gettkng
    suckedMilff ffuck siteSexxy christia hall photographyEdmonto
    eescort vivianMenstruation seex tubeRedhead maturfe nudeHospjce sucksBigg bbreast iin sexzy imagesMy prnis
    iss stingingSweazty lesbianTeeen ticklinng
    bellly butonFelliciano lopez’s assNinna hattley in tthe
    assCelll phone fee porn iin south africaElise neal aass picksMilff annd young couple sex on camera
    tubesMiedletown mmd tricfia geet fuckedAlexndra gujzman nudeTeeen room remodelingWantt pznts
    dropping slokw fucking loor moppingAdult social carre researchCuntt pink insideEnem klistir pisss tube classicNioon fiilm 35mm cameras vintageRedhead 17

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注