ทําให้แอปพลิเคชัน Silverlight ของคุณสับสนด้วย Dotfuscator
เกี่ยวกับดอทฟุสคาเตอร์
Dotfuscator เป็น obfuscator ที่ทําให้ซอร์สโค้ดอ่านยากเมื่อแอปพลิเคชันที่เขียนด้วย. NET Framework ถูกถอดประกอบ Dotfuscator มีให้บริการทั้งในเวอร์ชันขายปลีกฟรีและแบบชําระเงินที่มาพร้อมกับ Visual Studio
เวอร์ชันฟรีมีให้เฉพาะกับคุณลักษณะที่ จํากัด มากมายและสมมติฐานที่ว่า Visual Studio กําลังทํางานอยู่ แต่ใครก็ตามที่ติดตั้ง Visual Studio สามารถใช้งานได้ รุ่นที่จําหน่ายได้แล้วมีคุณสมบัติที่ทําให้งงงวยที่มีประสิทธิภาพมากมายซึ่งไม่มีอยู่ในเวอร์ชันฟรี แต่อาจเป็นเรื่องที่น่ารําคาญที่เสนอในราคาที่ยากสําหรับประชาชนทั่วไปที่จะจ่ายได้
Dotfuscator อาจมีคุณสมบัติราคาและรุ่นที่แตกต่างกันขึ้นอยู่กับรุ่นดังนั้นโปรดดูรายละเอียดในเว็บไซต์ต่อไปนี้
รหัสแยกวิเคราะห์
ดังที่ได้กล่าวมาแล้วแอปพลิเคชันที่สร้างด้วย. NET Framework สามารถอ่านซอร์สโค้ดดั้งเดิมได้อย่างง่ายดายโดยการถอดชิ้นส่วน แต่สิ่งที่เกิดขึ้นจริงคือเมื่อคุณถอดแยกไฟล์แอสเซมบลีดังแสดงในรูปซอร์สโค้ดดั้งเดิมส่วนใหญ่เช่น namespaces ชื่อคลาสและชื่อเมธอดสามารถทําซ้ําได้
ขั้นตอนการทําให้งงงวย
เริ่มต้นด้วยการสร้างโปรแกรมประยุกต์ Silverlight ตามปกติ และทํารุ่นรีลีส ที่นี่เรากําลังสร้างแอปพลิเคชันที่วางปุ่มเพียงสองปุ่มเท่านั้น
ในโฟลเดอร์ Bin\Release ของโฟลเดอร์ที่มีโครงการอยู่ ให้พิมพ์ xap" เป็นแฟ้มแพคเกจที่สรุปโปรแกรมและแฟ้มที่ใช้ในโปรแกรมประยุกต์ Silverlight
จริงๆแล้วไฟล์นี้ถูกบีบอัดและคอมไพล์เป็นไฟล์ ZIP ดังนั้นนามสกุลคือ " ซิป".
มันถูกเปลี่ยนเป็นไฟล์ ZIP
เมื่อคุณเปิดแฟ้ม จะประกอบด้วยแฟ้มรายการและ DLL DLL นี้เป็นรุ่นที่คอมไพล์แล้วของโปรแกรมที่ทํางานเป็นแอปพลิเคชัน
อย่างไรก็ตามไฟล์ DLL จะถูกวางไว้ในโฟลเดอร์ Release เมื่อสร้างขึ้นดังนั้นคราวนี้เราจะทําให้ไฟล์นี้สับสน
จากเมนู Visual Studio เลือก เครื่องมือ แล้วเลือก PreEmptive Dotfuscator และการวิเคราะห์
เมื่อเริ่มต้นเป็นครั้งแรกกล่องโต้ตอบ "ข้อตกลงใบอนุญาต" จะปรากฏขึ้นดังนั้นอ่านเนื้อหาอย่างละเอียดตรวจสอบ "ใช่ฉันยอมรับข้อตกลงใบอนุญาต" และคลิกปุ่ม "ตกลง"
เริ่มต้น Dotfuscator และการวิเคราะห์ล่วงหน้า
เลือก "อินพุต" จากต้นไม้ทางด้านซ้ายและคลิกปุ่ม "เพิ่มอินพุต"
เลือกไฟล์ DLL ที่คุณสร้างขึ้นในระหว่างการสร้าง
เลือกไฟล์ DLL ที่คุณเพิ่มและยกเลิกการเลือกโหมดไลบรารี>การแปลง XAML
หากมีการเลือก "โหมดไลบรารี" คลาสและวิธีการที่กําหนดไว้ในที่สาธารณะจะไม่สับสน
หากเลือก "การแปลง XAML" คลาสที่กําหนดไว้ใน XAML จะถูกทําให้งงงวย แต่ขึ้นอยู่กับว่าคุณสร้างมันอย่างไรมันจะทําให้เกิดข้อผิดพลาดในการเริ่มต้นดังนั้นหากเกิดขึ้นโปรดยกเลิกการเลือก
โดยทั่วไปคลาสวิธีการคุณสมบัติและชื่อตัวแปรทั้งหมดจะถูกทําให้งงงวย แต่ถ้าคุณไม่ต้องการทําให้เนมสเปซหรือคลาสเฉพาะสับสนเนื่องจากการออกหมายเลขกํากับให้เลือก "เปลี่ยนชื่อ" จากต้นไม้ทางด้านซ้ายเลือกแท็บ "ยกเว้น" และตรวจสอบเนมสเปซหรือคลาสเป้าหมาย
ภายใต้ กฎที่มีอยู่แล้วภายใน ให้ตรวจสอบให้แน่ใจว่าได้เลือกฟิลด์สําหรับการควบคุมผู้ใช้ 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 จะถูกสร้างขึ้น
ส่วนขยายจะเปลี่ยนเป็น ' xap" และถ้าชื่อแฟ้มแตกต่างกัน ให้เปลี่ยนเป็นชื่อแฟ้มแพคเกจเดิม
วางไฟล์ XAP ในตําแหน่งการแจกจ่าย
โปรดตรวจสอบการทํางานและดูว่าทํางานอย่างถูกต้องหรือไม่
หากไม่เริ่มทํางานให้ตรวจสอบจนกว่าจะทํางานได้ตามปกติโดยลดรหัสที่ทําให้งงงวย โปรดทราบว่า Silverlight มักจะติดอยู่ในเรื่องที่เกี่ยวข้องกับ XAML
แม้ว่าคําแนะนําจะไม่แสดงอยู่ที่นี่ แต่ถ้าคุณต้องการเซ็นชื่อโปรแกรม ให้สร้างโปรแกรมในสถานะที่ลงนามล่าช้า ทําให้แอสเซมบลีสับสน แล้วเซ็นชื่อใหม่ แม้ว่าคุณจะทําให้งงงวยในขณะที่มีการลงนามรหัสลายเซ็นที่แนบมาในขณะที่สร้างและรหัสลายเซ็นหลังจาก obfuscation จะไม่ตรงกันดังนั้นคุณจะไม่สามารถเริ่มต้นได้
ในบทความนี้ฉันได้ระบุขั้นตอนสําหรับเวอร์ชันฟรี แต่ถ้าคุณใช้เวอร์ชันที่ต้องชําระเงินคุณสามารถทํา obfuscation ที่ซับซ้อนมากขึ้นและป้องกันการถอดแยกชิ้นส่วนได้ อย่างไรก็ตามความสับสนมีศักยภาพที่จะก่อให้เกิดผลข้างเคียงต่าง ๆ ดังนั้นเมื่อสร้างความสับสนมีความจําเป็นต้องพิจารณาว่าจะทํางานได้อย่างถูกต้องตั้งแต่เริ่มต้นการออกแบบหรือไม่