ทำไมเราไม่เข้าใจเนื้อหาของไฟล์ไบนารีหลังจากรวบรวม
เท่าที่ผมรู้ว่าทุกโปรแกรมประกอบด้วยแพ็คของคำแนะนำโปรเซสเซอร์ที่มีตัวแปรข้อมูลเฉพาะบาง (float, int, ถ่าน ... ) ในการทำงานเกี่ยวกับการลงทะเบียนประมวลผล ดังนั้นสิ่งแรกที่ฉันคิดเกี่ยวกับมัน (เมื่อนานมาแล้ว) คือถ้าคุณรู้ว่าค่า ASCII ของ%¨#$¨#(เพียงตัวอย่างแบบสุ่ม) สามารถตีความได้ว่าเป็นที่อยู่ของregister pointer stack (เพียงแค่แสดงตัวอย่าง) ของ x86 หน่วยประมวลผล หากสิ่งนี้เป็นจริงทุกครั้งที่คุณพบค่า "อ่านไม่ได้" นี้เมื่ออ่านเนื้อหาของไฟล์ไบนารีคุณสามารถตีความได้ว่าการใช้ตัวชี้กองซ้อนเพื่อจัดการตัวแปรข้อมูลบางอย่าง น่าเสียดายที่นี่ไม่ได้เกิดขึ้น ด้านล่างมีตัวอย่างของเนื้อหาของping.exeโปรแกรมจาก Windows ที่เปิดด้วยnotepad.exe: มันเป็นไฟล์ไบนารีและข้อมูลนั้นไม่สามารถเข้าใจได้สำหรับมนุษย์เรา (มันสามารถเข้าใจได้สำหรับเครื่อง) มันไม่สมเหตุสมผลเลยสำหรับทุกคนแม้ว่าพวกเขาจะรู้รหัสการประกอบ (ระดับต่ำสุดของภาษาเครื่อง) ดังนั้นถ้าฉันเข้าใจทุกอย่างถูกต้องใครจะอธิบายได้ ทำไมรหัสไบนารี่ไม่สามารถกลับไปที่รหัสแอสเซมบลีได้เท่าที่พวกเขาอยู่ลึกลงไปในสิ่งเดียวกัน? หากสามารถเข้าใจรหัสการประกอบได้ทำไมไบนารีที่คอมไพล์ไม่ได้เป็นผลมาจากรหัสนี้ "อ่านได้" อีกต่อไป