2011-09-12 4 views
21

.NET DLL의 코드를 변경해야합니다. .NET 리플렉터를 사용하여 DLL을 컴파일하여 코드를 볼 수 있지만 DLL 코드를 변경할 수는 없습니다. .NET Reflector를 사용하면 코드를 디 컴파일하여 내 하드 디스크에 저장했지만 코드를 다시 컴파일 할 수있을 때.dotnet dll 디 컴파일 및 코드 변경

몇 개의 코드가 바이너리 형식으로 디 컴파일되지만 몇 개의 코드가 C#으로 디 컴파일됩니다. DLL을 변경하고 다시 컴파일 할 수있는 도구가 있습니까?

  • ILSpy Reflexil 플러그인으로
  • DisSharp
  • Reflector7.1
  • Spices.Net.Suite.5.8
  • : 여기

    내가 DLL을 컴파일하려고에 사용되는 도구입니다
  • Deploy .NET 1.0.0
  • devextras.codereflect
  • dotPeek-1.0.0. 2545
  • intellilock
  • JustDecompile_BETA_2011.1.728.1

불행하게도, DLL 코드를 재 컴파일 할 완벽한 소스 코드를주는 도구 없음.

+0

어떤 오류가 발생합니까? –

+0

지금까지 닷넷 프레임 워크 라이브러리 소스 코드를 쉽게 얻을 수있는 방법을 알고 있습니다. Scott Gu가 작성한 문서보기 : http://weblogs.asp.net/scottgu/archive/2007/10/03/releasing-the-source-code-for-the-net-framework-libraries.aspx –

+0

.Net Framework 어셈블리 또는 일부 .Net DLL의 소스 코드를 얻으려면? – Polyfun

답변

8

DLL을 다시 컴파일하는 데 제한된 성공을 거두었습니다. 더 좋은 방법은 Reflector와 Reflexil 플러그인을 사용하는 것입니다. .NET 어셈블리를 구성하는 IL 코드에 대해 조금 더 잘 알고 있어야하지만 Reflexil은 OP 코드를 잘 설명합니다. http://csharpening.net/?p=348

9

다음 코드가 작동 : 내가 PowerShell을 Cmdlet를 도움말 편집기를 수정하는 데 사용 방법에 대한 내 블로그를 통해 작은 산책을

코드의 변화가 작은 것입니다 그래서 경우
"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 

, 그것은 어셈블리 코드를 직접 변경함으로써 가능합니다. 어셈블리 코드가 어떻게 보이는지 간단한 메소드를 컴파일하고 디스 어셈블 할 수 있습니다. 어셈블리 파일 안에 다른 메서드를 추가하는 것은 너무 어렵지 않습니다.

물론 코드 분석은 ilspy와 유사한 도구를 사용하여 수행해야하며 어셈블리 코드 대신 소스 코드를 표시해야합니다.

여기에 사용 된 도구는 Windows SDK (ildasm) 및 .net 프레임 워크 (ilasm)에서 제공됩니다.