ทําให้แอปพลิเคชัน Silverlight ของคุณสับสนด้วย Dotfuscator

ปรับปรุงหน้า :
วันที่สร้างเพจ :

เกี่ยวกับดอทฟุสคาเตอร์

Dotfuscator เป็น obfuscator ที่ทําให้ซอร์สโค้ดอ่านยากเมื่อแอปพลิเคชันที่เขียนด้วย. NET Framework ถูกถอดประกอบ Dotfuscator มีให้บริการทั้งในเวอร์ชันขายปลีกฟรีและแบบชําระเงินที่มาพร้อมกับ Visual Studio

เวอร์ชันฟรีมีให้เฉพาะกับคุณลักษณะที่ จํากัด มากมายและสมมติฐานที่ว่า Visual Studio กําลังทํางานอยู่ แต่ใครก็ตามที่ติดตั้ง Visual Studio สามารถใช้งานได้ รุ่นที่จําหน่ายได้แล้วมีคุณสมบัติที่ทําให้งงงวยที่มีประสิทธิภาพมากมายซึ่งไม่มีอยู่ในเวอร์ชันฟรี แต่อาจเป็นเรื่องที่น่ารําคาญที่เสนอในราคาที่ยากสําหรับประชาชนทั่วไปที่จะจ่ายได้

Dotfuscator อาจมีคุณสมบัติราคาและรุ่นที่แตกต่างกันขึ้นอยู่กับรุ่นดังนั้นโปรดดูรายละเอียดในเว็บไซต์ต่อไปนี้

ดอทฟุสคาเตอร์

รหัสแยกวิเคราะห์

ดังที่ได้กล่าวมาแล้วแอปพลิเคชันที่สร้างด้วย. NET Framework สามารถอ่านซอร์สโค้ดดั้งเดิมได้อย่างง่ายดายโดยการถอดชิ้นส่วน แต่สิ่งที่เกิดขึ้นจริงคือเมื่อคุณถอดแยกไฟล์แอสเซมบลีดังแสดงในรูปซอร์สโค้ดดั้งเดิมส่วนใหญ่เช่น namespaces ชื่อคลาสและชื่อเมธอดสามารถทําซ้ําได้

解析されたコード

ขั้นตอนการทําให้งงงวย

เริ่มต้นด้วยการสร้างโปรแกรมประยุกต์ Silverlight ตามปกติ และทํารุ่นรีลีส ที่นี่เรากําลังสร้างแอปพลิเคชันที่วางปุ่มเพียงสองปุ่มเท่านั้น

Release ビルド

ในโฟลเดอร์ Bin\Release ของโฟลเดอร์ที่มีโครงการอยู่ ให้พิมพ์ xap" เป็นแฟ้มแพคเกจที่สรุปโปรแกรมและแฟ้มที่ใช้ในโปรแกรมประยุกต์ Silverlight

XAP ファイル

จริงๆแล้วไฟล์นี้ถูกบีบอัดและคอมไพล์เป็นไฟล์ ZIP ดังนั้นนามสกุลคือ " ซิป".

拡張子を .zip に変更

มันถูกเปลี่ยนเป็นไฟล์ ZIP

ZIP ファイル

เมื่อคุณเปิดแฟ้ม จะประกอบด้วยแฟ้มรายการและ DLL DLL นี้เป็นรุ่นที่คอมไพล์แล้วของโปรแกรมที่ทํางานเป็นแอปพลิเคชัน

อย่างไรก็ตามไฟล์ DLL จะถูกวางไว้ในโฟลเดอร์ Release เมื่อสร้างขึ้นดังนั้นคราวนี้เราจะทําให้ไฟล์นี้สับสน

ZIP ファイルの中身

จากเมนู Visual Studio เลือก เครื่องมือ แล้วเลือก PreEmptive Dotfuscator และการวิเคราะห์

เมื่อเริ่มต้นเป็นครั้งแรกกล่องโต้ตอบ "ข้อตกลงใบอนุญาต" จะปรากฏขึ้นดังนั้นอ่านเนื้อหาอย่างละเอียดตรวจสอบ "ใช่ฉันยอมรับข้อตกลงใบอนุญาต" และคลิกปุ่ม "ตกลง"

PreEmptive Dotfuscator And Analytics を選択

เริ่มต้น Dotfuscator และการวิเคราะห์ล่วงหน้า

PreEmptive Dotfuscator And Analytics CE

เลือก "อินพุต" จากต้นไม้ทางด้านซ้ายและคลิกปุ่ม "เพิ่มอินพุต"

入力の追加

เลือกไฟล์ DLL ที่คุณสร้างขึ้นในระหว่างการสร้าง

ビルドで生成した DLL ファイルを選択

เลือกไฟล์ DLL ที่คุณเพิ่มและยกเลิกการเลือกโหมดไลบรารี>การแปลง XAML

หากมีการเลือก "โหมดไลบรารี" คลาสและวิธีการที่กําหนดไว้ในที่สาธารณะจะไม่สับสน

หากเลือก "การแปลง XAML" คลาสที่กําหนดไว้ใน XAML จะถูกทําให้งงงวย แต่ขึ้นอยู่กับว่าคุณสร้างมันอย่างไรมันจะทําให้เกิดข้อผิดพลาดในการเริ่มต้นดังนั้นหากเกิดขึ้นโปรดยกเลิกการเลือก

「ライブラリ モード」「XAML の変換」のチェックを外す

โดยทั่วไปคลาสวิธีการคุณสมบัติและชื่อตัวแปรทั้งหมดจะถูกทําให้งงงวย แต่ถ้าคุณไม่ต้องการทําให้เนมสเปซหรือคลาสเฉพาะสับสนเนื่องจากการออกหมายเลขกํากับให้เลือก "เปลี่ยนชื่อ" จากต้นไม้ทางด้านซ้ายเลือกแท็บ "ยกเว้น" และตรวจสอบเนมสเปซหรือคลาสเป้าหมาย

難読化の除外

ภายใต้ กฎที่มีอยู่แล้วภายใน ให้ตรวจสอบให้แน่ใจว่าได้เลือกฟิลด์สําหรับการควบคุมผู้ใช้ Silverlight และ WPF แล้ว การตรวจสอบสิ่งนี้จะทําให้ฟิลด์ UserControls สับสนและจะทํางานได้สําเร็จ คุณสามารถยกเลิกการเลือกได้หากดูเหมือนว่าจะทํางานได้อย่างถูกต้องแม้หลังจากทําให้งงงวย

Silverlight および WPF UserControls のフィールド

เมื่อเสร็จแล้วให้คลิกปุ่ม "สร้างโครงการ" จากแถบเครื่องมือ

プロジェクトのビルド

หากมีการเปลี่ยนแปลงโครงการกล่องโต้ตอบการยืนยันการบันทึกโครงการจะปรากฏขึ้นดังนั้นคลิก "ใช่" เพื่อบันทึก

プロジェクト保存確認ダイアログ

โครงการนี้เรียกว่า ". ไฟล์ xml" ไฟล์ Obfuscated จะถูกบันทึกไว้ในตําแหน่งเดียวกัน

プロジェクト保存

รอให้บิลด์เสร็จสมบูรณ์เมื่อเริ่มต้น โปรดทราบว่ายิ่งโปรแกรมมีขนาดใหญ่เท่าใดก็ยิ่งใช้เวลาในการสร้างนานขึ้นเท่านั้น เมื่อดูเหมือนรูปการสร้างจะเสร็จสมบูรณ์

ช่องข้อความแสดงความคืบหน้าของบิลด์และผลลัพธ์โดยย่อ เช่น ความสับสนของบิลด์นั้น

ビルド完了

ถ้าคุณเลือก ผลลัพธ์จากแผนภูมิทางด้านซ้าย คุณสามารถดูรายละเอียดเกี่ยวกับการเปลี่ยนแปลงของคลาสและชื่อเมธอดได้

ภายใต้ชื่อคลาสและวิธีการจะมีไอคอน Dotfuscator และชื่อเช่น "a" และ "b" ซึ่งจะเป็นชื่อที่ทําให้งงงวย โดยการเปลี่ยนชื่อคลาสหรือชื่อเมธอดเป็นชื่อที่ไม่มีความหมายด้วยวิธีนี้แม้ว่าจะถอดประกอบแต่ก็สามารถทําให้เนื้อหาของซอร์สโค้ดอ่านยาก

難読化結果

ไฟล์ obfuscated ถูกสร้างขึ้นในโฟลเดอร์ที่เรียกว่า "Dotfuscated" ในโฟลเดอร์ของไฟล์ .xml ที่บันทึกไว้ในบันทึกโครงการ นอกจากไฟล์ obfuscated แล้วยังมีการสร้างไฟล์ "Map.xml" แต่นี่เป็นผลมาจากการทําให้งงงวยและไม่ได้ใช้

難読化したファイル

หากคุณแยกไฟล์ obfuscated คุณจะเห็นว่าชื่อคลาสและวิธีการบางชื่อถูกเปลี่ยนเป็น "a" หรือ "b"

คราวนี้โครงการเริ่มต้นที่สร้างขึ้นนั้นสับสนเกือบเหมือนเดิมดังนั้นฉันคิดว่ามีภาพที่ไม่สับสน แต่ฉันคิดว่าผลของความสับสนจะชัดเจนขึ้นเพราะจํานวนชั้นเรียน ฯลฯ เพิ่มขึ้นเมื่อโครงการเติบโตขึ้น

กัน, . ไลบรารี NET Framework และไม่อยู่ภายใต้การเปลี่ยนชื่อเนื่องจากเป็นแอสเซมบลีที่ติดตั้งไว้แล้วบน Windows เป็นต้น

難読化したコードの解析

Silverlight ไม่ได้ใช้ DLL ตามที่เป็นอยู่ ดังนั้นจึงถูกจัดแพคเกจเป็นไฟล์ XAP ดังที่ได้กล่าวไว้ในตอนต้นไฟล์ XAP เป็นเพียงการเปลี่ยนแปลงในนามสกุลของไฟล์ ZIP ดังนั้นจึงสร้างไฟล์ ZIP โดยรวบรวมไฟล์ที่มีอยู่ในไฟล์ XAP และ DLL ที่สับสน

การสร้างไฟล์ ZIP สามารถทําได้โดยใช้คุณสมบัติระบบปฏิบัติการมาตรฐาน

ファイルを ZIP 化

ไฟล์ ZIP จะถูกสร้างขึ้น

ZIP ファイル

ส่วนขยายจะเปลี่ยนเป็น ' xap" และถ้าชื่อแฟ้มแตกต่างกัน ให้เปลี่ยนเป็นชื่อแฟ้มแพคเกจเดิม

วางไฟล์ XAP ในตําแหน่งการแจกจ่าย

XAP ファイルに変更

โปรดตรวจสอบการทํางานและดูว่าทํางานอย่างถูกต้องหรือไม่

หากไม่เริ่มทํางานให้ตรวจสอบจนกว่าจะทํางานได้ตามปกติโดยลดรหัสที่ทําให้งงงวย โปรดทราบว่า Silverlight มักจะติดอยู่ในเรื่องที่เกี่ยวข้องกับ XAML

動作確認

แม้ว่าคําแนะนําจะไม่แสดงอยู่ที่นี่ แต่ถ้าคุณต้องการเซ็นชื่อโปรแกรม ให้สร้างโปรแกรมในสถานะที่ลงนามล่าช้า ทําให้แอสเซมบลีสับสน แล้วเซ็นชื่อใหม่ แม้ว่าคุณจะทําให้งงงวยในขณะที่มีการลงนามรหัสลายเซ็นที่แนบมาในขณะที่สร้างและรหัสลายเซ็นหลังจาก obfuscation จะไม่ตรงกันดังนั้นคุณจะไม่สามารถเริ่มต้นได้

ในบทความนี้ฉันได้ระบุขั้นตอนสําหรับเวอร์ชันฟรี แต่ถ้าคุณใช้เวอร์ชันที่ต้องชําระเงินคุณสามารถทํา obfuscation ที่ซับซ้อนมากขึ้นและป้องกันการถอดแยกชิ้นส่วนได้ อย่างไรก็ตามความสับสนมีศักยภาพที่จะก่อให้เกิดผลข้างเคียงต่าง ๆ ดังนั้นเมื่อสร้างความสับสนมีความจําเป็นต้องพิจารณาว่าจะทํางานได้อย่างถูกต้องตั้งแต่เริ่มต้นการออกแบบหรือไม่