Microsoft MVP성태의 닷넷 이야기
MSIL 디컴파일러 - .NET Reflector [링크 복사], [링크+제목 복사],
조회: 13654
글쓴 사람
정성태 (techsharer at outlook.com)
홈페이지
첨부 파일
 

이미 아시는 분들도 많이 계실 듯합니다.
닷넷 디컴파일러로 유명한 툴이죠.

http://www.aisto.com/roeder/dotnet/
위의 URL에서 다운로드할 수 있습니다.

DLL 또는 EXE로 컴파일된 모듈을 ILDasm.exe가 MSIL 코드로 보여주는 반면, .NET Reflector 툴은 해당 모듈의 소스를 재현해 냅니다.

다음은. System.Net.Sockets.Socket 클래스의 생성자를 .NET Reflector로 본 것입니다.

public Socket( AddressFamily addressFamily, SocketType socketType, Protocol protocolType )
{
    this.willBlock = true;
    this.willBlockInternal = true;
    this.m_BlockEventBits = 0;
    this.m_PermittedRemoteAddress = null;
    base.ctor();
    this.m_Handle = OSSOCK.WSASocket( addressFamily, socketType, protocolType, IntPtr.Zero, 0, 1 );
    if ( this.m_Handle == SocketErrors.InvalidSocketIntPtr )
    {
        throw new SocketException();
    }

    this.addressFamily = addressFamily;
    this.socketType = socketType;
    this.protocolType = protocolType;
}

위에 보시면, OSSOCK 클래스가 나오는데요. 그것은 Win32 Socket API 관련한 PInvoke 메서드를 담은 클래스입니다. 그 클래스를 찾아서 보시면, 결국 System.Net.Sockets.Socket 클래스는 Ws2_32.dll의 함수들을 직접적으로 호출하게 되는 것을 알 수 있습니다.

이렇게 따지면, 닷넷으로 만든 모듈은 비밀이 없어 보입니다. 아쉽게도 그 말에 부정을 할 수가 없네요. 만약, 자신만의 노하우가 담긴 코드를 닷넷으로 만든다면, 모든 사람에게 암암리에 공개하는 것과 같은 효과를 가집니다.

숨기고 싶은 코드가 있다면, 다음의 방법을 사용하십시오.
1. 해당 코드만을 담은 COM 개체를 만들어 닷넷 모듈에서 사용하게 한다.
2. managed C++로 만들되, #unmanaged 지시자를 넣어서 해당 코드 이후의 부분을 native 코드로 컴파일되게 한다.








[최초 등록일: ]
[최종 수정일: 8/20/2023]


비밀번호

댓글 작성자
 



2016-06-14 12시20분
정성태

... 31  32  [33]  34  35  36  37  38  39  40  41  42  43  44  45  ...
NoWriterDateCnt.TitleFile(s)
373정성태7/23/200612708.NET : 8. The ADO.NET Entity Framework Overview [2]
372정성태7/22/200612895TFS : 19. TFS 단일 서버에 설치하는 방법 정리
371정성태7/23/200612828개발환경 구성 : 11. Virtual Server 2005 R2 SP1에서 추가되는 기능
370정성태8/5/200613116Debug : 3. Method Calls: Part 1 (Normal Call)파일 다운로드1
369정성태7/20/200612971Debug : 2. Unable to Start Debugging on the Web Server
368정성태7/14/200612461TFS : 18. 관계가 없는 두 브랜치에 포함된 소스를 병합하는 방법
367정성태7/14/200612390TFS : 17. (웹 서비스를 이용하여) 작업항목 생성 및 이메일 공지
366정성태7/11/200612394TFS : 16. Updating the Team Foundation Server Warehouse on Demand
365정성태7/11/200613318TFS : 15. 특정 파일과 연관된 changeset 찾는 방법
364정성태7/10/200612395VS.NET IDE : 11. 서버측 컨트롤 주석처리 방법
363정성태7/25/200614344개발환경 구성 : 10. .NET 2.0 설치 전에 사전 조사되는 항목들
362정성태7/10/200612388TFS : 15. 팀 빌드 결과물에 빌드 버전 추가. [1]파일 다운로드1
361정성태7/9/200612985TFS : 14. Listing all Labels attached to a file or folder
360정성태7/9/200612319VS.NET IDE : 10. Custom formatting HTML in Visual Web Developer and Visual Studio 2005파일 다운로드1
359정성태7/9/200612058VS.NET IDE : 9. [Add-in] XPathmania
358정성태7/9/200614064VS.NET IDE : 8. VS.NET Editor 윈도우에서 칼럼 구분선 보이기
357정성태7/9/200613362TFS : 13. BVT ( Build Verification Testing )
356정성태10/20/200613443.NET 3.0 : 1. [WCF] Beta2 와 비교해서 June CTP 버전에서 바뀐 점
355정성태7/5/200615153TFS : 12. TFS 이벤트를 받는 WCF 클라이언트 제작파일 다운로드2
354정성태7/3/200613131IIS - 3. IIS 7.0 에서 소개되는 Microsoft.Web.Administration 네임스페이스파일 다운로드1
353정성태7/1/200613446SDK : 3. Microsoft National Language Support Downlevel APIs 1.0 [2]
350정성태7/1/200613572개발환경 구성 : 9. Deploying Microsoft .NET Framework Version 3.0
349정성태7/1/200613725개발환경 구성 : 8. 대규모 웹 사이트를 위한 Web Application Project 구조 잡기
348정성태7/9/200612191VS.NET IDE : 7. Debugger Visualizer - CodeDomVisualizer
347정성태6/30/200611941TFS : 11. Tip for doing code reviews with TFS Shelvesets
346정성태6/29/200612256Debug : 1. How to build Mdbg apps파일 다운로드1
... 31  32  [33]  34  35  36  37  38  39  40  41  42  43  44  45  ...