เครื่องมือ / กลยุทธ์. ทำให้งงงวย 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.