Duy Nguyen Hoang A fully enthusiastic boy

Reverse Engineering – kĩ thuật dịch ngược phần mềm

2 min read

reverse engineering

Reverse Engineering (RE) là gì?

Bạn có bao giờ thắc mắc Reverse Engineering là gì? Hãy tưởng tượng đến trường hợp như sau:

  • Bạn đến 1 nhà hàng và gọi món ăn “Cực phẩm vị nhân gian”
  • Sau khi thưởng thức món ăn, bạn cảm thấy món ăn này đúng là “cực phẩm”
  • Bạn về nhà, tìm hiểu nguyên liệu, cố gắng chế biến món ăn theo trí nhớ và trí tưởng tượng của mình

Vâng, quy trình bên trên chính là công việc của 1 kĩ sư dịch ngược. Nói ngắn gọn, kĩ thuật dịch ngược chính là nói đến phương thức bạn dùng để nghiên cứu cốt lõi, cách thức vận hành của các phần mềm thông qua việc thu thập các dữ liệu và phân tích chức năng của nó.

Reverse Engineering là 1 khái niệm rất rộng, bao gồm cả Reverse Engineering phần cứng và Reverse Engineering phần mềm. Nhưng trong bài này, chúng ta chỉ tìm hiểu Reverse Engineering phần mềm. Và từ đây, trong bài này, nhắc đến RE, chúng ta chỉ nói đến RE phần mềm.

Ứng dụng Reverse Engineering

Có thể kể ra một số công việc cần sử dụng đến Reverse Engineering như Phân tích malware (viruses, trojans, worms…) để biết được chúng lây lan ra sao, lấy cắp thông tin cá nhân như thế nào? Để xóa chúng khỏi hệ thống, hay điều tra thông tin về người phát tán, cần thực hiện những hành động điều tra gì?

Ngoài ra một ứng dụng khác của RE, tương tự như ví dụ đưa ra ở đầu bài viết, đó là khi bạn có một phần mềm thương mại, cần phải trả phí để sử dụng mà bạn không đủ khả năng để chi trả hoặc thậm chí là không muốn trả khoản phí đó.

Bạn có thể RE để tìm hiểu cách thức hoạt động của module thực hiện công việc bạn cần quan tâm để viết lại 1 chương trình khác thực hiện công việc đó, hay tìm hiểu xem module kiểm tra key của phần mềm đó hoạt động như thế nào. (Nó là patch, crack, keygen… í)

Các công cụ thường dùng

OllyDBG

OllyDBG hay còn gọi tắt là Olly là công cụ debug rất phổ biến. Nhờ giao diện trực quan và dễ sử dụng nên Olly phù hợp với người dùng ở mọi trình độ khác nhau.

.Net Reflector

Nếu như ta có Olly để debug các chương trình window 32-bit thì các chương trình chạy trên nền tảng .NET Framework ta có công cụ .Net Reflector.

IDA

IDA là công cụ disassembler và debuger đa nền tảng, có thể sử dụng trên nền tảng Windows, Linux or Mac OS X. Đây là tính năng ưu việt hơn hẳn so với Olly và .Net Reflector- chỉ sử dụng cho 1 nền tảng nhất định.

Hex Editor

Trong quá trình thực hiện công việc Reverse, ta cần đến các công cụ Hex Editor để đọc và chỉnh sửa các file dưới định dạng hex.

Có rất nhiều Hex Editor, mỗi người thường lựa chọn 1 công cụ phù hợp với điều kiện và sử dụng quen tay.
Có một số công cụ đưa ra để gợi ý cho mọi người như : 010 Hex Editor (phần mềm trả phí), Winhex (phần mềm miễn phí), CFF Explorer VIII (1 chương trình nằm trong bộ công cụ Explorer Suite)

R: https://www.techtarget.com/searchsoftwarequality/definition/reverse-engineering

Avatar photo
Duy Nguyen Hoang A fully enthusiastic boy

Clean Code: Nguyên tắc viết hàm trong lập trình…

Trong quá trình phát triển phần mềm, việc viết mã nguồn dễ đọc, dễ hiểu là yếu tố then chốt để đảm bảo code...
Avatar photo Dat Tran Thanh
3 min read

Clean Code: Nguyên tắc comment trong lập trình

Trong lập trình, code không chỉ là một tập hợp các câu lệnh để máy tính thực thi, mà còn là một hình thức...
Avatar photo Dat Tran Thanh
3 min read

Clean Code: Nguyên tắc xử lý lỗi (Error Handling)

Trong quá trình phát triển phần mềm, việc xử lý lỗi không chỉ là một phần quan trọng mà còn ảnh hưởng trực tiếp...
Avatar photo Dat Tran Thanh
4 min read

Leave a Reply

Your email address will not be published. Required fields are marked *