블로그 이미지
평범하게 살고 싶은 월급쟁이 기술적인 토론 환영합니다.같이 이야기 하고 싶으시면 부담 말고 연락주세요:이메일-bwcho75골뱅이지메일 닷컴. 조대협


Archive»


 

'jad'에 해당되는 글 1

  1. 2010.05.10 ildasm (C# 디컴파일러) (3)
 

ildasm (C# 디컴파일러)

프로그래밍/C# & .NET | 2010.05.10 17:07 | Posted by 조대협

C#에도 자바의 JAD와 비슷하게 디컴파일툴이 있는데,
ildasm.exe라는 도구이다.

*.exe 파일을 ildasm을 통해서 디컴파일 해보면 어셈블리코드로 대략 어떤 작업을 하고 있는지 볼 수 있다. (Reverse engineering할때 유용할듯)

사용방법은
프로그램 > 시작 > Visual Studio Folder > Visual Studio Command Prompt를 실행한 후
ildasm 을 치면 GUI 툴이 뜬다.

파일메뉴에서 EXE 파일을 열면 된다.
보고싶은 메서드를 더블 클릭하면 어셈블리 코드를 보여준다.
아래는 간단한 HelloWorld.cs를 디어셈블해본 내용

HelloWorld.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace HelloWorld
{
    class Program
    {
        static void Main(string[] args)
        {
            String str = Console.ReadLine();

            Console.WriteLine("Hello :"+str);
        }
    }

}

디어셈블한 결과


.method private hidebysig static void  Main(string[] args) cil managed
{
  .entrypoint
  // Code size       25 (0x19)
  .maxstack  2
  .locals init ([0] string str)
  IL_0000:  nop
  IL_0001:  call       string [mscorlib]System.Console::ReadLine()
  IL_0006:  stloc.0
  IL_0007:  ldstr      "Hello :"
  IL_000c:  ldloc.0
  IL_000d:  call       string [mscorlib]System.String::Concat(string,
                                                              string)
  IL_0012:  call       void [mscorlib]System.Console::WriteLine(string)
  IL_0017:  nop
  IL_0018:  ret
} // end of method Program::Main


 


'프로그래밍 > C# & .NET' 카테고리의 다른 글

CLR 메모리 구조 (노트)  (0) 2010.05.12
자바개발자가 본 .NET 프레임웍  (0) 2010.05.11
ApplicationDomain  (0) 2010.05.11
Microsoft Sync Framework (MSF)  (1) 2010.05.10
ildasm (C# 디컴파일러)  (3) 2010.05.10
C# 책 추천 부탁합니다.  (4) 2010.05.06
본인은 구글 클라우드의 직원이며, 이 블로그에 있는 모든 글은 회사와 관계 없는 개인의 의견임을 알립니다.

댓글을 달아 주세요

  1. 람다 2010.05.10 17:41  댓글주소  수정/삭제  댓글쓰기

    유명한 툴이긴 한데... 호오옥시 모르실까봐.. ^^*
    http://www.red-gate.com/products/reflector/

    .NET용 reverse engine 툴이예용.

    - @stillcut

  2. Eminency 2010.05.10 22:32  댓글주소  수정/삭제  댓글쓰기

    디스어셈블은 C코드를 컴파일한 바이너리에도 가능해영...
    (어셈블리는 기계어의 다른 형태니까 어찌 보면 당연)

    jad는 Java 코드를 보여주는데 이건 C# 코드를 보여주지는 않나 보군요.