dotnet dll decompile and change the code

user900492 picture user900492 · Sep 12, 2011 · Viewed 30.6k times · Source

I need to change the code of the .NET DLL. I am able to see the code by compilable the DLL with .NET reflector, but I am not able to change the code of the DLL. With .NET Reflector, I decompile the code and saved in to my hard disk, but when i am able to recompile the code its giving errors.

Few code is decompiled in binary format few code is decompiled with c#. Is there any tool to change and recompile the DLL?

Here are the tools I used for trying to decompile the DLL:

  • ILSpy
  • DisSharp
  • Reflector7.1 With the Reflexil plugin
  • Spices.Net.Suite.5.8
  • Deploy .NET 1.0.0
  • devextras.codereflect
  • dotPeek-1.0.0.2545
  • intellilock
  • JustDecompile_BETA_2011.1.728.1

Unfortunately, none of the tools giving perfect source code to recompile the DLL code.

Answer

Jarekczek picture Jarekczek · Sep 9, 2014

The following code is working:

"C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\ildasm.exe" original.dll /out=code.asm
echo Here changes to code.asm should be done.
C:\Windows\Microsoft.NET\Framework\v4.0.30319\ilasm.exe /dll code.asm

So if the change in code is to be small, it's doable by making the changes in assembly code directly. One can compile and disassemble simple methods to see how the assembly code should look like. Putting additional methods inside the assembly file should not be too hard too.

Of course code analyzis should be done using ilspy-like tools, displaying the source code rather than assembly code.

Tools employed here come from Windows SDK (ildasm) and from .net framework (ilasm).