Hiểu các khái niệm kỹ thuật đảo ngược
Các kỹ sư đôi khi cần suy nghĩ ngược lại để phân tích một sản phẩm. Ví dụ, một kỹ sư cơ khí có thể đưa ra kết luận về quá trình sản xuất sản phẩm dựa trên thiết kế và tính chất vật lý của nó. Thậm chí, họ có thể sản xuất được sản phẩm tương tự nếu họ có hiểu biết thấu đáo về nó.
Bạn cũng có thể ví kỹ thuật đảo ngược với việc chứng minh các phương trình toán học. Vì vậy, kỹ thuật đảo ngược được sử dụng như thế nào?
Mục Lục
Kỹ thuật đảo ngược là gì?
Kỹ thuật đảo ngược là quá trình phân tích một hệ thống nhằm mục đích tái tạo hoặc cải thiện nó. Nếu bạn nhìn vào các lĩnh vực hoạt động của kỹ thuật đảo ngược, bạn có thể thấy rằng bạn có thể sử dụng nó cho nhiều mục đích khác nhau. Nếu bạn nhìn nó từ góc độ an ninh mạng, có thể thực hiện các hoạt động sau bằng các phương pháp kỹ thuật đảo ngược:
Bạn có thể thấy kỹ thuật đảo ngược được sử dụng ngay cả trong các trò chơi máy tính ngày nay. Ví dụ: các nhà phát triển thường tạo các bản sửa đổi phần mềm bằng phương pháp kỹ thuật đảo ngược.
Trong lĩnh vực kỹ thuật đảo ngược, có hai phương pháp phân tích khác nhau: tĩnh và động. Bạn thực hiện phân tích tĩnh khi bạn phân tích một chương trình mà không thực sự chạy nó. Mặt khác, một phương pháp phân tích động yêu cầu bạn chạy chương trình để quan sát hành vi của nó và dữ liệu mà nó sử dụng.
Nhưng trước khi bạn tiến hành phân tích cho kỹ thuật đảo ngược, bạn cần biết một số thuật ngữ quan trọng về cách thức hoạt động của kiến trúc máy tính.
Các bộ phận chính của kiến trúc máy tính
Kỹ thuật đảo ngược thực tế là không thể trừ khi bạn hiểu kiến trúc máy tính. Bạn cần học bốn phần chính:
- Đầu vào: Tập hợp các phương thức nhập dữ liệu.
- CPU: CPU xử lý dữ liệu đến và truyền dữ liệu đó đến các chủ sở hữu của nó. Nó là đơn vị xử lý trung tâm.
- Trí nhớ: Không gian tạm thời chứa dữ liệu trong quá trình xử lý.
- đầu ra: Kết quả mà người dùng cuối nhìn thấy.
Bạn có thể ghi nhớ tất cả những vấn đề chính này bằng một ví dụ, chẳng hạn như khi bạn nhấn chữ A trên bàn phím. Khi bạn nhấn nó, một sự kiện đầu vào sẽ xảy ra. Sau giai đoạn này, CPU xử lý dữ liệu và sử dụng một khoảng trống nhỏ trong bộ nhớ để lưu trữ. Cuối cùng, bạn sẽ thấy chữ A trên màn hình, kết thúc quá trình với đầu ra.
Đi sâu vào chiều sâu của CPU
Nếu bạn thực sự muốn trở thành một chuyên gia về kỹ thuật đảo ngược và đi sâu vào chủ đề này, bạn cần có kiến thức chi tiết về phần cứng, ngôn ngữ cấp thấp và đặc biệt là CPU. Các chủ đề chính bạn cần biết về CPU là:
- Bộ điều khiển: Điều này chịu trách nhiệm xử lý dữ liệu trong CPU và chuyển dữ liệu đến các trường liên quan. Bạn có thể coi đơn vị này như một cơ chế kiểm soát định tuyến.
- ALU: Đây là viết tắt của Đơn vị logic số học. Đây là nơi diễn ra một số phép toán số học và logic. Nếu bạn tìm hiểu sâu hơn về toán học, bạn sẽ thấy rằng bốn phép toán cơ bản về cơ bản là các biến thể của phép cộng. Vì vậy, ALU dựa trên sự tổng hợp. Ví dụ, trừ hai từ ba cũng giống như cộng trừ hai với ba.
- đăng ký: Đây là những khu vực bên trong CPU chứa dữ liệu được xử lý. Có nhiều loại thanh ghi khác nhau, giống như có nhiều loại biến khác nhau trong ngôn ngữ lập trình. Một thanh ghi chịu trách nhiệm duy trì kiểu và thuộc tính của dữ liệu được gán cho nó.
- tín hiệu: Nếu bạn muốn CPU thực hiện nhiều hoạt động khác nhau cùng một lúc, thì cần phải có một số phương pháp tổ chức chúng. Các yếu tố làm điều này được gọi là tín hiệu. Mỗi giao dịch hoạt động theo các tín hiệu đảm bảo nó không can thiệp vào quá trình khác.
- Xe buýt: Đường dẫn mà dữ liệu sử dụng để di chuyển từ đơn vị này sang đơn vị khác. Lưu ý cách tên gợi ý vận chuyển.
Các khái niệm bạn sẽ thường nghe thấy trong Kỹ thuật đảo ngược
Hiểu cách CPU xử lý dữ liệu và lưu trữ nó trong bộ nhớ, cùng với khái niệm về các thanh ghi, có thể rất hữu ích khi thiết kế ngược. Cụ thể, bạn có thể sử dụng sơ đồ bên dưới để hiểu rõ hơn về khái niệm bộ nhớ:
Cuối cùng, để phân tích kỹ thuật đảo ngược, bạn cần biết một số khái niệm cơ bản về thanh ghi. Chúng là một trong những chủ đề bạn sẽ tập trung vào nhiều nhất. Dưới đây là một số giải thích về dữ liệu, con trỏ và thanh ghi chỉ mục sẽ hữu ích cho bạn một cách ngắn gọn nhất:
- 1. EAX: Viết tắt của Accumulator Register. Nó thường lưu dữ liệu thuộc danh mục phép tính số học ở đây.
- 2. EBX: Viết tắt của Base Register. Nó đóng một vai trò trong địa chỉ gián tiếp.
- 3.EDX: Viết tắt của Data Register. EDX giúp đăng ký khác.
- 4. EIP: Viết tắt của Con trỏ chỉ dẫn. Giữ địa chỉ của tên miền để chạy.
- 5. Khả năng ngoại cảm: Giữ địa chỉ cơ sở.
- 6. ESI: Giữ thông tin chỉ mục nguồn.
- 7. EDI: Giữ thông tin chỉ mục đích.
Bạn nên nghiên cứu tất cả những điều này một cách riêng biệt để hiểu các sắc thái của chúng. Nhưng nếu bạn xem xét những điều cơ bản và cố gắng hiểu logic nghiệp vụ, bất kể bạn đang làm việc với kiến trúc bộ xử lý nào, việc phân tích mã cho kỹ thuật đảo ngược sẽ khá dễ dàng.
Kỹ thuật đảo ngược thường bắt đầu bằng mã máy. Bạn có thể hiểu nhiều thuật ngữ trên nếu bạn quen thuộc với hợp ngữ hoặc có kiến trúc bộ xử lý 32-bit hoặc 64-bit. Nếu bạn muốn học lắp ráp từ đầu, nó sẽ cực kỳ hữu ích trong kỹ thuật đảo ngược.
Bạn sẽ làm gì với tất cả những thứ này?
Nếu bạn có kiến thức tốt về kỹ thuật đảo ngược, bạn có thể thực hiện phân tích mã cho dù bạn đang làm việc với hệ điều hành hay kiến trúc bộ xử lý nào. Ví dụ: có thể tìm thấy phiên bản bẻ khóa của nhiều chương trình hoặc trò chơi máy tính. Đây là một phương pháp hoàn toàn bất hợp pháp.
Tuy nhiên, nếu muốn trở thành một chuyên gia an ninh mạng có đạo đức, bạn sẽ cần sử dụng các kỹ sư đảo ngược để hiểu lý do tại sao các chương trình bẻ khóa này lại bị bẻ khóa. Nếu bạn muốn thăng tiến trong kỹ thuật đảo ngược hoặc mới bắt đầu, sẽ là một lựa chọn tốt nếu bạn cố gắng tìm hiểu về mối quan hệ giữa phần cứng và mã máy.