어떤 CLR/.NET 바이트 코드 도구가 있습니까?


7

JVM 바이트 코드 (ASM, cglib, jad 등)를 조작, 생성, 디 컴파일하는 Java 도구에 대해 잘 알고 있습니다. 비슷한 도구가 CLR 바이트 코드에 존재합니까? 사람들이 CLR에 대한 바이트 코드 조작을 수행합니까?

2

바이트 코드는 바이너리 형식입니다. .NET 어셈블리는 실행 지침을 저장하는 방식이 매우 다릅니다.

바이트 코드와 같은 구조로 컴파일하는 대신 .NET 언어가 중간 언어로 컴파일됩니다 (실제로는 IL이라고 부릅니다).

이것은 사람이 읽을 수있는 언어로, 객체 지향 버전의 어셈블러처럼 보입니다.

따라서 개별 어셈블리에 대해 IL을 검사하거나 조작하는 측면에서 Reflector 및 ILDASM과 같은 도구를 사용하면 어셈블리에 IL을 편리하게 볼 수 있습니다.

조작이 조금 다릅니다. .NET 공간에서 일부 AOP 도구를 살펴볼 것을 제안합니다. 또한 Phoenix를 살펴볼 것을 제안합니다. Phoenix는 MS가 작업 한 컴파일러 프로젝트입니다. 그것은 정말 멋진 포스트 컴파일 조작 기능을 가지고 있습니다.

.NET AOP 도구에 대해 더 자세히 알고 싶다면 다른 웜 (전체 웜)을 여는 것이 좋습니다.

일리노이의 기능을 알려주는 책이 여러 권 있습니다. 그것은 배울 매우 복잡한 언어가 아닙니다.

+8

"NET 어셈블리는 실행 방법을 저장하는 방식이 매우 다릅니다."아니요 ... 모든 것이 궁극적으로 "바이너리 형식"으로 컴파일됩니다. . 이 바이너리 형식은 일리노이와 1 : 1로 대응합니다. 06 aug. 092009-08-06 09:53:04


4

ILDASMReflector이 염두에드립니다.


14

반사경은 항상 좋지만 Mono.Cecil은 전반적으로 요구할 수있는 최상의 도구입니다. 어떤 방법 으로든 CIL을 조작하는 것은 매우 중요합니다.


7

Mono.Cecil은 ASM과 같은 훌륭한 도구입니다. Mono의 서브 프로젝트이고, 전적으로 오픈 소스입니다. 심지어 System.Reflection보다 better feature을 제공합니다.


1

NDepend을 사용하면 .NET 어셈블리 정적 분석 (코드 메트릭, 종속성 분석 등)을 수행 할 수 있습니다. NDepend는 의존성 매트릭스, 의존성 그래프 및 트리 맵 메트릭 visualizations을 사용하여 .NET 어셈블리의 구조에 대한 개요를 얻는 데 매우 유용합니다.

리플렉터와 통합되어 있습니다. 예를 들어 유형/방법 Rank metric (Google 페이지 순위와 유사한 코드 측정 항목)을 사용하여 어셈블리에서 중요한 유형 및 메소드를 감지하고 직접 NDepend에서 반사경으로 점프 할 수 있습니다. C#, VB.NET 등으로 분해 된 코드를 얻으십시오.