Quảng cáo
1 câu trả lời 64
Vì sao dịch sang mã máy giúp chống sửa đổi phần mềm?
1. Mã máy rất khó đọc và hiểu
- Mã máy chỉ gồm 0 và 1 (hoặc dạng hex), ví dụ: 10101010 00010101 ...
- Con người không thể đọc logic chương trình như khi xem mã C/C++/Java.
=> Muốn sửa → phải dịch ngược (reverse engineering), cực kỳ tốn thời gian và công sức.
2. Không còn cấu trúc “dễ sửa” như mã nguồn
- Mã nguồn có:
+ Tên biến
+ Tên hàm
+ Comment
+ Cấu trúc điều khiển rõ ràng (if, for, while…)
- Mã máy:
+ Chỉ còn lệnh CPU
+ Không biết biến nào là gì
+ Không biết đoạn nào là thuật toán chính
=> Sửa nhầm 1 byte thôi là chương trình có thể crash ngay.
- Vì sao dịch sang mã máy giúp chống đánh cắp ý tưởng?
1. Ý tưởng nằm trong thuật toán, không phải file .exe
- Khi dịch sang mã máy:
+ Thuật toán bị “băm nhỏ” thành hàng triệu lệnh thấp cấp
+ Không còn thấy rõ cách bạn giải bài toán
=> Kẻ khác không thể nhìn vào để học lại ý tưởng như khi có mã nguồn.
2. Dịch ngược không thể khôi phục hoàn toàn mã gốc
- Reverse engineering:
+ Không lấy lại được tên biến, comment, cấu trúc ban đầu
+ Chỉ đoán được gần đúng
=> Dù có dịch ngược, ý tưởng cốt lõi vẫn bị che giấu.
Quảng cáo
Bạn cần hỏi gì?
Câu hỏi hot cùng chủ đề
-
Đã trả lời bởi chuyên gia
86102
