我要替换一行代码在3d方API与我自己的代码。

我的意思是,这是值得怀疑的做法,但我需要修复自己的错误。

有帮助吗?

解决方案

不宽容拆卸第三方或商业软件的代码,但有一种方法可以工作。

如果您将反射器与 反射 插件您既可以删除强名称签名,又可以在汇编中注入/更改代码。

其他提示

您可以,但是您将与MSIL合作,而不是与C#一起工作。

http://ccimetadata.codeplex.com/ http://www.mono-project.com/cecil

另外,您可以使用Reflector.net,修复错误并将其编制回DLL。

是的你可以。一方面,DLL组件只是CIL(常见的中间语言)。原则上,您可以自己直接修改它。

例如,您可以使用Cecil之类的工具:

http://www.mono-project.com/cecil

您也可以将其用像Reflector这样的工具将其分配到您最舒适的语言中。那时,您可以修改代码并重新编译到自己的自定义程序集中。

http://www.red-gate.com/products/reflector/

塞西尔也有一个分解器:

http://evain.net/blog/articles/2008/12/15/cecil-decompiler

Monodevelop(Mono IDE)让您打开一个程序集作为一个项目。只需将DLL作为项目文件打开,并且(如果它具有足够的调试信息),它将看起来像一个代码项目,然后您可以修改和构建。

http://monodevelping.com/

所有这些工具在Microsoft .NET或MONO中均可使用。可以在窗口上安装单体开发,而无需安装单声道。

当然,我说你可以。我不一定认可您这样做。由于您对自己的处境有了更多的了解,因此您将必须自己解决问题的法律和道德方面。

你有没有考虑试图代理和拦截一个 AOP 工具,就像 Postsharp 或林夫?

说明:AoP框架(面向方面编)允许你来注射行为前后呼吁,并重新呼吁。更多信息 在这里,

一些增加的好处,这vs改变集:

  • 该修正能够生存下去的升级 3方dll(给予API是稳定的)
  • 你应在授权条款
  • 你可以很容易去除的代理,如果 他们解决的方法问题

如果它不允许您注入自己的代码并且没有获得源,那么您就没有机会以合法的方式进行操作。

通常签署组件,您无法更改它。此外,大多数软件受版权保护。

如果您是该供应商的重要客户,请询问代码。当然,要解决此错误的权利。

如果您可以访问源代码,为什么不进行更改并重新编译?

为什么不只是自己(内部的代码内部)重写该方法,而不是外部库呢?

如果这是一个次要的修改,您可能会有些运气通过Ildasm进行往返代码,然后ilasm。

对此有所不同,是否有可能在涉及虚假组件之前使用DNS在应用程序启动中解决IP,然后在System32 drivers etc中放入主机文件中的条目,这样您就不会实际上需要再次出去DNS(您会的,但这几乎应该是即时的)。

您也可以不尝试通过组装来实现此操作,实际上会查看Windows DLL API注入方法,即挂接DNS解析器的调用以执行缓存。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top