ก่อนอื่นเลยเราต้องมาเรียนรู้การทำงานตั้งแต่การ Compile source code ไปเป็น MSIL (Microsoft Intermediate Language) และเป็น Native Code ในที่สุดก่อนนะครับ เรามาเริ่มกันเลยครับ
โดยปกติแล้วเวลาเราเขียนโปรแกรมแล้วทำการ Compile นั่นตัว Compiler จะทำการ Compile ไฟล์ .cs ของเราไปเป็น MSIL Code หรือภาษากลางที่ตัว .NET Framework เข้าใจก่อนครับไม่ใช่ทำเป็น EXE โดยตรงเลยอย่างภาษา C\C++ นะครับ
เมื่อเราได้ MSIL มาแล้วเราถึงจะเอาตัว MSIL ที่เราได้ไปรันโดยผ่านตัว CLR (Common Language Runtime) หรือว่า .NET Framework นั่นเองโดยตัว CLR จะทำหน้าที่ในการแปลงตัว MSIL ไปเป็น Native Code หรือว่าภาษาเครื่องนั่นเองครับ โปรแกรมแกรมของเราจึงจะทำงานได้หรือพูดง่ายๆ ก็จะได้ประมาณนี้นะครับ
C# Code -> Compiler -> MSIL Code -> CLR -> Native Code
เอาละครับเรารู้หลักการทำงานเบื้องต้นกันไปแล้วทีนี้เรามาดูวิธีการ Decompiler กันดีกว่าครับ เริ่่มแรกเลยเราต้องสร้างโปรแกรมเพื่อให้ได้ EXE ที่เราจะเอามาทดสอบก่อนเลยครับ
ตัวอย่างแรกผมจะใช้โปรแกรม Hello world ในการทดสอบนะครับ
จากนั่นทำการ Compile โปรแกรมของเรานะครับเพื่อให้ได้ EXE มาโปนแกรม EXE เราจะอยู่ใน HelloWorld\bin\Debug นะครับ
เมื่อเราได้ EXE มาเละทีนี้เราก็มาดาวโหลดโปรแกรมที่เราจะมาใช้ในการทำ Decompiler ก่อนนะครับที่นี้ http://ilspy.net/ โปรแกรมชื่อว่า ILSpy เมื่อดาวโหลดมาเสร็จก็แตกซิปแล้วจะมีไฟล์ ILSpy.exe ให้รันโปรแกรมเลยครับ
จากนั่นให้ทำการ File -> Open แล้วไปที่ EXE ของเราเลยนะครับ จากนั่นให้เราคลิก Main ฟังก์ชั่นที่เราได้เขียนโปรแกรมมานะครับ
ทางด้านขวามือเราก็จะเห็น Source code ของ EXE ตัวนั่นแล้วละครับ ทีนี้เราจะมาลองยากขึ้นนะครับโดยการลอง Decompiler โปรแกรมที่มีความซับซ้อนเพิ่มมากขึ้นตามนี้
เห็นมั้ยครับเพียงเท่านี้เราก็สามารถจะทำการ Decompiler หรือ Disassembler ได้แล้วละครับ