Bài đăng tuyệt vời của psoul trả lời cho câu hỏi của bạn vì vậy tôi sẽ không sao chép công việc tốt của anh ấy, nhưng tôi cảm thấy thật hữu ích khi giải thích tại sao đây lại là một câu hỏi hoàn toàn hợp lệ nhưng cũng cực kỳ ngớ ngẩn. Rốt cuộc, đây là một nơi để học, phải không?
Các chương trình máy tính hiện đại được tạo ra thông qua một loạt các chuyển đổi, bắt đầu bằng đầu vào của phần thân các hướng dẫn văn bản có thể đọc được của con người (được gọi là "mã nguồn") và kết thúc bằng một phần hướng dẫn có thể đọc được trên máy tính (được gọi là "nhị phân" hoặc "máy" mã ").
Cách mà một máy tính chạy một bộ hướng dẫn mã máy cuối cùng rất đơn giản. Mỗi hành động mà bộ xử lý có thể thực hiện (ví dụ: đọc từ bộ nhớ, thêm hai giá trị) được biểu thị bằng một mã số. Nếu tôi nói với bạn rằng số 1 có nghĩa là hét lên và số 2 có nghĩa là cười khúc khích, và sau đó giơ thẻ với 1 hoặc 2 trên đó để mong bạn hét lên hoặc cười khúc khích tương ứng, thì tôi sẽ sử dụng những gì cơ bản là cùng một hệ thống mà máy tính sử dụng vận hành.
Tệp nhị phân chỉ là một tập hợp các mã đó (thường gọi là "mã op") và thông tin ("đối số") mà mã op hoạt động.
Bây giờ, ngôn ngữ hợp ngữ là ngôn ngữ máy tính trong đó mỗi từ lệnh trong ngôn ngữ thể hiện chính xác một mã op trên bộ xử lý. Có một bản dịch 1: 1 trực tiếp giữa lệnh ngôn ngữ hợp ngữ và mã op của bộ xử lý. Đây là lý do tại sao lắp ráp mã hóa cho bộ xử lý x386 khác với lắp ráp mã hóa cho bộ xử lý ARM.
Việc tháo gỡ chỉ đơn giản là thế này: một chương trình đọc qua tệp nhị phân (mã máy), thay thế mã op bằng các lệnh ngôn ngữ lắp ráp tương đương của chúng và đưa ra kết quả dưới dạng tệp văn bản. Điều quan trọng là phải hiểu điều này; nếu máy tính của bạn có thể đọc nhị phân, thì bạn cũng có thể đọc nhị phân, bằng tay với bảng mã op trong tay (ick) hoặc thông qua trình dịch ngược.
Trình phân tách có một số thủ thuật mới và tất cả, nhưng điều quan trọng là phải hiểu rằng trình phân tách cuối cùng là một cơ chế tìm kiếm và thay thế. Đó là lý do tại sao bất kỳ EULA nào cấm nó cuối cùng đều thổi khí nóng. Bạn không thể cho phép máy tính đọc dữ liệu chương trình ngay lập tức và cũng cấm máy tính đọc dữ liệu chương trình.
(Đừng hiểu sai ý tôi, đã có những nỗ lực để làm như vậy. Chúng hoạt động tốt như DRM trên các tệp bài hát.)
Tuy nhiên, có những cảnh báo cho phương pháp tháo gỡ. Tên biến là không tồn tại; điều đó không tồn tại với CPU của bạn. Các cuộc gọi thư viện là khó hiểu như địa ngục và thường yêu cầu tháo rời các nhị phân tiếp theo. Và lắp ráp là khó như địa ngục để đọc trong điều kiện tốt nhất.
Hầu hết các lập trình viên chuyên nghiệp không thể ngồi và đọc ngôn ngữ lắp ráp mà không bị đau đầu. Đối với một người nghiệp dư, điều đó sẽ không xảy ra.
Dù sao, đây là một lời giải thích có phần bóng bẩy, nhưng tôi hy vọng nó sẽ giúp. Mọi người đều có thể thoải mái sửa chữa bất kỳ sai sót nào từ phía tôi; đã được một lúc rồi. ;)