RE1: Giới thiệu về Reverse-Engineering

Mask

VIP Members
03/07/2013
31
25 bài viết
RE1: Giới thiệu về Reverse-Engineering
1. Reverse-Engineering là gì?

Trước khi tìm hiểu Reverse Engineering (RE) là gì ta cùng xem xét đến một tình huống như sau:
  • Bạn may mắn được thưởng thức và mang về nhà 1 món ăn rất ngon từ 1 trong những nhà hàng nổi tiếng nhất thế giới. Nhưng lượng thức ăn có hạn, làm sao để có thể mời bạn bè món này trong các bữa tiệc??
  • Bạn sẽ làm gì để thực hiện được ý định của mình ???
  • Có 1 cách, đó là, trước khi thưởng thức, bạn nên tìm cách học xem họ chế biến như thếnào. Không may thay, nhà hàng này không phải lúc nào bạn cũng có thể đến, vì nó rất xa, và đầu bếp cũng không có thời gian hướng dẫn bạn, hoặc là họ sẽ giữ bí mật, không tiết lộ cho bạn. Bạn sẽ làm gì? Bây giờ thì khó khăn hơn nhiều rồi
  • Điều này buộc bạn sẽ phải quan sát xem món ăn này gồm có những thành phần gì, nếm thử, và đoán xem có những gia vị đặc trưng nào... Đây có thể coi là khái niệm cơ bản về RE thức ăn!
Trong bài viết này chúng ta sẽ cùng xem xét về khái niệm RE, khái niệm RE trong công nghệ thông tin.
RE là quá trình tìm hiểu những công nghệ được sử dụng bởi 1 thiết bị, 1 đối tượng hoặc 1 hệ thống thông qua việc phân tích cấu trúc, các chức năng và hoạt động của nó.

Reverse-Engineering.png

RE là 1 khái niệm rất rộng, bao gồm cả RE phần cứng và RE phần mềm. Nhưng trong bài này, chúng ta chỉ tìm hiểu RE 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.

Việc phân tích hoạt động cụ thể của một hệ thống hay 1 chương trình sẽ được sử dụng trong việc bảo trì chính hệ thống hay chương trình đó. Một mục đích khác của RE là phục vụ cho việc tạo ra một hệ thống mới hoặc chương trình mới có những chức năng tương tự mà không sử dụng hoặc chỉ là sao chép đơn giản (không có sự hiểu biết) hệ thống/chương trình gốc.

2. Ứng dụng của RE

Vậy RE được ứng dụng cho những công việc gì??
Có thể kể ra một số công việc cần sử dụng đến RE 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.:)

Bên cạnh đó RE còn là một sở thích, thỏa mãn tính tò mò của bạn về cách thức hoạt động của một hệ thống nào đó.

3. Các vấn đề chính của RE

Xét trong vấn đề nhỏ được bàn bạc trong bài viết này là RE phần mềm. Với mỗi một nền tảng, hệ điều hành khác nhau ta có các chương trình được xây dựng khác nhau, thực thi theo cách khác nhau. Điều này tạo ra sự phức tạp trong quá trình thực hiện công việc RE.

Với đặc trưng của mỗi nền tảng, ta có những hướng khác nhau để tiếp cận, những công cụ khác nhau để trợ giúp cho công việc.
Với các chương trình trên Window ta sử dụng những công cụ khác, các chương trình trên Linux ta dùng công cụ khác.
Những chương trình chạy trên nền tảng .Net Framework và các chương trình được viết bằng python sẽ có những công cụ RE khác nhau.

Một số công cụ thường sử dụng

1. 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.

Tôi sẽ dành bài viết tiếp theo để nói về Olly: cách cài đặt, những chức năng chính và demo việc sử dụng Olly để thực hiện 1 crackme đơn giản.

2. .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.
Trong bài viết tiếp theo tôi sẽ giới thiệu về tính năng và cách sử dụng của .Net Refector.

3. 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.
Tôi sẽ giới thiệu chi tiết về IDA và cách sử dụng trong bài viết tiếp theo, cùng với .Net Reflector.

4. 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)

Các bạn quan tâm có thể theo dõi chuyên đề tiếp theo - "RE2: Hướng dẫn sử dụng OllyDBG" từ ngày 12/2/2014
 
Chỉnh sửa lần cuối bởi người điều hành:
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
  • Thích
Reactions: Phạm Phú Sơn
Em có thắc mắc nhỏ. Như anh nói "Olly để debug các chương trình window 32-bit", vậy với môi trường Windows 64-bit thì Olly có thể RE được không ạ :D
 
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
Comment
Em có thắc mắc nhỏ. Như anh nói "Olly để debug các chương trình window 32-bit", vậy với môi trường Windows 64-bit thì Olly có thể RE được không ạ :D
olly sẽ không mở file win 64 bit ,bạn có thể dùng IDA 64 bit và kết hợp với một debug nào đó hoặc sử dụng một debug 64bit nào đó .
 
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
  • Thích
Reactions: whf and MinhMy
Comment
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
Comment
bài viết hay, cảm ơn tg nhiều.
 
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
Comment
1. Reverse-Engineering là gì?

Trước khi tìm hiểu Reverse Engineering (RE) là gì ta cùng xem xét đến một tình huống như sau:
  • Bạn may mắn được thưởng thức và mang về nhà 1 món ăn rất ngon từ 1 trong những nhà hàng nổi tiếng nhất thế giới. Nhưng lượng thức ăn có hạn, làm sao để có thể mời bạn bè món này trong các bữa tiệc??
  • Bạn sẽ làm gì để thực hiện được ý định của mình ???
  • Có 1 cách, đó là, trước khi thưởng thức, bạn nên tìm cách học xem họ chế biến như thếnào. Không may thay, nhà hàng này không phải lúc nào bạn cũng có thể đến, vì nó rất xa, và đầu bếp cũng không có thời gian hướng dẫn bạn, hoặc là họ sẽ giữ bí mật, không tiết lộ cho bạn. Bạn sẽ làm gì? Bây giờ thì khó khăn hơn nhiều rồi
  • Điều này buộc bạn sẽ phải quan sát xem món ăn này gồm có những thành phần gì, nếm thử, và đoán xem có những gia vị đặc trưng nào... Đây có thể coi là khái niệm cơ bản về RE thức ăn!
Trong bài viết này chúng ta sẽ cùng xem xét về khái niệm RE, khái niệm RE trong công nghệ thông tin.
RE là quá trình tìm hiểu những công nghệ được sử dụng bởi 1 thiết bị, 1 đối tượng hoặc 1 hệ thống thông qua việc phân tích cấu trúc, các chức năng và hoạt động của nó.

RE là 1 khái niệm rất rộng, bao gồm cả RE phần cứng và RE phần mềm. Nhưng trong bài này, chúng ta chỉ tìm hiểu RE 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.

Việc phân tích hoạt động cụ thể của một hệ thống hay 1 chương trình sẽ được sử dụng trong việc bảo trì chính hệ thống hay chương trình đó. Một mục đích khác của RE là phục vụ cho việc tạo ra một hệ thống mới hoặc chương trình mới có những chức năng tương tự mà không sử dụng hoặc chỉ là sao chép đơn giản (không có sự hiểu biết) hệ thống/chương trình gốc.

2. Ứng dụng của RE

Vậy RE được ứng dụng cho những công việc gì??
Có thể kể ra một số công việc cần sử dụng đến RE 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.:)

Bên cạnh đó RE còn là một sở thích, thỏa mãn tính tò mò của bạn về cách thức hoạt động của một hệ thống nào đó.

3. Các vấn đề chính của RE


Xét trong vấn đề nhỏ được bàn bạc trong bài viết này là RE phần mềm. Với mỗi một nền tảng, hệ điều hành khác nhau ta có các chương trình được xây dựng khác nhau, thực thi theo cách khác nhau. Điều này tạo ra sự phức tạp trong quá trình thực hiện công việc RE.

Với đặc trưng của mỗi nền tảng, ta có những hướng khác nhau để tiếp cận, những công cụ khác nhau để trợ giúp cho công việc.
Với các chương trình trên Window ta sử dụng những công cụ khác, các chương trình trên Linux ta dùng công cụ khác.
Những chương trình chạy trên nền tảng .Net Framework và các chương trình được viết bằng python sẽ có những công cụ RE khác nhau.

Một số công cụ thường sử dụng

1. 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.

Tôi sẽ dành bài viết tiếp theo để nói về Olly: cách cài đặt, những chức năng chính và demo việc sử dụng Olly để thực hiện 1 crackme đơn giản.

2. .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.
Trong bài viết tiếp theo tôi sẽ giới thiệu về tính năng và cách sử dụng của .Net Refector.

3. 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.
Tôi sẽ giới thiệu chi tiết về IDA và cách sử dụng trong bài viết tiếp theo, cùng với .Net Reflector.

4. 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)

Các bạn quan tâm có thể theo dõi chuyên đề tiếp theo - "RE2: Hướng dẫn sử dụng OllyDBG" từ ngày 12/2/2014
Nghe phê quá...
 
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
Comment
Verynice!
 
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
Comment
Thẻ
hex editor ida net reflector ollydbg reverse-engineering
Bên trên