เครื่องมือ / กลยุทธ์. ทำให้งงงวย NET [ปิด]


160

ผลิตภัณฑ์ของฉันมีองค์ประกอบหลายอย่าง: ASP.NET, Windows Forms App และ Windows Service รหัส 95% หรือมากกว่านั้นถูกเขียนใน VB.NET

ด้วยเหตุผลด้านทรัพย์สินทางปัญญาฉันต้องทำให้งงงวยรหัสและจนถึงตอนนี้ฉันได้ใช้ dotfuscator รุ่นที่อายุ 5 ปีขึ้นไป ฉันคิดว่ามันเป็นเวลาที่จะย้ายไปที่เครื่องมือรุ่นใหม่ สิ่งที่ฉันกำลังมองหาคือรายการข้อกำหนดที่ฉันควรพิจารณาเมื่อค้นหา obfuscator ใหม่

สิ่งที่ฉันรู้ว่าฉันควรมองหาจนถึง:

  • อันดับ / De-อนุกรม ในโซลูชันปัจจุบันของฉันฉันเพียงแค่บอกเครื่องมือไม่ให้สมาชิกคลาสข้อมูลใด ๆ ยุ่งเพราะความเจ็บปวดที่ไม่สามารถโหลดข้อมูลซึ่งต่อเนื่องกันก่อนหน้านี้มีขนาดใหญ่เกินไป
  • บูรณาการกับกระบวนการสร้าง
  • การทำงานกับ ASP.NET ในอดีตฉันได้พบปัญหานี้เนื่องจากการเปลี่ยนชื่อ. dll (คุณมักจะมีหนึ่งต่อหน้า) ซึ่งเครื่องมือไม่ได้ทั้งหมดจัดการได้ดี

รายการซ้ำหลายรายการ: google.com/…
— John Rasch


ดูAgile.net .NET Obfuscatorสำหรับทางเลือกอื่นในการทำให้รหัสของคุณยุ่งเหยิง โดยเฉพาะอย่างยิ่งตรวจสอบคุณสมบัติการจำลองเสมือนของโค้ด
— sutton bernard

ดูรายชื่อ obfuscators จาก ArmDot ถึง Xenocode ได้ที่นี่ใน SO: stackoverflow.com/a/60054/1480104
— Artem Razin

คำตอบ:


43

กลับมาพร้อมกับ. Net 1.1 การทำให้งงงวยเป็นสิ่งสำคัญ: การถอดรหัสรหัสทำได้ง่ายและคุณสามารถเปลี่ยนจากชุดประกอบ, ถึง IL, ถึงรหัส C # และให้คอมไพล์อีกครั้งด้วยความพยายามน้อยมาก

ขณะนี้ใช้. Net 3.5 ฉันไม่แน่ใจ ลองแยกส่วนประกอบ 3.5 ออก สิ่งที่คุณได้รับคือการรวบรวมจากทางไกล

เพิ่มการออปติไมซ์จาก 3.5 (ดีกว่า 1.1) และวิธีการจัดการประเภทผู้ไม่ระบุชื่อผู้ได้รับมอบหมายและอื่น ๆ โดยใช้การสะท้อน (เป็นฝันร้ายในการคอมไพล์ซ้ำ) เพิ่มการแสดงออกแลมบ์ดา, 'วิเศษ' ของคอมไพเลอร์เช่น Linq-syntax และvarและฟังก์ชั่น C # 2 เช่นyield(ซึ่งส่งผลให้คลาสใหม่มีชื่อที่อ่านไม่ได้) โค้ดที่ถอดรหัสของคุณจะจบลงด้วยวิธีที่ยาวไกลจากการคอมไพล์

ทีมงานมืออาชีพที่มีเวลามากยังสามารถทำวิศวกรรมย้อนกลับได้อีก แต่ก็เหมือนกันกับรหัสที่ยุ่งเหยิง รหัสอะไรที่พวกเขาได้รับจากการที่จะไม่สามารถรักษาได้และมีแนวโน้มสูงที่จะเป็นรถบั๊กกี้

ฉันขอแนะนำให้ลงนามในชุดประกอบของคุณ (หมายถึงว่าแฮ็กเกอร์สามารถคอมไพล์ใหม่ได้ซึ่งพวกเขาต้องคอมไพล์ใหม่ทั้งหมด) แต่ฉันไม่คิดว่ามันจะคุ้มค่า


127
ไม่เห็นด้วยอย่างยิ่ง การลงนามไม่สามารถแทนที่การทำให้งงงวยได้ การลงนามมีจุดประสงค์เพื่อการแฮ็ครหัสของคุณ แต่ถ้าคุณจะซ่อนความคิดอัลกอริทึมและการทำให้งง ฯลฯ เป็นวิธีเดียว
— Shrike

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

6
การทำให้งงงวยอาจไม่คุ้มค่าหากคุณพูดถึงทีมที่มีทรัพยากรจำนวนมาก แต่การทำให้งงงวยเป็นสิ่งที่ดีในการป้องกันนักพัฒนา "เฉลี่ย" ที่ต้องการอะไรมากกว่าการใช้ Reflector เพื่อเปิดแอสเซมบลีของคุณและบันทึกซอร์สโค้ด เป็นโครงการและทำการปรับ การทำให้งงงวยมีอยู่แล้วและกำจัดมันออกไปโดยสิ้นเชิงคือทัศนคติที่ผิด มันเป็นชั้นของการป้องกัน
— มีดโกน

5
เมื่อคุณถอดรหัสคอมไพล์แหล่งที่อยู่ในสถานะยุ่งเหยิง แต่มีเหตุผลมันยังคงตามเส้นทางเดียวกัน ไม่มี 'มายากล' ของผู้แปล ฉันรู้เพราะฉันสูญเสียพื้นที่เก็บข้อมูลเมื่อเร็ว ๆ นี้และใช้ตัวสะท้อนสัญญาณเพื่อกู้คืนรหัสต้นฉบับ การทำให้งงงวยเป็นเพียงความเจ็บปวดที่จะ "รักษา" ถ้ามันไม่ได้เป็นส่วนหนึ่งของกระบวนการสร้างของคุณ มันเพิ่มค่าใช้จ่าย แต่เราทุกคนกำลังเขียนแอพที่ใช้งานเชิงคำนวณหรือไม่? ไม่มันเป็นเลเยอร์ป้องกันที่อ่อนแอสำหรับผู้โจมตีที่อ่อนแอ
— มีดโกน

8
ช่างเป็นคำตอบที่น่ากลัว คุณลอง decompiling เร็ว ๆ นี้หรือไม่? Decompilers ได้รับดีกว่าไม่เลว Reflector ให้คุณภาพใกล้เคียงกับต้นฉบับ
— BlueRaja - Danny Pflughoeft

50

เราได้ลองใช้ผู้ที่มีปัญหาด้านจำนวนมากแล้ว ไม่สามารถทำงานกับแอปไคลเอนต์ / เซิร์ฟเวอร์ขนาดใหญ่ที่ใช้การควบคุมระยะไกล ปัญหาคือไคลเอนต์และเซิร์ฟเวอร์แชร์ dlls บางตัวและเราไม่พบ obfuscator ที่สามารถจัดการได้

เราได้ลองใช้ DotFuscator Pro, SmartAssembly, XenoCode, Salamander และแอพเล็ก ๆ หลายครั้งที่ชื่อของฉันหนีรอดมาได้

ตรงไปตรงมาฉันเชื่องงงวยเป็นแฮ็คใหญ่

แม้แต่ปัญหาที่อยู่ก็ไม่ได้เป็นปัญหาจริงทั้งหมด สิ่งเดียวที่คุณต้องปกป้องจริงๆคือสตริงการเชื่อมต่อรหัสเปิดใช้งานสิ่งที่ไวต่อความปลอดภัยเช่นนั้น เรื่องไร้สาระนี้ที่ บริษัท อื่นกำลังทำวิศวกรรมย้อนกลับโค้ดเบสทั้งหมดของคุณและสร้างผลิตภัณฑ์คู่แข่งจากสิ่งที่เป็นฝันร้ายของผู้จัดการหวาดระแวงไม่ใช่ความจริง


14
ไชโยยูดาห์! วิธีเดียวที่จะอยู่ข้างหน้าคือการพัฒนาโค้ดใหม่ที่ดีกว่าไม่ยึดติดกับโค้ดที่คุณเขียนไปแล้ว คุณต้องลงทุนเวลาความพยายามและแม้แต่เงินในสิ่งที่ไม่เกี่ยวข้อง การทำให้งงไม่คุ้มค่า
— David Rutten

180
นั่นเป็นเหตุผลที่ฉันไม่ชอบระบบชื่อเสียงนี้คุณมี 19 คะแนนโหวตและคุณไม่ได้ให้แอสเวิร์ก ผู้ใช้ไม่ได้ถามความคิดเห็นของคุณเกี่ยวกับการทำให้งงงวยเขาต้องการทราบเพิ่มเติมเกี่ยวกับเทคนิคการทำให้งงงวย
— backslash17

32
ฉันให้ข้อมูลเกี่ยวกับประสบการณ์ของฉันโดยใช้ obfuscators ที่มีอยู่หลายคน และความคิดเห็นของฉันได้มาจากประสบการณ์นั้น
— ยูดาห์กาเบรียล Himango

6
+1 สำหรับ "ตรงไปตรงมาฉันเชื่อว่าการทำให้งงงวยเป็นการแฮ็คขนาดใหญ่" คุณคงไม่ได้ดีไปกว่านี้อีกแล้ว
— Andrei Rînea

15
ความต้องการที่ถูกต้องในการปกป้องรหัสของคุณคือการขายแอพพิเศษราคาแพงให้กับ บริษัท ที่จะใช้ภายในด้วยผู้ใช้เพียงไม่กี่ราย สิ่งล่อใจคือการกลับรหัสเพื่ออนุญาตการแฮ็กและการปรับเปลี่ยนภายในเพื่อวัตถุประสงค์ของตนเองหลีกเลี่ยงสัญญาการบำรุงรักษาหรือแม้แต่แฮ็คเวอร์ชันทดลองเพื่อเอาสารพัดที่พวกเขาต้องการ
— Brady Moritz

44

ตอนนี้ฉัน 'Knee Deep' พยายามหาทางออกที่ดี นี่คือความประทับใจของฉัน

Xenocode - ฉันมีใบอนุญาตเก่าสำหรับ Xenocode2005 ซึ่งฉันเคยใช้ในการทำให้ชุดประกอบ. net 2.0 ของฉันสับสน มันทำงานได้ดีบน XP และเป็นทางออกที่ดี โครงการปัจจุบันของฉันคือ. net 3.5 และฉันอยู่บน Vista ฝ่ายสนับสนุนบอกให้ฉันไป แต่รุ่น 2005 ไม่ทำงานบน Vista (ล่ม) ดังนั้นฉันและตอนนี้ฉันต้องซื้อ 'PostBuild2008' ที่ราคา gobsmacking ของ $ 1900 นี่อาจเป็นเครื่องมือที่ดี แต่ฉันจะไม่ไปหา แพงเกินไป.

Reactor.Net - นี่คือจุดราคาที่น่าสนใจยิ่งขึ้นและทำงานได้ดีบน Standalone Executeable ของฉัน โมดูลการออกใบอนุญาตก็ดีและจะช่วยให้ฉันพยายาม น่าเสียดายที่คุณลักษณะสำคัญขาดหายไปและนั่นคือความสามารถในการแยกเนื้อหาออกจากการทำให้งงงวย สิ่งนี้ทำให้มันเป็นไปไม่ได้ที่จะบรรลุผลตามที่ฉันต้องการ (รวมหลายชุดเข้าด้วยกันทำให้งงงวยบางส่วน

SmartAssembly - ฉันดาวน์โหลด Eval สำหรับเรื่องนี้และมันทำงานได้อย่างไม่มีที่ติ ฉันสามารถบรรลุทุกสิ่งที่ฉันต้องการและอินเทอร์เฟซเป็นชั้นหนึ่ง จุดราคายังคงค่อนข้างหนัก

Dotfuscator Pro - ไม่พบราคาบนเว็บไซต์ กำลังสนทนาเพื่อขอรับใบเสนอราคา ฟังดูเป็นลางไม่ดี

Confuser - โครงการโอเพ่นซอร์สซึ่งทำงานได้ค่อนข้างดี (เพื่อสร้างความสับสนให้กับ ppl เช่นเดียวกับที่บอกเป็นนัย ๆ )

หมายเหตุ: ConfuserEx มีรายงานว่า "เสีย" ตามปัญหา # 498ใน GitHub repo


8
คุณสามารถโพสต์เท่าใด dotfuscator ที่ยกมา?
— Anthony Johnston

6
@ อันธพาลฉันเพิ่งซื้อใบอนุญาตในต้นปี 2011 อ้างเป็น $ 2,475 USD สำหรับขั้นต่ำ 1 เครื่องสร้าง + 1 ใบอนุญาตนักพัฒนา รวมถึงการอัพเกรดและสนับสนุน 12 เดือน
— โยชิ

2
ฉันไม่ได้ใช้. NET Reactor เมื่อสร้างโพสต์นี้ แต่ตอนนี้คุณสามารถยกเว้นบางส่วนของรหัสของคุณจากการทำให้งงโดยใช้แอตทริบิวต์ System.Reflection.Obfuscation นอกจากนี้ยังมีการตั้งค่าบางอย่างที่ช่วยให้คุณทำสิ่งต่าง ๆ เช่นแยกวิธีทั้งหมดหรือประเภทที่ต่อเนื่องกันได้ทั้งหมด
— benteight

5
DotFuscator เสนอราคา $ 4999 ให้ฉันซึ่งลดลงเหลือ $ 4500 เพราะมีส่วนลด 10% นี่เป็นสิทธิ์การใช้งาน 1 dev! ในการอภิปรายลดลงเหลือ $ 2,500 แต่ก็แพงเกินไป
— โอลิเวอร์

3
. NET Reactor ขณะนี้มีตัวแก้ไขกฎการยกเว้นซึ่งอนุญาตให้ยกเว้นคลาสวิธีหรือคุณสมบัติบางอย่างจากการทำให้งงงวย นอกจากนี้คุณสามารถใช้ช่องทำเครื่องหมาย "รวมเท่านั้น" เพื่อแยก dll ที่ระบุจากความสับสน
— avitenberg

23

หากคุณกำลังมองหาฟรีหนึ่งคุณอาจจะลอง DotObfuscator Community Edition ที่มาพร้อมกับ Visual Studio หรือEazfuscator.NET


ตั้งแต่วันที่ 29 มิถุนายน 2555 Eazfuscator.NET ได้เปิดให้บริการเชิงพาณิชย์แล้ว รุ่นล่าสุดที่ให้บริการฟรีคือ 3.3


18

ฉันใช้อุปกรณ์ประกอบสมาร์ท โดยทั่วไปคุณเลือก dll และส่งคืนมันทำให้งงงวย ดูเหมือนว่าจะทำงานได้ดีและฉันก็ไม่มีปัญหา ใช้งานง่ายมาก


6
Smartassembly ค่อนข้างไร้ประโยชน์ แคร็กเกอร์ทำให้แอปพลิเคชันของคุณเข้าสู่ DumbAssembly และ "การป้องกัน" ทั้งหมดถูกลบออกด้วยการคลิกเมาส์: woodmann.com/collaborative/tools/index.php/Dumbassembly
— Elmue

2
ณ ตอนนี้ Google Safe Browsing ติดธงทำเครื่องหมายไซต์ของ woodmann ว่าไม่ปลอดภัย นอกจากนี้ไซต์ของ woodmann มีบทความทั้งหมดเกี่ยวกับเขาที่เคยติดเชื้อมัลแวร์ดังนั้นฉันจึงไม่ต้องการสำรวจไซต์ของเขาเมื่อ Google ไม่เชื่อถือ
— Brian

10

ฉันลอง obfuscator เกือบทุกตัวในตลาดและ SmartAssembly ดีที่สุดในความคิดของฉัน


6
Smartassembly ค่อนข้างไร้ประโยชน์ แคร็กเกอร์ทำให้แอปพลิเคชันของคุณเข้าสู่ DumbAssembly และ "การป้องกัน" ทั้งหมดถูกลบออกด้วยการคลิกเมาส์: woodmann.com/collaborative/tools/index.php/Dumbassembly
— Elmue

3
ณ ตอนนี้ Google Safe Browsing ติดธงทำเครื่องหมายไซต์ของ woodmann ว่าไม่ปลอดภัย นอกจากนี้ไซต์ของ woodmann มีบทความทั้งหมดเกี่ยวกับเขาที่เคยติดเชื้อมัลแวร์ดังนั้นฉันจึงไม่ต้องการสำรวจไซต์ของเขาเมื่อ Google ไม่เชื่อถือ
— Brian

9

ฉันใช้ SmartAssembly ด้วยเช่นกัน ฉันพบว่า Ezrinz .Net Reactor ดีกว่ามากสำหรับฉันในแอปพลิเคชั่น. net มันทำให้งงงวยสนับสนุน Mono รวมแอสเซมบลีและยังมีโมดูลสิทธิ์การใช้งานที่ดีมากในการสร้างรุ่นทดลองหรือเชื่อมโยงสิทธิ์การใช้งานไปยังเครื่องเฉพาะ (ง่ายมากที่จะใช้) ราคายังมีการแข่งขันสูงและเมื่อฉันต้องการการสนับสนุนพวกเขาในที่ที่รวดเร็ว Eziriz

เพื่อความชัดเจนฉันเป็นเพียงผู้รับฝากทรัพย์สินที่ชอบผลิตภัณฑ์และไม่เกี่ยวข้องกับ บริษัท ในทางใดทางหนึ่ง


ฉันมีเพื่อนหลายคนที่สาบานโดย. Reactor ถึงแม้ว่าจะไม่ได้อยู่ในเว็บไซต์ของผลิตภัณฑ์มีกลุ่ม Google ที่เป็นประโยชน์สำหรับผลิตภัณฑ์เช่นกัน: groups.google.com/group/net-reactor-users?hl=th
— Bittercoder

2
+1 สำหรับ Eziriz ฉันมีผลลัพธ์ที่ยอดเยี่ยมด้วย มันดีที่สุดตอนนี้ IMO
— Druid

4
เครื่องปฏิกรณ์. NET Sucks ฉันเปลี่ยนคอมพิวเตอร์ของฉันส่งอีเมลเกี่ยวกับไฟล์ลิขสิทธิ์สองครั้งและไม่ได้รับคำตอบ คุณเห็นใบอนุญาต. NET Reactor ถูกล็อคฮาร์ดแวร์
— OrElse

2
นั่นเป็นเรื่องปกติ คุณคาดหวังว่าพวกเขาเชื่อคุณอย่างไร พวกเขารู้ได้อย่างไรว่าคุณเปลี่ยนคอมพิวเตอร์ของคุณจริง ๆ และไม่พยายามเรียกใช้ใบอนุญาตของเพื่อนในคอมพิวเตอร์ของคุณ? เพราะนั่นคือการล็อคฮาร์ดแวร์! หากสามารถใช้กับคอมพิวเตอร์หลาย ๆ เครื่องได้การล็อกฮาร์ดแวร์จะไร้ประโยชน์
— Elmue

(PS. เราเลือกเครื่องปฏิกรณ์ส่วนใหญ่บนพื้นฐานของการตอบสนอง SO นี้)
— Chris

7

คำตอบสั้น ๆ คือคุณทำไม่ได้

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

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


51
ถ้า (ความพยายามจำเป็นต้องใช้> codeFromScratch.Costs) DoNoReverseEngineer ();
— Nicolas Dorier

41
@NicolasDorier,Operator '>' cannot be applied to operands of type 'System.TimeSpan' and 'decimal'
— Saeb Amini

21
@Saeb แน่ใจว่าพวกเขาทำได้การคัดเลือกจาก TimeSpan เป็นเงิน (ทศนิยม) เป็นสิ่งที่ธุรกิจส่วนใหญ่เกี่ยวกับ
— hultqvist

6

เรามีแอพหลายชั้นพร้อมด้วย asp.net และ winform interface ที่รองรับ remoting ฉันไม่มีปัญหากับการใช้ obfuscator ใด ๆ ยกเว้นประเภทการเข้ารหัสซึ่งสร้างตัวโหลดซึ่งอาจเป็นปัญหาในรูปแบบที่ไม่คาดคิดและไม่คุ้มกับความคิดของฉัน ที่จริงคำแนะนำของฉันจะมากขึ้นตามแนวของ "หลีกเลี่ยงการเข้ารหัสผู้โหลดประเภทผู้โหลดผู้ทำลายเช่นโรคระบาด" :)

จากประสบการณ์ของฉัน obfuscator จะทำงานได้ดีกับทุกด้านของ. net รวมถึง asp.net และ remoting คุณเพียงแค่ต้องคุ้นเคยกับการตั้งค่าและเรียนรู้ว่าคุณสามารถผลักดันมันในส่วนใดของรหัสของคุณ และใช้เวลาในการลองทำวิศวกรรมย้อนกลับในสิ่งที่คุณได้รับและดูว่ามันทำงานอย่างไรกับการตั้งค่าต่างๆ

เราใช้เวลาหลายปีในแอพเชิงพาณิชย์ของเราและตัดสิน Spices obfuscator จาก 9rays.net เพราะราคาเหมาะสมมันทำงานได้และพวกเขาได้รับการสนับสนุนที่ดีแม้ว่าเราไม่ต้องการการสนับสนุนในปีที่ผ่านมาอีกต่อไป ฉันไม่คิดว่ามันเป็นเรื่องสำคัญที่คุณใช้ obfuscator ปัญหาและเส้นโค้งการเรียนรู้จะเหมือนกันถ้าคุณต้องการให้มันทำงานอย่างถูกต้องกับ remoting และ asp.net

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

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

มันง่ายมากที่จะทำสิ่งนี้ไกลเกินไปและมีผลกระทบด้านลบต่อลูกค้าและธุรกิจของคุณทำสิ่งที่ง่ายและสมเหตุสมผลแล้วไม่ต้องกังวลกับมัน


5

ในช่วงสองวันที่ผ่านมาฉันได้ทดลองใช้ Dotfuscator Community Edition ขั้นสูง (ดาวน์โหลดฟรีหลังจากลงทะเบียน CE พื้นฐานที่มาพร้อมกับ Visual Studio)

ฉันคิดว่าเหตุผลที่ผู้คนจำนวนมากไม่ใช้ความงงงวยเป็นตัวเลือกเริ่มต้นคือมันเป็นเรื่องยุ่งยากมากเมื่อเทียบกับความเสี่ยง ในโครงการทดสอบขนาดเล็กฉันสามารถเรียกใช้โค้ดที่สับสนได้โดยใช้ความพยายามอย่างมาก การปรับใช้โครงการง่ายๆผ่าน ClickOnce นั้นลำบาก แต่ทำได้หลังจากการเซ็นชื่อด้วย mage ด้วยตนเอง ปัญหาเดียวก็คือว่าเมื่อเกิดข้อผิดพลาดการติดตามสแต็กกลับมายุ่งเหยิงและ CE ไม่ได้มีการบรรจุ deobfuscator หรือ clarifier

ฉันพยายามทำให้งงว่าโครงการจริงซึ่งเป็น VSTO อยู่ใน Excel ด้วยการรวมโลกเสมือนจริงการโทรผ่านเว็บเซอร์จำนวนมากและที่เก็บ IOC และการสะท้อนจำนวนมาก มันเป็นไปไม่ได้

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


5

Crypto Obfuscatorตอบข้อกังวลและสถานการณ์ทั้งหมดของคุณ มัน:

  1. แยกประเภท / สมาชิกโดยอัตโนมัติจากการทำให้งงงวยตามกฎ ประเภท / ฟิลด์ที่ต่อเนื่องเป็นหนึ่งในนั้น
  2. มันสามารถรวมเข้ากับกระบวนการสร้างโดยใช้ MSBUild
  3. รองรับโครงการ ASP.Net

3
fyi @logicnp เขียน Crypto
— CAD bloke

Crypto ดูเหมือนจะไม่ได้รับการสนับสนุนอีกต่อไป
— คาร์ล

ฉันได้ลองหลายครั้ง "Crypto" ดูก้าวร้าวและเป็นประโยชน์มาก แต่เมื่อใช้ DLL ที่ obfuscated ใน De4dot ฉันได้รับรหัสดั้งเดิม ... ขออภัยที่ทำให้พรรคเสียหาย ....
— Dave Gahan

4

เมื่อเร็ว ๆ นี้ฉันได้ลองส่งออก obfuscator ฟรีหนึ่งไปยังอีก obfuscator ฟรี - คือ Dotfuscator CE และ Babel obfuscator ใหม่ใน CodePlex รายละเอียดเพิ่มเติมเกี่ยวกับบล็อกของฉันในบล็อกของฉัน

สำหรับการทำให้เป็นอันดับฉันได้ย้ายรหัสนั้นไปยัง DLL อื่นและรวมไว้ในโครงการ ฉันให้เหตุผลว่าไม่มีความลับใด ๆ ในนั้นที่ไม่ได้อยู่ใน XML ดังนั้นจึงไม่จำเป็นต้องทำให้งงงวย หากมีรหัสร้ายแรงในคลาสเหล่านั้นการใช้คลาสบางส่วนในชุดประกอบหลักควรครอบคลุม


-1, เพราะ "yawaw, ฉันได้ยินคุณชอบ obfuscators ดังนั้นฉันจึงวิ่ง obfuscator บนผลลัพธ์ของ obfuscator ... ต้องการทราบเพิ่มเติมหรือไม่หน้าฮิต gimme" แต่ฉันคิดว่าย่อหน้าที่สองเป็นคำแนะนำที่ดีมาก
— Aneves

3

คุณควรใช้สิ่งที่ถูกที่สุดและรู้จักกันดีที่สุดสำหรับแพลตฟอร์มของคุณและเรียกมันว่าวัน การทำให้สับสนของภาษาระดับสูงเป็นปัญหาที่ยากเพราะสตรีม VM opcode ไม่ได้รับผลกระทบจากปัญหาใหญ่ที่สุดสองประการของสตรีม opcode ดั้งเดิม: การระบุฟังก์ชั่น / วิธีการและการลงนามนามแฝง

สิ่งที่คุณควรรู้เกี่ยวกับการย้อนกลับของ bytecode ก็คือมันเป็นแนวปฏิบัติมาตรฐานสำหรับผู้ทดสอบความปลอดภัยเพื่อตรวจสอบรหัส X86 ที่ตรงและหาช่องโหว่ในตัว ใน raw X86 คุณไม่สามารถหาฟังก์ชั่นที่ถูกต้องได้เลยติดตามตัวแปรในเครื่องตลอดการเรียกใช้ฟังก์ชัน ในกรณีที่ไม่มีการย้อนกลับของรหัสเนทีฟมีการเข้าถึงฟังก์ชั่นและชื่อตัวแปร --- ยกเว้นว่าพวกเขากำลังตรวจสอบโค้ดของ Microsoft ซึ่ง MSFT ให้ข้อมูลนั้นแก่สาธารณชนอย่างเป็นประโยชน์

"Dotfuscation" ทำงานเป็นหลักโดยฟังก์ชัน scrambling และชื่อตัวแปร การทำเช่นนี้น่าจะดีกว่าการเผยแพร่โค้ดที่มีข้อมูลระดับการดีบักซึ่งตัวสะท้อนแสงจะให้ซอร์สโค้ดของคุณอย่างแท้จริง แต่สิ่งที่คุณทำเกินกว่านี้น่าจะเป็นผลตอบแทนที่ลดลง



3

คุณสามารถใช้ "Dotfuscator Community Edition" ได้ - โดยค่าเริ่มต้นใน Visual Studio 2008 Professional คุณสามารถอ่านเกี่ยวกับเรื่องนี้ได้ที่:

http://msdn.microsoft.com/en-us/library/ms227240%28VS.80%29.aspx
http://www.preemptive.com/dotfuscator.html

รุ่น "Professional" ของผลิตภัณฑ์มีค่าใช้จ่าย แต่จะดีกว่า

คุณต้องการรหัสของคุณสับสนหรือไม่? โดยปกติจะมีความผิดพลาดเล็กน้อยในการแยกแอปพลิเคชันของคุณยกเว้นว่าใช้เพื่อวัตถุประสงค์ด้านความปลอดภัย หากคุณกังวลเกี่ยวกับคนที่ "ขโมย" รหัสของคุณอย่าเป็นเช่นนั้น คนส่วนใหญ่ที่ดูรหัสของคุณจะมีจุดประสงค์เพื่อการเรียนรู้ อย่างไรก็ตามไม่มีกลยุทธ์การทำให้งงงวยที่มีประสิทธิภาพโดยสิ้นเชิงสำหรับ. NET - คนที่มีทักษะเพียงพอจะสามารถแยก / เปลี่ยนแอปพลิเคชันของคุณได้เสมอ


+1 สำหรับสิ่งนี้ ฉันได้ลอง. obfuscator. NET ฟรีทุกครั้งที่นั่นและ Dotfuscator เป็นเพียงคนเดียวที่ทำให้สับสนกับ MSIL ในแอพพลิเคชัน ASP.NET ของฉัน
— แล่นเรือออกไป

@Saille คุณเคยใช้ Dotfuscator - Community Edition ฟรีหรือเปล่า? ฉันเพิ่งมีการแชทการขายและพวกเขาบอกว่ารุ่นโปรราคา 2,000 ยูโร :(
— Houman

Dotfuscator ไม่มีค่า
— user626528

3

หลีกเลี่ยงเครื่องปฏิกรณ์ มันไม่มีประโยชน์อย่างสมบูรณ์ (และใช่ฉันจ่ายค่าใบอนุญาต) Xenocode เป็นสิ่งที่ดีที่สุดที่ฉันพบและซื้อใบอนุญาตด้วย การสนับสนุนดีมาก แต่ฉันไม่ต้องการมันมากเท่าที่ใช้งานได้ ฉันทดสอบ obfuscator ทุกตัวที่ฉันหาได้และข้อสรุปของฉันคือ xenocode อยู่ไกลและแข็งแกร่งที่สุดและทำงานได้ดีที่สุด (ยังมีความเป็นไปได้ที่จะโพสต์ประมวลผล. NET exe ของคุณไปเป็น exe พื้นเมืองซึ่งฉันไม่เห็นที่อื่นเลย)

มีความแตกต่างที่สำคัญสองประการระหว่างเครื่องปฏิกรณ์กับ xenocode คนแรกคือ Xenocode ใช้งานได้จริง อย่างที่สองก็คือความเร็วในการประมวลผลของชุดประกอบของคุณไม่แตกต่างกัน ด้วยเครื่องปฏิกรณ์มันช้าลงประมาณ 6 ล้านครั้ง ฉันยังได้รับความประทับใจว่าเครื่องปฏิกรณ์เป็นปฏิบัติการชายคนหนึ่ง


เครื่องปฏิกรณ์. NET มีตัวเลือกมากมาย บางคนเกี่ยวข้องกับการป้องกันแบบรันไทม์และจะทำให้แอปพลิเคชั่นช้าลงเล็กน้อย แต่ฉันอย่างจริงจังข้อสงสัยว่าจะมีลงช้า ๆ ถ้าคุณแค่ใช้เครื่องปฏิกรณ์ .NET obfuscation โดยไม่มีตัวเลือกอื่น ๆ
— avitenberg

3

ฉันพบว่า Agile.Net ให้การปกป้องที่ดีสำหรับแอสเซมบลี. net ของคุณเนื่องจากไม่เพียง แต่ให้ความสับสน ดาวน์โหลดเส้นทางฟรี
http://secureteam.net/NET-Code-Protection.aspx http://secureteam.net/downloads.aspx


3
Eazfuscator บอกว่าทำไมไม่สั่ง MSIL: ดูgapotchenko.com/eazfuscator.net/kb/100028
— QMaster

2

ฉันสับสนกับรหัสในแอพพลิเคชั่นเดียวกันตั้งแต่. Net 1 และมันก็ปวดหัวที่สำคัญจากมุมมองการบำรุงรักษา ดังที่คุณได้กล่าวไปแล้วปัญหาการทำให้เป็นอนุกรมสามารถหลีกเลี่ยงได้ แต่มันง่ายมากที่จะทำผิดพลาดและทำให้งงงวยบางสิ่งที่คุณไม่ต้องการทำให้งง มันง่ายที่จะทำลายการสร้างหรือเปลี่ยนรูปแบบ obfuscation และไม่สามารถเปิดไฟล์เก่าได้ รวมทั้งอาจเป็นเรื่องยากที่จะค้นหาสิ่งที่ผิดพลาดและสถานที่

ตัวเลือกของเราคือ Xenocode และฉันต้องเลือกอีกครั้งในวันนี้ฉันไม่ต้องการทำให้งงงวยรหัสหรือใช้ Dotfuscator



1

เรากำลังใช้ SmartAssembly บนไคลเอนต์ windows ของเรา ทำงานได้ดี

เพิ่มปัญหาพิเศษบางอย่างเช่นกัน การพิมพ์ชื่อคลาสของคุณในล็อกไฟล์ / ข้อยกเว้นจะต้องไม่ทำให้งงงวย และแน่นอนไม่สามารถสร้างคลาสได้จากชื่อของมัน ดังนั้นจึงเป็นความคิดที่ดีที่จะมองลูกค้าของคุณและดูว่าปัญหาใดที่คุณจะได้รับจากการทำให้งงงวย




1

ฉันต้องใช้ obfuscation / การป้องกันทรัพยากรใน rpoject ล่าสุดของฉันและพบCrypto Obfuscatorเป็นเครื่องมือที่ดีและใช้งานง่าย ปัญหาการทำให้เป็นอันดับเป็นเรื่องของการตั้งค่าในเครื่องมือนี้เท่านั้น


@logicnp นี่คือการโพสต์ที่สองของคุณในหัวข้อนี้รับรองผลิตภัณฑ์นี้ โปรดเปิดเผยหากคุณมีความสัมพันธ์กับผู้พัฒนาผลิตภัณฑ์นี้
— H2ONaCl

ขออภัยที่de4dotสามารถdeobfuscateได้ ฉันจะแนะนำให้ใช้ConfuserEx
— newbieguy

1

มีรุ่นโอเพนซอร์ซที่ดีที่เรียกว่า Obfuscar ดูเหมือนว่าจะทำงานได้ดี ประเภทคุณสมบัติฟิลด์วิธีการสามารถแยกออกได้ ต้นฉบับอยู่ที่นี่: https://code.google.com/p/obfuscar/แต่เนื่องจากดูเหมือนว่าจะไม่ได้รับการอัปเดตอีกต่อไป


ฉันได้ดูที่นี่วันนี้ - วันที่บันทึกความคิดเห็นของฉัน! - และมันค่อนข้างยุ่งที่จะไป ฉันได้สูญเสียส่วนที่ดีที่สุดของชั่วโมงพยายามที่จะได้รับมันอีกครั้งลงนามการชุมนุมโดยใช้ไฟล์. pfx มันโยนความผิดพลาดที่ไม่สามารถเข้าใจได้ ดูเหมือนว่าคุณจะสามารถลงชื่อเข้าใช้ด้วย. snk เท่านั้น
— SteveCinq

0

นอกจากนี้คุณยังอาจต้องการที่จะมองไปที่เทคโนโลยีป้องกันรหัสใหม่ ๆ เช่นMetaforicและViLabsและเทคโนโลยีป้องกันการคัดลอกซอฟแวร์ใหม่ ๆ เช่นByteShield การเปิดเผยข้อมูล: ฉันทำงานกับ ByteShield


0

ฉันยังใช้ชุดประกอบอัจฉริยะ อย่างไรก็ตามฉันไม่ทราบวิธีการทำงานสำหรับเว็บแอปพลิเคชัน อย่างไรก็ตามฉันต้องการชี้ให้เห็นว่าหากแอปของคุณใช้การป้องกันชนิดแชร์แวร์ตรวจสอบให้แน่ใจว่าไม่ได้ตรวจสอบใบอนุญาตที่มีการส่งคืนบูลีน มันง่ายเกินไปที่จะถอดรหัส http://blogs.compdj.com/post/Binary-hack-a-NET-executable.aspx



-1

ฉันลองรุ่นสาธิต Eziriz .... ฉันชอบ แต่ไม่เคยนำซอฟต์แวร์มา


นี่เป็นคำตอบของวิกิจากชุมชนได้อย่างไร
— ΦXocę웃Пepeúpaツ

-1

การทำให้งงไม่ได้เป็นการป้องกันที่แท้จริง

หากคุณมีไฟล์. exe NET มีทางออกที่ดีกว่า

ฉันใช้Themida และสามารถบอกได้ว่ามันทำงานได้ดีมาก

ข้อเสียเปรียบเพียงอย่างเดียวของ Themida ก็คือมันไม่สามารถป้องกัน. NET Dll ได้ (นอกจากนี้ยังปกป้องรหัส C ++ ใน exe และ DLLs)

เทมิด้านั้นถูกกว่าผู้ที่มีชื่อเสียงด้านการป้องกันและ ปราบปราม การละเมิดลิขสิทธิ์มากที่สุดในตลาด มันสร้างเครื่องเสมือนว่าส่วนสำคัญของรหัสของคุณถูกเรียกใช้และรันหลายเธรดที่ตรวจจับการจัดการหรือเบรกพอยต์ที่กำหนดโดยแครกเกอร์ มันแปลง. NET. exe เป็นสิ่งที่ Reflector ไม่รู้จักแม้กระทั่งว่าเป็น. NET assembly อีกต่อไป

โปรดอ่านคำอธิบายโดยละเอียดเกี่ยวกับเว็บไซต์ของพวกเขา: http://www.oreans.com/themida_features.php


-2

ฉันได้ลองใช้ผลิตภัณฑ์ที่เรียกว่า Rummage และทำงานได้ดีในการควบคุมให้คุณ ... ถึงแม้ว่ามันจะขาดหลายสิ่งที่ Eziriz เสนอ แต่ราคาสำหรับ Rummage นั้นดีเกินไป ...

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.