이 글은 기계 번역의 미러 문서이며, 원본 기사로 바로 이동하려면 여기를 클릭해 주세요.

보기: 20394|회답: 0

[분해] c# 프로그램 디컴파일 도구 (ILSpy) Tutorial.net 디어셈블리

[링크 복사]
게시됨 2015. 6. 6. 오전 11:09:21 | | | |
ILSpy 디컴파일 도구 사용. 하지만 ILspy는 컴퓨터에 .NET Framework 4.0이 설치되어야 합니다. ILspy는 dll 파일을 C# 또는 VB 언어로 변환할 수 있습니다. ILspy는 단일 파일을 .cs 파일 또는 .vb 파일로 저장할 수 있으며, 파일이 많을 경우 프로젝트 파일로 저장할 수도 있습니다. C# 문은 ILspy로 디컴파일이 가능하며, yield return 문과 lambda 표현식의 디컴파일도 지원할 수 있습니다.

예전에는 .NET 라이브러리에 관한 정보를 볼 때 Reflector를 사용했지만, 2011년 2월 이후 Reflector가 유료 소프트웨어로 전환하면서 자유 소프트웨어를 사랑하는 개발자들이 자신만의 디컴파일 소프트웨어를 개발하는 방향으로 전환하게 되었습니다. 그래서 ILspy는 운이 좋아서 탄생했습니다. ILSPY는 리플렉터를 대체하는 오픈소스 도구로, 리플렉터와 유사한 코드를 디컴파일합니다.

SharpDevelop도 또 다른 유일한 제품입니다. .NET 오픈 툴이며, 오픈 소스입니다. 또한 Visual Studio를 거의 다시 쓸 수 있는 꽤 좋은 기능들도 제공합니다. 최신 버전에서는 Visual Studio의 솔루션 보안 파일과 프로젝트 파일에 대한 지원이 직접 추가되었습니다. ILSpy는 SharpDevelop 그룹의 디컴파일러 도구이자 오픈 소스이며, 디버거와 디컴파일러는 아래에 설명되어 있습니다.


ILspy 인터페이스 스크린샷


ILSpy의 인터페이스는 Reflector와 유사하며, 왼쪽에는 어셈블리와 그 타입을, 오른쪽에는 해당 소스 코드가 표시됩니다. 기본 디컴파일 기능은 Reflector에 비해 나쁘지 않으며, 때로는 Reflector로는 디컴파일할 수 없는 어셈블리(암호화 문제)에 대해서는 ILSpy로 디컴파일할 수도 있습니다.

ILspy는 컴퓨터에 .NET Framework 4.0이 설치되어야 합니다.ILspy에는 여러 가지 일반적으로 사용되는 기능이 있습니다

기본 타입 디컴파일 함수가 제공됩니다

현재는 VB가 지원되지 않고 C#과 IL 언어로의 소스 코드 디컴파일만 지원됩니다.

렌더링은 다음과 같습니다:

ILSpy의 코드 저장 기능

타입을 클릭하면 파일 > 세이브 코드를 선택하면 현재 타입이 디컴파일되어 지정된 파일에 저장되며, 어셈블리를 선택하면 세이브 코드가 프로젝트(csproj) 파일로 저장되고 그 타입이 모두 프로젝트에 추가됩니다.


ILSpy의 디버거 기능

여기서 디버거는 Visual Studio를 가리키지 않습니다근원디버거 수준이지만, 어셈블리의 디버거를 의미합니다. Reflector에는 Visual Studio에 직접 부착할 수 있는 애딘이 있어, 서드파티 타입 라이브러리를 디컴파일하지 않고 소스 코드 형태로 프로젝트에 추가할 필요가 없습니다.

ILSpy도 이 기능을 갖추고 있어, 두 가지 옵션으로 서드파티 어셈블리를 직접 디버깅할 수 있습니다

서드파티 유형의 라이브러리가 실행 파일이라면, 실행 파일을 디버그로 시작할 수 있습니다.

서드파티 유형 라이브러리가 어셈블리(DLL)라면, 실행 중인 애플리케이션에 첨부하여 어셈블리 디버깅을 시작할 수 있습니다.


위 이미지에서 이미 보시다시피, 이 사용법은 소스 코드 디버깅과 동일합니다. 변수 값을 모니터링하고, 브레이크포인트를 설정하며, 프로그램이 이 지점에 도달하면 폼을 모니터링하여 변수 값을 관찰할 수 있습니다.

두 프로그램의 차이점은 실행 중인 애플리케이션에 Attach를 디버깅할 때, 컴파일러가 코드를 최적화하면 모니터가 값을 얻지 못한다는 점입니다.

이미지에서 보듯이, 디버깅 중인 변수 num의 값은 코드가 최적화되어 표시할 수 없습니다. 공식적으로 권장되는 방법은 실행 파일 디버그입니다


Visual Studio에서 .NET 소스 코드를 디버깅할 때와 마찬가지로, Step in, Step over, continue를 선택하면 상태 바에 대기, 실행 중, 디버깅 등이 표시됩니다.

C#/VB 형태의 어셈블리 코드 디버깅 외에도, 아래 그림에 보이듯이 IL 코드로도 디버깅할 수 있습니다

ILSpy의 디버거는 플러그인으로 존재하니, ILSpy.Debugger 플러그인도 꼭 포함하세요.


하지만 디버깅 중입니다. .NET 어셈블리는 PDB 파일을 반드시 필요로 합니다. 하지만 ILSpy는 PDB 파일을 생성하지 않으며(PDB 파일이 생성되지 않음), 웹 애플리케이션과 웹 서비스를 디버깅 ASP.NET 할 수 없습니다.






이전의:>> 모집 <<
다음:선전 리안티엔샤 테크놀로지 유한회사
면책 조항:
Code Farmer Network에서 발행하는 모든 소프트웨어, 프로그래밍 자료 또는 기사는 학습 및 연구 목적으로만 사용됩니다; 위 내용은 상업적 또는 불법적인 목적으로 사용되지 않으며, 그렇지 않으면 모든 책임이 사용자에게 부담됩니다. 이 사이트의 정보는 인터넷에서 가져온 것이며, 저작권 분쟁은 이 사이트와는 관련이 없습니다. 위 내용은 다운로드 후 24시간 이내에 컴퓨터에서 완전히 삭제해야 합니다. 프로그램이 마음에 드신다면, 진짜 소프트웨어를 지원하고, 등록을 구매하며, 더 나은 진짜 서비스를 받아주세요. 침해가 있을 경우 이메일로 연락해 주시기 바랍니다.

Mail To:help@itsvse.com