
ในการพัฒนาโปรแกรมนั้นจะต้องใช้ขั้นตอนหรือวิธีการซึ่งในภาษาคอมพิวเตอร์เรียกว่า อัลกอริทึม (Algorithms) ซึ่งจะเป็นส่วนสำคัญที่ทำให้โปรแกรมที่ออกแบบมานั้นสามารถทำงานได้ตามที่ต้องการ หรือมีความรวดเร็วต่างกันก็จะมาจากส่วนนี้ วิศวกรรมย้อนกลับจะเป็นเสมือนการทดสอบกล่องดำเพื่อดูว่าขั้นตอนของการทำงานของซอฟแวร์นั้นๆ เป็นอย่างไร เพื่อที่จะได้ทราบถึงวิธีการทำงานของโปรแกรมหรือซอฟแวร์นั้นขั้นตอนการทำวิศวกรรมย้อนกลับของซอฟแวร์ สามารถวิเคราะห์ได้คร่าวๆ มีดังนี้
1. วิเคราะห์โดยสังเกตข้อมูลที่เปลี่ยนแปลง โดยขั้นตอนนี้จะมีการวิเคราะห์ข้อมูลที่วิ่งอยู่ในสายซึ่งอาจเป็นการวิเคราะห์บัสหรือสายข้อมูลที่เชื่อมต่อซึ่งอาจใช้ Protocol Analyzer หรือ packet sniffer ในการวิเคราะห์ตรวจจับข้อมูล โดยข้อมูลที่วิ่งไปมาในสายจะบอกให้ทราบถึงรายละเอียดของสิ่งที่ต้องการซึ่งบางครั้งไม่จำเป็น ต้องมีการเชื่อมต่อเป็นเน็ตเวิร์ดจริง ๆ อาจเป็นเพียงการใช้งานเครื่องเดียว (Stand-Alone) แล้วดูพฤติกรรมในสายสัญญาณ บางครั้งการทำวิศวกรรมย้อนกลับในระบบที่เป็นแบบผนวกรวมหรือที่เรียกว่า Embedded System ก็สามารถวิเคราะห์ได้ง่ายโดยเครื่องมือที่ผู้ผลิตผลิตภัณฑ์ให้มา เช่น โปรแกรมที่ใช้ตรวจหาที่ผิด (Debugger) อย่าง JTAG ตัวอย่างของการทำวิศวกรรมย้อนกลับในระบบไมโครซอฟท์วินโดส์สำหรับการหาที่ผิด (Debug) ที่ระดับไบนารี่ ได้แก่ซอฟแวร์ที่ชื่อ SoftICE

2. การวิเคราะห์โดยการทำให้อยู่ในรูปโค้ดของภาษาแอสแซมบลี หรือภาษาเครื่องที่โปรแกรมอ่านแล้วสามารถทำงานได้โดยตรง การทำให้อยู่ในรูปของภาษาแอสแซมบลี แล้วดูวิธีการทำงานของโปรแกรมจากการทำงานในแต่ละขั้นตอนก็จะสามารถทำให้ทราบวิธีการทำงานของซอฟแวร์ที่ต้องการทำวิศวกรรมย้อนกลับได้
3. การทำการแปลงรหัสกลับไปเป็นซอสโปรแกรมหรือการดีคอมไพล์ (Decompile) เป็นขั้นตอนที่เป็นเหมือนการลองผิดลองถูกซึ่งจะได้ผลลัพธ์ที่แตกต่างกันไปในแต่ละครั้ง
เพื่อที่จะให้ได้รหัสซอสโค้ดของภาษาชั้นสูงหรือโปรแกรมภาษาจากขั้นตอนการแปลง ในกรณีที่มีเพียงแค่รหัสไบนารี่สำหรับทำการวิเคราะห์
นอกจากนี้การทำวิศวกรรมย้อนกลับของซอฟแวร์ยังเกี่ยวข้องกับการตรวจสอบระบบรักษาความปลอดภัย (Security audit) หรือแม้นกระทั่งการพยายามกันส่วนที่ป้องกันการแก้ไขในซอฟแวร์ (Cracking)


.jpg)







ท่านผู้ดูแล 


