วิศวกรรมย้อนกลับ

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

ถ้าอยากรู้ก็ต้องทำวิศวกรรมย้อนกลับ ซึ่งในวิกีพีเดียสอนไว้ว่าทำได้ 3 อย่าง คือ

  1. ใช้ซอฟต์แวร์ช่วยในการ debug โปรแกรม แล้วก็นั่ง debug ดูการทำงานของโปรแกรมมัน ซึ่งซอฟต์แวร์ดังกล่าวมีอยู่ตัวนึงที่เป็นที่นิยมมากคือ SoftICE
  2. ใช้ซอฟต์แวร์เพื่อเปลี่ยนโปรแกรมซึ่งเป็นภาษาเครื่อง ให้กลายเป็นภาษา Assembly แล้วเราก็มานั่งทำความเข้าใจการทำงานของมัน และ
  3. อันนี้เก๋หน่อย คือ ใช้ซอฟต์แวร์เพื่อเปลี่ยนโปรแกรมซึ่งเป็นภาษาเครื่อง ให้กลายเป็นภาษาชั้นสูงอย่างภาษา C เป็นต้น

ทั้งสามแบบผมเคยลองมาหมดแล้ว ตั้งแต่สมัยเมื่อแปดเก้าปีก่อน ไม่สนุกเลยอ่ะ ไม่มันส์เลย

  • แบบแรกลองแล้ว ตั้งแต่สมัย Windows 95 ด้วย แบบว่า debug kernel ด้วยนะ เซ็งมาก ๆ มันลำบากกว่า debug พวกไฟล์นามสกุล COM บน MS-DOS ซะอีก
  • แบบสองลองแล้ว ผมอ่ะกระจอก assembly แบบ 32 bit โคตร ๆ เลย จะเข้าใจก็แค่ assembly แบบ 16 bit อ่ะ
  • แบบสุดท้ายยิ่งแล้วใหญ่ พอเปลี่ยนมาเป็นภาษา C แล้ว ดูแล้วยิ่งงง เพราะมันเล่นประกาศตัวแปรเป็นตัวเลขปนตัวหนังสือ อ่านแล้วไม่สื่อเลย ต้องกดเลื่อนขึ้นเลื่อนลงจนงงไปหมด

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

จริง ๆ การ Open Source ซอฟต์แวร์ตั้งแต่ระดับล่างยันระดับบนมันก็เป็นเรื่องดีนะ ผมว่า เพราะมันทำให้ไอ้สิ่งที่เรียกว่าวิศวกรรมย้อนกลับ กลายเป็นสิ่งล้าสมัยไร้การเหลียวแลไป

เช่นเดียวกัน ต่อไปนะการขายซอฟต์แวร์ตามหลักการของ Software as a Product จะกลายเป็นสิ่งล้าสมัย ไร้การเหลียวแล ในขณะที่การส่งซอฟต์แวร์ตามหลักการของ Software as a Service ให้กับผู้บริโภค จะกลายเป็นสิ่งทันสมัยไปแทน

[tags]Software as a Service,SaaS,วิศวกรรมย้อนกลับ,Reverse Engineering[/tags]

Related Posts

One thought on “วิศวกรรมย้อนกลับ

  1. ผมยังได้ใช้อยู่เลยครับ พวก Reverse Engineer ผมว่ามันคงไม่ตายไปง่ายๆหรอกมั้งครับ อย่างน้อยก็ไป Decompile Class ของ Java ที่ไม่รู้ว่า Source ที่มีมันใหม่หรือป่าวอะครับ

ใส่ความเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *