2011-01-20 7 views
1

Reflector라는 도구를 사용하여 dll을 디 컴파일하려고 시도하지만 전체 코드가 아닌 정의 만 표시합니다. 그 이유는 무엇입니까? 어떻게 완전히 디 컴파일 할 수 있습니까?DLL 디 컴파일

감사합니다.

+0

스크린 샷을 제공하십시오. 무슨 뜻인지 모르세요. – leppie

+0

오케이, 죄송합니다. 이것은 내가 extern이 의미하는 것을 배웠던 요점입니다. 이 메소드는 다른 곳에서 구현됩니다. 이제 나머지 부분을 이해하려고 노력 중입니다. 디 컴파일 된 코드의 예는 다음과 같습니다. [MethodImpl (MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), TypeLibFunc ((short) 0x40), DispId (0x2f)] public virtual extern void _DoCommand ([In, MarshalAs (UnmanagedType.BStr)] 문자열 동사, [In, MarshalAs (UnmanagedType.BStr)] string PlugInKey = ""); – Feyyaz

+1

@Saha : 혼합 모드 어셈블리이므로 요청하는 함수에는 .NET 코드 (MSIL)가없고 .NET 메타 데이터로 래핑 된 원시 컴퓨터 코드 만 있습니다. 반사경은 그걸 도와주지 않을 것입니다. –

답변

1

혼합 모드 DLL입니까? 디 컴파일 된 소스를 볼 수있는 방법을 확장 했습니까?

FileDisassembler 플러그인이 도움이 될 수 있습니다 (가장 최신 버전인지 확실하지 않을 수 있음).

1

어셈블리, 네임 스페이스, 클래스 또는 멤버를 마우스 오른쪽 단추로 클릭하고 컨텍스트 메뉴에서 "디스어셈블링"을 선택하십시오. \ YourDirectoryName을 : 또는 바로 가기로, 오른쪽은

가 C주세요 수출

을 클릭 추출 할 dll을 클릭 스페이스 바를

+0

도움이되지 않습니다 .. – Feyyaz

+1

@sahs는 "도움이되지 않습니다"를 정의합니까? 무슨 일이야? 너 뭐가 보이니? –

0

열기 반사경

를 누릅니다.

당신은 C에서 추출 코드를해야합니다 : \ YourDirectoryName

0

을 반사의 코드를 확인하려면, 당신은 방법에 를 탐색해야합니다. 유형을보고있는 경우 예 (분해 할 수있는 경우도 있지만 "도움이 될 수있는 방법 확장"버튼이 있음)에도 정의가 표시됩니다.

메소드를 살펴볼 때에도 여전히 작동하지 않으면 dll은 대부분 코드에서 난독 화되거나 컴파일되지 않을 수 있습니다 (직접 IL은 대부분의 언어로 매핑하기 어렵습니다).

+1

여전히 MSIL로 볼 수 있습니다. 그가 갖고있는 것은 네이티브 코드와 .NET 메타 데이터를 포함하는 혼합 모드 어셈블리이지만 MSIL은 아닙니다. 디 컴파일 할 것이 없습니다. C++/CLI는 이러한 어셈블리를 만드는 가장 일반적인 방법입니다. –

0

리플렉터에서 왼쪽에있는 트리보기를 드릴 다운하여 코드를 보려는 유형을 찾으십시오. 찾았 으면 그것을 클릭하고 스페이스 바을 누르십시오. 그런 다음 오른쪽에 메서드 선언이 표시됩니다. 해당보기의 맨 아래로 스크롤 한 다음 녹색 "Expand Methods"하이퍼 링크를 클릭하십시오.

또는 트리 뷰에서 해당 유형을 확장하고 개별 방법을 선택한 다음 스페이스 바을 누릅니다.

+1

OT : 어떻게 그 예쁜 열쇠를 만드나요? – leppie

+2

@leppie :'여기에 키 이름' –