วิศวกรรมย้อนกลับ: เป็นสิ่งที่ดีจริงๆ? [ปิด]


15

ฉันมีคำถามที่ไร้เดียงสา / มือใหม่:

  • วิศวกรรมย้อนกลับดีอย่างไร
  • ในฐานะโปรแกรมเมอร์ฉันควรเรียนรู้ศิลปะของวิศวกรรมย้อนกลับหรือไม่
  • โปรแกรมเมอร์ที่ได้รับผลประโยชน์มีประโยชน์อะไรบ้าง?

5
คำถามนี้เกี่ยวกับการถอดแยกประเภทของวิศวกรรมย้อนกลับหรืออย่างอื่นหรือไม่? (ตั้งแต่ "ชุดประกอบ" และ "ระดับต่ำ" อยู่ในแท็ก .. )
Izkata

คำตอบ:


14

วิศวกรรมย้อนกลับคืออะไรดี?

Reverse Engineering นั้นดีสำหรับการถอดรหัสและการแฮ็ก (ลบการป้องกันหมายเลขซีเรียลหรือการขอรหัสผ่าน) แต่ยังสำหรับการทำความเข้าใจไวรัสหรือปาฏิหาริย์ที่โปรแกรมอื่น ๆ สามารถทำได้ บางครั้งมันเป็นทักษะที่มีประโยชน์ที่จะมีเพื่อหาข้อบกพร่องในโปรแกรมที่คุณไม่ได้มีแหล่งที่มาและเพื่อแก้ไขพวกเขา

ในฐานะโปรแกรมเมอร์ฉันควรเรียนรู้ศิลปะของวิศวกรรมย้อนกลับหรือไม่

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

ประโยชน์ของโปรแกรมเมอร์ที่มีประสบการณ์ด้านวิศวกรรมย้อนกลับเป็นอย่างไร

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

นอกจากนี้ฉันยังต้องการอ้างถึงความคิดเห็น@ johannesเนื่องจากเขาพูดถูก:

ฉันจะไม่ จำกัด เฉพาะการแคร็กที่ "ไม่ดี" การแยกส่วนจะมีประโยชน์ในการคิดออกว่าคอมไพเลอร์เป็นบ้าหรือไม่


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

@ โจฮัน: ใช่คุณพูดถูก ฉันขอเขียนในคำตอบได้ไหม
เหยี่ยว

แน่นอนว่าทำตามที่ฉันต้องการอ้างสิทธิ์ไม่มีลิขสิทธิ์ใน ;-)
johannes

7
ฉันขอโทษ แต่นี่เป็นคำตอบที่แย่มาก วิศวกรรมย้อนกลับไม่ใช่ "ส่วนใหญ่สำหรับ ... การแคร็กและการแฮ็ก" ตามที่นิยามไว้และใครก็ตามที่ไม่จัดการกับการเขียนโปรแกรมระบบกำลังก่อความเสียหายโดยได้รับการแนะนำจากมุมมองเชิงอุดมการณ์นั้น
Chuu

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

25

ฉันชอบคำตอบของ Falconแต่ฉันต้องการเพิ่มว่าในวิศวกรรมย้อนกลับของแอปพลิเคชันธุรกิจเก่าที่น่าเบื่อบางอย่างจะช่วยให้คุณพ้นจากปัญหาที่น่ารังเกียจ

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

นอกจากนี้เรายังใช้วิศวกรย้อนกลับเพื่อตรวจสอบคุณภาพของรหัส (ด้วยข้อ จำกัด บางประการ) ในส่วนประกอบของบุคคลที่สามที่เราซื้อหากไม่ได้รวมซอร์สโค้ดไว้

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


เฮ้เราดูที่ SQL ที่เก็บไว้ในระบบของบุคคลที่สามที่เราเช่าเพื่อตรวจสอบว่าพวกเขากำลังเติมความต้องการของเราอย่างถูกต้องในบางครั้ง
Machado

3
+1 แม้แต่ผลิตภัณฑ์ซอฟต์แวร์ที่ขายใหญ่จาก บริษัท ขนาดใหญ่อาจเป็นกล่องดำเล็กน้อยในบางครั้งสิ่งที่มีไม่เพียงพอล้าสมัยผิดธรรมดาธรรมดาบางครั้งไม่มีเอกสารประกอบแบบออนไลน์และเช่นนั้น
RalphChapin

13

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

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


+1 โดยเฉพาะอย่างยิ่งจริงสำหรับฉัน ฉันทำงานกับธนาคารบางแห่งที่ระบบเดิมไม่มีเอกสารทางเทคนิคเดียว
Machado

7

เพียงเพื่อขยายมูลค่าทางธุรกิจของวิศวกรรมย้อนกลับ - มากกว่าครึ่งหนึ่งของลูกค้าใหม่ที่เราพบมีระบบ / แอพที่มีอยู่ (ไม่เสมอไปในการผลิตคำนึงถึงคุณ) แต่ที่ความสัมพันธ์กับผู้พัฒนาซอฟต์แวร์ก่อนหน้านี้ลื่นไถล

ในกรณีประมาณ 30% ที่ลูกค้าไม่ได้รับแหล่งที่มาสำหรับระบบของพวกเขาและในหลายกรณีกระบวนการทางธุรกิจจริงกฎเกณฑ์และความรู้ส่วนใหญ่ถูกล็อคไว้ในรหัส

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

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


2

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


1

บางครั้งมันก็ใช้เพื่อให้ได้ชิ้นส่วน / ซอฟต์แวร์เพื่อทำงานร่วมกันเท่าที่ฉันเข้าใจ อินเทอร์เฟซแปลก ๆ ข้อบกพร่องในการใช้งาน

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


1

ด้วยวิศวกรรมย้อนกลับคุณสามารถนำโค้ดกลับมาใช้งานได้น้อยที่สุดตัวอย่างเช่นใน Symfony2 คุณสามารถแปลงฐานข้อมูลที่สร้างจาก MySQL ปกติและแปลงเป็นรูปแบบหลักคำสอนและนี่เป็นกระบวนการวิศวกรรมย้อนกลับที่ทำได้ใน Symfony .... และด้วยวิศวกรรมย้อนกลับคุณสามารถดูโค้ดที่บอกว่า 'in 2D'


0

ฉันกำลังยกตัวอย่างจริงจากประสบการณ์ของฉัน

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

ฉันต้องทำโครงการย่อยกลับรายการ

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

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

ฉันไม่ได้ทำวิศวกรรมย้อนกลับทุกอย่างเพียงแค่ส่วนที่เราต้องเปลี่ยน มันไม่ได้เลวร้ายเกินไปรหัส VB ​​ประมาณ 200 บรรทัด ใช้เวลาประมาณห้าวันในการทำงาน

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