วิศวกรรมย้อนกลับ
เผยแพร่แล้ว: 2022-03-10แก้ไขล่าสุดเมื่อ 21 มีนาคม 2022
ฉันจะพูดถึงวิศวกรรมย้อนกลับคืออะไรและเหตุใดจึงสำคัญ หลายคนที่ไม่ใช่นักพัฒนาคิดว่าพวกเขารู้ว่าวิศวกรรมย้อนกลับคืออะไรเพราะพวกเขาเคยเห็นมันในภาพยนตร์ แต่นี่เป็นความเข้าใจผิด วิศวกรรมย้อนกลับมีความหมายมากมายสำหรับคนจำนวนมาก และสิ่งที่ฉันจะบอกคุณจะแตกต่างอย่างมากจากคำจำกัดความของคนอื่น
สำหรับซอฟต์แวร์ White Label วิศวกรรมย้อนกลับคือการนำโปรแกรมมาใช้และค้นหาวิธีการทำงานและสิ่งที่สามารถทำได้ เพื่อให้แม่นยำยิ่งขึ้นแม้ว่าวิศวกรรมย้อนกลับจะใช้โปรแกรมที่มีอยู่และเรียนรู้การทำงานภายในเพื่อให้คุณสามารถปรับเปลี่ยนโปรแกรมเพื่อทำสิ่งอื่นนอกเหนือจากที่ผู้เขียนตั้งใจไว้ คุณสามารถเรียนรู้เพิ่มเติมเกี่ยวกับความหมายของฉลากขาวเมื่อคุณเรียกดูไซต์ของเรา!
ในการพัฒนาซอฟต์แวร์ เราบอกว่าคุณกำลังทำวิศวกรรมย้อนกลับบางอย่างเมื่อคุณแยกมันออกจากกันและค้นหาว่ามันทำงานอย่างไร วิศวกรรมย้อนกลับเป็นประโยชน์สำหรับการเรียนรู้วิธีการใช้ซอฟต์แวร์และวิธีการทำงาน นอกจากนี้ยังสามารถใช้ในหลายๆ อย่าง เช่น การตลาดดิจิทัล การปกป้องบริษัท การแฮ็ก และอื่นๆ อีกมากมาย
วิศวกรรมย้อนกลับในการตลาด
หากคุณต้องการสร้างแคมเปญการตลาดใหม่ คุณสามารถทำวิศวกรรมย้อนกลับซอฟต์แวร์เพื่อค้นหาว่าซอฟต์แวร์ทำงานอย่างไรหรือควรทำงานอย่างไร จากนั้นคุณสามารถแก้ไขโค้ดเพื่อปรับให้เข้ากับความต้องการของคุณได้ คุณสามารถทำเช่นเดียวกันกับโฆษณาหรือการตลาดประเภทอื่นๆ นอกจากนี้ยังสามารถค้นหาข้อมูลเกี่ยวกับคู่แข่ง ข้อมูลจำเพาะและประสิทธิภาพของผลิตภัณฑ์ และอื่นๆ อีกมากมาย
เมื่อคุณต้องการสร้างบางสิ่ง คุณต้องเริ่มด้วยการออกแบบก่อน คุณสามารถใช้เครื่องมือต่างๆ เพื่อช่วยในการออกแบบ แต่คุณควรทดสอบกับสิ่งของของคุณด้วย เพราะสิ่งสำคัญคือต้องรู้ว่าสิ่งต่างๆ จะโต้ตอบกันเพียงพอหรือไม่ บางครั้ง คุณจำเป็นต้องลองผิดลองถูกในโปรแกรมและค้นหาวิธีการทำงานโดยสร้างผลลัพธ์ที่ผิดพลาด คุณยังสามารถขับรถที่มีภาพเหมือนรถจริงได้ โดยเฉพาะอย่างยิ่งหากคุณต้องการดูพฤติกรรมของมัน เราเรียกสิ่งนี้ว่าการขับรถเสมือนหรือการขับรถเสมือนจริง
วิศวกรรมย้อนกลับคืออะไร?
เป็นกระบวนการของการวิเคราะห์โปรแกรมคอมพิวเตอร์เพื่อกำหนดโครงสร้างภายใน ซอร์สโค้ด อัลกอริธึม และการไหลของข้อมูล จุดประสงค์ของวิศวกรรมย้อนกลับคือการทำความเข้าใจวิธีการทำงานของโปรแกรมคอมพิวเตอร์และสิ่งที่อยู่ในโปรแกรม เมื่อคุณอ่านข้อมูลนี้ อาจมีชื่อเรียกว่าการวิเคราะห์การชน การถอดประกอบ วิศวกรรมย้อนกลับ หรือการดีบัก ฉันชอบ "การดีบัก" เพราะมันฟังดูเหมือนกิจกรรมที่โปรแกรมเมอร์ทำเมื่อไม่ใช่กิจกรรม ทุกวันนี้โปรแกรมเมอร์ส่วนใหญ่ไม่รู้ด้วยซ้ำว่าพวกเขาเป็นวิศวกรย้อนกลับ
วิศวกรรมย้อนกลับเป็นกระบวนการของการนำชิ้นส่วนของซอฟต์แวร์ โปรแกรม (หรือแคร็กเกอร์) ไปใช้ในการดำเนินการที่นักพัฒนาซอฟต์แวร์ไม่ได้ตั้งใจให้ใช้งาน (แต่บางครั้งก็เกิดขึ้น) ในสถานการณ์สมมตินี้ แฮ็กเกอร์พบข้อบกพร่องของโค้ดในโปรแกรมและได้ทราบวิธีใช้งานเพื่อให้ได้เอฟเฟกต์ที่ต้องการ ตัวอย่างเช่น แฮ็กเกอร์มีเกมที่ออกแบบย้อนกลับและรู้ว่าเกมทำงานอย่างไร หรือข้อมูลประเภทใดที่พวกเขาสามารถเรียนรู้ได้
ทำไมมันถึงสำคัญ?
ซอฟต์แวร์เกือบทั้งหมดในตลาดได้รับการออกแบบทางวิศวกรรมย้อนกลับ มีบางโปรแกรมที่ไม่ย้อนกลับ แม้แต่แอปพลิเคชันของ Microsoft ก็ได้รับการออกแบบทางวิศวกรรมย้อนกลับ แม้แต่บริษัททั้งหมดก็ไม่ได้ทำอะไรเลยนอกจากซอฟต์แวร์วิศวกรรมย้อนกลับเพื่อเงิน
วิศวกรรมย้อนกลับมีความสำคัญมากขึ้นเรื่อยๆ เนื่องจากรัฐบาลสหรัฐฯ ได้ผ่านกฎหมายว่าด้วยการปกป้องซอฟต์แวร์หรือการจัดการสิทธิ์ดิจิทัล (DRM) จะไม่มีซอฟต์แวร์ใดที่มี DRM หากไม่ได้ทำวิศวกรรมย้อนกลับ และโปรแกรมที่ได้รับการออกแบบทางวิศวกรรมย้อนกลับจะไม่ได้รับการปกป้องโดย DRM มีเหตุผลมากกว่าที่วิศวกรรมย้อนกลับมีความสำคัญ แต่นั่นเป็นหัวข้อสำหรับหนังสือทั้งเล่ม (หรือหนังสือหลายเล่ม)
วิศวกรรมย้อนกลับได้เปลี่ยนโลก ได้เปลี่ยนแปลงวิถีชีวิตของผู้คนไปอย่างสิ้นเชิง มีข้อดีหลายประการ:
- คุณสามารถทำให้ซอฟต์แวร์ทำในสิ่งที่คุณต้องการได้
- คุณสามารถดูวิธีลบสิ่งต่าง ๆ ออกจากโปรแกรมที่ไม่ควรมีอยู่ได้
- การแยกส่วนบางอย่างออกเป็นส่วนประกอบและวิเคราะห์เพิ่มเติมจะง่ายขึ้น
ประโยชน์ของวิศวกรรมย้อนกลับคืออะไร?
คุณสามารถดูสิ่งที่ทำและเรียนรู้เกี่ยวกับกลไกภายในได้โดยการย้อนกลับโปรแกรม คุณสามารถเปลี่ยนแปลงโปรแกรมได้โดยไม่กระทบกับโปรแกรมอื่นหรือระบบปฏิบัติการ นี่เป็นข้อได้เปรียบที่สำคัญเนื่องจากโปรแกรมส่วนใหญ่ต้องเข้ากันได้กับไลบรารีและระบบปฏิบัติการที่จัดทำโดยผู้เผยแพร่ การเปลี่ยนแปลงโปรแกรมไม่เพียงแต่สามารถสร้างความเสียหายอย่างร้ายแรงต่อระบบของคุณ แต่ยังรวมถึงผู้ใช้รายอื่นด้วย วิศวกรรมย้อนกลับช่วยให้คุณเข้าถึงกลไกภายใน ไลบรารี และข้อมูลทั้งหมดเกี่ยวกับวิธีการทำงาน คุณสามารถสร้างโปรแกรมที่สามารถใช้ไลบรารีและระบบปฏิบัติการได้โดยไม่ต้องจ่ายเงิน
กระบวนการวิศวกรรมย้อนกลับคืออะไร?
นี่เป็นคำถามที่ซับซ้อนเพราะคำตอบนั้นขึ้นอยู่กับโปรแกรมวิศวกรรมย้อนกลับของคุณ คำตอบที่ดีที่สุดที่ฉันสามารถให้คุณได้คือ: “มันขึ้นอยู่กับ…” โปรแกรมสมัยใหม่มีการต่อต้านการดีบัก วิศวกรรมป้องกันการย้อนกลับ และรหัสป้องกันการเขียนทับ ซึ่งหมายความว่าวิศวกรรมย้อนกลับเกี่ยวข้องกับการใช้ความสับสนอย่างมาก ซึ่งเสียเวลาและบางครั้งอาจนำไปสู่การขัดข้องของโปรแกรม
Obfuscation เป็นเทคนิควิศวกรรมป้องกันการย้อนกลับที่ทำให้วิศวกรรมย้อนกลับโปรแกรมยากขึ้น รูทีนย่อย ฟังก์ชัน และส่วนอื่นๆ ของโปรแกรมมักจะถูกย้ายไปยังตำแหน่งต่างๆ ในหน่วยความจำ และโครงสร้างข้อมูลจะเปลี่ยนด้วยตัวเลขมหัศจรรย์ บางครั้งรหัสจะถูกเข้ารหัสหรือสแกนหาคำบางคำที่อาจให้ข้อมูลเกี่ยวกับโครงสร้าง การดำเนินการนี้ไม่เพียงพอต่อการเอาชนะวิศวกรย้อนกลับ ดังนั้นบางครั้งโปรแกรมอาจขัดข้องเมื่อพยายามถอดแยกชิ้นส่วนด้วยเครื่องมือเฉพาะ ในหลายประเทศ การทำสำเนาซอฟต์แวร์ถือเป็นสิ่งผิดกฎหมายแม้ว่าคุณจะเป็นเจ้าของสำเนาของซอฟต์แวร์และไม่ได้ดัดแปลงซอฟต์แวร์แต่อย่างใด
จะย้อนกลับซอฟต์แวร์ / โปรแกรมวิศวกรได้อย่างไร
หากคุณไม่คุ้นเคยกับการย้อนกลับซอฟต์แวร์ทางวิศวกรรม คุณควรเริ่มต้นด้วยโปรแกรมที่สามารถเข้าถึงได้ก่อน จะเป็นการดีที่สุดหากคุณพยายามเรียนรู้เครื่องมือเฉพาะทางวิศวกรรมย้อนกลับ ก่อนที่คุณจะกระโดดลงไปในส่วนลึกของสระ เครื่องมือที่ดีสำหรับผู้เริ่มต้นคือ IDA Pro (IDA ย่อมาจาก Intrusion Detection Analysis) ใช้งานได้ฟรี เข้าถึงได้ง่าย และย้อนกลับได้เกือบทุกโปรแกรมตราบใดที่เป็น 32 บิต IDA Pro ทำงานโดยการวิเคราะห์โค้ดที่คอมไพล์หรือถอดประกอบแล้วแสดงโค้ดในลักษณะที่ทำให้คุณอ่าน ทำความเข้าใจ และแก้ไขได้ง่ายขึ้น IDA Pro เป็นเครื่องมือที่ดีสำหรับวิศวกรย้อนกลับ แต่ไม่เหมาะสำหรับทุกสถานการณ์
อีกเครื่องมือหนึ่งคือ GDB ซึ่งเป็นเครื่องมือดีบั๊ก เช่น Visual Studio อย่างไรก็ตาม GDB จะดีบักโค้ดในขณะที่ดำเนินการเหมือนกับ Visual Studio ข้อแตกต่างคือคุณสามารถทำการเปลี่ยนแปลงโค้ดในขณะที่รันและทำให้โปรแกรมหยุดทำงาน สิ่งนี้จะช่วยให้คุณเห็นข้อผิดพลาดในตรรกะ (สมมติว่ากลไกการต่อต้านการดีบัก/การต่อต้านการย้อนกลับไม่ได้ปิดบังไว้) หลังจากนั้น คุณสามารถแก้ไขข้อผิดพลาดหรือดำเนินการต่อไปจนกว่าส่วนอื่นของโปรแกรมจะเกิดปัญหา
ความเสี่ยงของวิศวกรรมย้อนกลับคืออะไร?
การทำวิศวกรรมย้อนกลับซอฟต์แวร์เป็นสิ่งผิดกฎหมายในประเทศส่วนใหญ่ อย่างไรก็ตาม ในบางสถานการณ์ในสหรัฐอเมริกานั้นไม่ผิดกฎหมาย ตราบใดที่คุณเป็นเจ้าของสำเนาของโปรแกรมและสามารถพิสูจน์ได้ว่าได้มาอย่างถูกกฎหมาย (โดยใช้หมายเลขซีเรียลหรือรหัสซีดี) นอกจากนี้ยังมีข้อยกเว้นสำหรับกลไกป้องกันการคัดลอกและต่อต้านการละเมิดลิขสิทธิ์ ซึ่งอนุญาตให้ใช้เพื่อการศึกษาเท่านั้น ในการทำวิศวกรรมย้อนกลับโปรแกรม คุณต้องมีข้อมูลเพียงพอที่จะทำ ซึ่งมักจะหมายถึงการทำความเข้าใจซอร์สโค้ดของโปรแกรมที่คุณกำลังทำวิศวกรรมย้อนกลับ ไม่ใช่เรื่องง่ายเสมอไป แม้ว่าคุณจะสามารถอ่านซอร์สโค้ดได้ ส่วนใหญ่หากใช้กลไกวิศวกรรมป้องกันการดีบัก/ป้องกันการย้อนกลับ
ฉันหวังว่าคุณจะมีความคิดที่ดีขึ้นว่าวิศวกรรมย้อนกลับหมายถึงอะไรและจะนำไปใช้กับกรณีต่างๆ ได้อย่างไร ฉันยังหวังว่าคุณจะมีความรู้ในด้านนี้มากขึ้น และช่วยให้ธุรกิจและลูกค้าของคุณเติบโตโดยใช้เครื่องมือความรู้ของพวกเขาในรูปแบบที่ทันสมัยยิ่งขึ้น