คำถามติดแท็ก obfuscation

4
กรณีของรหัส obfuscation?
อะไรคือเหตุผลอันดับต้น ๆ ในการเขียนรหัสที่ยุ่งเหยิงในแง่ของผลประโยชน์ที่แท้จริงให้กับผู้ที่พัฒนารหัสและธุรกิจที่ใช้งานรหัสนั้น (หากรหัสที่เป็นปัญหานั้นเป็นรหัส commericial จริง ๆ ) มีกรณีเอกสาร (มีให้บริการทางออนไลน์ในบางสถานที่) ซึ่งอธิบายเมื่อการทำให้งงงวยดีกว่าเลวหรือไม่? มีตัวอย่างที่รู้จักกันดีหรือไม่ตัวอย่างเช่นการทำให้งงงวยได้รับการพิสูจน์แล้วว่ามีความหมายในการหน่วงเวลาให้บุคคลที่สามประสงค์ร้ายไม่ให้รับโค้ด ดูเหมือนว่าเช่นเดียวกับการกลิ้งหน้าต่างรถของคุณจะไม่หยุดคนจากการทำลายพวกเขาและขโมยสเตอริโอของคุณ obfuscating รหัสของคุณเพียงแค่ทำให้คนซื่อสัตย์ซื่อสัตย์ ========= พื้นหลัง: นี่เป็นความพยายามที่จะท้าทายสมมติฐานของฉันในหัวข้อนี้ ฉันมักจะต่อต้านการใช้รหัสทำให้งงงวยโดยทั่วไป แต่ฉันอยากรู้ว่าถ้าฉันขาดอะไร ฉันเข้าใจว่าทำไมในกรณีเช่น JavaScript การย่อขนาดช่วยให้สิ่งต่าง ๆ โหลดเร็วขึ้นและทั้งหมด (มีประโยชน์ในการใช้งานจริงที่นั่น) แต่ฉันไม่สามารถคิดได้ด้วยเหตุผลเดียวว่าทำไมรหัส obfuscation เพื่อจุดประสงค์ในการเป็นอุปสรรค ในการค้นพบว่าส่วนของโค้ด / อัลกอริทึมนั้นมีประสิทธิภาพสำหรับวัตถุประสงค์ใด ๆ ก็ตาม ด้วยโอเพนซอร์สที่กำลังเป็นที่นิยมอย่างบ้าคลั่งคำถามดูเหมือนจะ "แชร์รหัสหรือทำให้เป็นกรรมสิทธิ์?" เมื่อพูดถึงรหัสเชิงพาณิชย์ฉันสามารถเข้าใจได้ว่าทำไมคุณไม่สามารถแบ่งปันทุกอย่างได้และคุณมีกฎหมายอยู่ข้างคุณเพื่อต่อสู้กับการโจรกรรม BTW ถ้ามีคนเหตุผลที่จะเขียนรหัส obfuscated คือ "รักษาความปลอดภัยงาน" แล้วฉันจะยิงโปรแกรมเมอร์ใดพบว่ามีอย่างต่อเนื่องและจงใจใช้ obfuscation กับวัตถุประสงค์ในการช่วยให้งานของพวกเขาจนกว่าพวกเขาพอจะแสดงให้เห็นว่ามันมีบางส่วน ผลประโยชน์ทางธุรกิจ มันเป็นทีมต่อต้านอย่างสมบูรณ์ที่ไร้สาระและชี้ไปที่ใครบางคนที่เกี่ยวข้องกับการทำให้งานของพวกเขาผ่านแนวปฏิบัติที่เข้าใจผิดมากขึ้นจากนั้นก็ทำการรักษาเพราะพวกเขาเขียนซอฟต์แวร์ที่ยอดเยี่ยม ฉันพูดถึงกรณีเฉพาะนี้เพราะในขณะที่ฉันตระหนักว่าผู้คนมักจะพูดเล่นฉันต้องการยับยั้งคำตอบใด ๆ ที่การกระตุกขั้นพื้นฐานคือการทำให้งงงวยเพื่อความมั่นคงในการทำงานเพียงอย่างเดียวเป็นความคิดที่ดี

12
นักเขียนโปรแกรมใช้วิธีการเขียนโปรแกรมที่แย่ที่สุด
ฉันรู้ว่ามันแปลกที่จะพูด แต่โปรแกรมเมอร์คนหนึ่งในที่ทำงานจงใจใช้วิธีการเขียนโปรแกรมที่ไม่ดีตามวัตถุประสงค์! ฉันจะอธิบาย ก่อนอื่นให้ฉันบอกว่าเขาเป็นคนฉลาดและส่วนใหญ่เขาเขียนรหัสที่เข้าใจได้ เขาถูกขอให้ดำเนินการออกใบอนุญาตในโครงการเว็บแอปพลิเคชันที่เขียนด้วย Java เนื่องจากเป็น Java หากมีใครต้องการจริงๆก็อาจแฮ็กเปิดไหและอ่านชื่อของคลาสและวิธีการที่เขียนไว้ข้างใน วิธีการแก้ปัญหาของเขาคือการเรียกตัวแปรและวิธีการที่ชื่อไม่ชัดเจนให้ชัดเจนและวางมันไว้ในคลาสที่แออัดแล้วแทนที่จะสร้างคลาสใหม่ เหตุผลของเขาคือหากแฮกเกอร์ต้องการเปลี่ยนบางคลาสเพื่อเลี่ยงการตรวจสอบใบอนุญาต (และรับสำเนาผลิตภัณฑ์ฟรี) เขาจะมีช่วงเวลาที่ยากลำบากกว่านี้หากมันไม่ชัดเจนว่าวิธีใด ปฏิบัติงานเฉพาะเหล่านี้ หลังจากเขาทำเสร็จฉันก็พบเขาแนะนำว่าบางทีเราอาจซื้อห้องสมุด obfuscator บางประเภทเพื่อทำเพื่อเราในขณะที่ยังคงใช้วิธีการเขียนโปรแกรมที่ดี เขาอ้างว่าไม่มีเวลาหรือทรัพยากรในการค้นหาวิธีแก้ปัญหาแบบนั้น .. ซึ่งทำให้ฉันลำบากใจ ฉันจะมองหาห้องสมุด obfuscator ใน Java และแก้ไขรหัสเก่าของเขา (ซึ่งอาจเป็นเรื่องงี่เง่าเล็กน้อยเกี่ยวกับการเปลี่ยนแปลงรหัสของเขา) หรือฉันจะทิ้งมันไว้เท่าที่จะทำให้ฉันไม่สิ้นสุด?

3
รหัสแหล่งที่มาที่เปิดตัวภายใต้ GPL ต้องอ่านได้หรือไม่
ในการตอบคำถามอื่นผู้โพสต์แนะนำว่าภายใต้ GPL: ... คุณต้องจัดเตรียม [code] ที่มนุษย์สามารถอ่านได้ไม่ใช่รุ่นที่เว้นช่องว่าง ... การอ่านจะดูเหมือนว่าฉันจะเป็นอัตนัยและไม่น่าจะเป็นที่ต้องการอย่างชัดเจนโดย GPL ใช่ไหม?

2
อะไรคือข้อดีของการปล่อยรหัสที่ทำให้งงงวย?
ตัวอย่างที่เฉพาะเจาะจงที่ฉันมีอยู่ในใจนั้นเกี่ยวข้องกับ Minecraft เกมอัลฟาในปัจจุบัน แต่นี่เป็นคำถามทั่วไปที่ฉันคิดว่ารับประกันการสนทนา Minecraft เขียนขึ้นใน Java และโดยปกติจะมีลักษณะดังนี้ (ตัวอย่างจริง): java.lang.NullPointerException at d.a(SourceFile:247) at gi.b(SourceFile:92) at bd.a(SourceFile:33) at bn.a(SourceFile:69) at bn.e(SourceFile:115) at bn.d(SourceFile:103) at net.minecraft.client.Minecraft.i(SourceFile:1007) at net.minecraft.client.Minecraft.run(SourceFile:596) at java.lang.Thread.run(Unknown Source) เห็นได้ชัดว่านี่ไม่ใช่ชื่อแพ็คเกจและวิธีการที่นักพัฒนาซอฟต์แวร์ใช้เมื่อเขาเขียน เนื่องจากเขาอยู่ในช่วงอัลฟาดูเหมือนว่าผู้พัฒนาควรจะสามารถเข้าใจถึงร่องรอยสแต็กของเขาได้โดยเฉพาะอย่างยิ่งหากมีคนสามารถจัดทำรายงานบั๊กได้ มันย่อมาจากนี้ เราจะได้ประโยชน์อะไรจากการทำให้รหัสของเขางงงวยเช่นนี้ซึ่งเอาชนะข้อบกพร่องของการระบุบั๊กที่ยากขึ้น

3
มันเป็นสิ่งสำคัญที่ทำให้งงงวยรหัสแอปพลิเคชัน C ++?
ในโลก Java ดูเหมือนว่าบางครั้งจะมีปัญหา แต่สิ่งที่เกี่ยวกับ C ++? มีวิธีแก้ไขปัญหาต่าง ๆ หรือไม่? ฉันคิดเกี่ยวกับความจริงที่ว่าบางคนสามารถแทนที่ไลบรารี C ++ ของระบบปฏิบัติการที่เฉพาะเจาะจงด้วยเวอร์ชันเดียวกันของไลบรารีเดียวกัน แต่เต็มไปด้วยสัญลักษณ์การดีบักเพื่อทำความเข้าใจว่าโค้ดของฉันทำอะไร การใช้ไลบรารีมาตรฐานหรือห้องสมุดยอดนิยมเป็นสิ่งที่ดีหรือไม่? สิ่งนี้สามารถเกิดขึ้นได้กับไลบรารี่ dll บางตัวใน Windows แทนที่ด้วย "debug version" ของไลบรารี่นั้น มันจะดีกว่าที่จะรวบรวมแบบคงที่? ในแอพพลิเคชั่นเชิงพาณิชย์ฉันเห็นว่าแกนหลักของแอพของพวกเขารวบรวมทุกอย่างในแบบสแตติกและส่วนใหญ่ dll (ไลบรารีไดนามิกทั่วไป) ใช้เพื่อเสนอเทคโนโลยีของบุคคลที่สามเช่นโซลูชั่นต่อต้านการละเมิดลิขสิทธิ์ (ฉันเห็นในเกมหลายเกม ), ไลบรารี GUI (เช่น Qt), ไลบรารี OS ฯลฯ การรวบรวมแบบคงที่เทียบเท่ากับการทำให้งงงวยในโลก Java หรือไม่? ในแง่ที่ดีกว่าเป็นวิธีที่ดีที่สุดและประหยัดที่สุดในการปกป้องรหัสของคุณหรือไม่?
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.