เข้ารหัสให้กับ Assembly File (DLL และ EXE ไฟล์ ใน .NET Framework) โดยใช้ ConfuserEx

จากบทความทีผ่านมา ทำให้เราทราบว่า ไฟล์ DLL และ EXE ใน .NET Framework สามารถแปลงกลับไปเป็น C# ได้ (VB.NET ยังไม่ได้ทดสอบ) สำหรับใครที่กังวลในจุดนี้ คุณสามารถเข้ารหัสไฟล์ เพื่อไม่ให้แปลงกลับได้โดยใช้โปรแกรม ConfuserEx โปรแกรมที่ถูกพัฒนาโดย MIT และไม่เสียค่าใช้จ่ายในการใช้งาน

ขั้นตอนในการใช้งานมีดังนี้ (ขณะที่เขียน ConfuserEx เป็นเวอร์ชัน 0.5.0)

๑. ดาวน์โหลดโปรแกรม ConfuseEx ได้ที่ลิงค์นี้ จากนั้นคลิกไปที่ “ConfuserEx_bin.zip”

Capture

๒. ทำการแตกไฟล์ออกมา ผลที่ได้จะเป็นดังภาพ

Capture2

๓. การใช้งานจะมีสองแบบคือ GUI (ConfuserEx.exe) หรือ CommandLine (Confuser.CLI.exe) แต่ในที่นี้จะขอพูดถึงแค่การใช้ GUI เท่านั้น

๔. ดับเบิลคลิกที่ไฟล์  ConfuserEx.exe

๕. จะได้หน้าต่างดังรูป

Capture3

๖. เลือกโฟลเดอร์ที่บรรจุไฟล์ DLL และ EXE โดยคลิกปุ่ม Ellipsis (ปุ่ม จุดจุดจุด) ที่ท้าย Texebox ของ Base Directory เมื่อเลือกแล้วสังเกตว่า Textbox ของ Output Directory จะมีข้อมูลเช่นเดียวกับ Base Directory แต่มีโฟลเดอร์ Confused ต่อท้าย

โปรแกรมใช้ Output Directory เอาไว้เก็บไฟล์ DLL หรือ EXE ที่ถูกเข้ารหัสแล้วเมื่อกระบวนการเสร็จสิ้น คุณสามารถเปลี่ยนโฟลเดอร์ได้ตามใจชอบ

Capture13

๗. กดปุ่ม + แล้วเลือกไฟล์ DLL หรือ EXE ที่ต้องการเข้ารหัส

Capture14

๘. คลิกที่แท็บ Setting ที่แท็บนี้ จะเป็นการเซตความเข้มข้นในการเข้ารหัส

Capture5

๙. เลือกไฟล์ที่ต้องการเซต ถ้าต้องให้ทุกไฟล์เซตค่าเดียวกัน ให้เลือก <Global settings> จากนั้นกดปุ่ม + จะมีคำว่า true ปรากฎขึ้นมาใน Rules

Capture10

๑๐. คลิกที่คำว่า true จากนั้นคลิกปุ่ม Edit (ปุ่มที่มีภาพปากกาเขียนบนกระดาษ)

Capture11

๑๑. จะได้หน้าต่าง Edit rule ดังภาพ

Capture6

๑๒. เลือกความเข้มข้นของการเข้ารหัสที่ Preset ถ้าต้องการให้เข้ารหัสสูงสุด ให้เลือก Maximum จากนั้นคลิก Done หน้าต่าง Edit rule จะหายไป กลับสู่หน้าต่างหลัก

Capture12

๑๓. คลิกทีแท็บ Protect! จะได้ดังภาพ

Capture7

๑๔.กดปุ่ม Protect! จะมีการแสดงสถานะในการเข้ารหัส

Capture8

๑๕. รอจนมีสถานะว่า Finished ถือว่าจบสิ้นกระบวนการเข้ารหัส

ผลจากเข้ารหัส

๑. ไฟล์ที่ถูกเข้ารหัสไม่สามารถแปลงกลับเป็น C# เมื่อใช้ไฟล์ ILSPY (วิธีการใช้งาน ILSPY ดูได้ในบทความอื่น) (ทดสอบโดยใช้ Preset Maximum)

๒. ไฟล์ DLL ที่ถูกเข้ารหัส ไม่สามารถใช้ในขั้นตอนการพัฒนาซอฟท์แวร์ได้อีกต่อไป กล่าวคือถ้า Add reference ไฟล์ DLLที่ถูกเข้ารหัสใน Project ของ Visual Studio โปรแกรม Visual Studio จะไม่สามารถมองเห็นคลาสในไฟล์ DLL นั้น การ Using หรือเขียนโปรแกรมเพื่อใช้คลาส ก็ไม่สามารถใช้ได้เช่นเดียว

๓. ไฟล์ที่ถูกเข้ารหัสมีขนาดใหญ่ขึ้น จะใหญ่ขึ้นแค่ไหนนั้น ขึ้นอยู่กับค่า Preset ที่ผู้ใช้เลือก จากการทดสอบโดยใช้ Preset Maximum ไฟล์ EXE ขนาด ๑๐ กิโลไบท์ เมื่อเข้ารหัส ไฟล์ขยายกลายเป็น ๖๑ กิโลไบท์  ไฟล์ DLL ขนาด ๕ กิโลไบท์ เมื่อเข้ารหัส ไฟล์ขยายกลายเป็น ๕๑ กิโลไบท์

๔. ไฟล์ EXE และ DLL ที่มีอ้างอิงถึงกัน แม้จะเข้ารหัสแล้ว ก็ยังสามารถอ้างอิงไฟล์ที่ไม่ได้เข้ารหัสได้ เช่น Test1.exe มีการอ้างอิงคลาสใน Test2.dll ถ้าไฟล์ Test1.exe ถูกเข้ารหัส แต่ Test2.dll ไม่ได้เข้ารหัส โปรแกรมก็ยังสามารถใช้งานได้ตามปกติ ในทางกลับกัน ถ้า Test2.dll ถูกเข้ารหัส แต่ Test1.exe ไม่ได้เข้ารหัส โปรแกรมก็ยังใช้ได้เหมือนกัน

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s