Ollydbg công cụ cho các chuyên gia reverse engineering

ollydbg hay đơn giản là olly là một công cụ sửa lỗi rất phổ biến. Nhờ giao diện trực quan và dễ sử dụng, olly phù hợp với mọi tầng lớp người dùng

Chức năng chính. Bạn đang xem: ollydbg là gì

Giao diện:

Cửa sổ ollydbg được chia thành 5 cửa sổ con:

1: Cửa sổ tháo gỡ: các đoạn mã chương trình dưới dạng mã hợp ngữ và nhận xét về các dòng mã này.

Bạn đang xem: ollydbg là gì

Xem: ollydbg là gì

2: Cửa sổ thanh ghi: các thanh ghi và giá trị của chúng.

3: Cửa sổ nhắc: Thông tin bổ sung cho một dòng mã. Thông tin này rất hữu ích trong quá trình gỡ lỗi.

4: Cửa sổ kết xuất: Cho phép người dùng xem và chỉnh sửa giá trị của chương trình đang được gỡ lỗi trong bộ nhớ.

5: Cửa sổ ngăn xếp: thông tin về ngăn xếp chương trình.

Ngoài 5 cửa sổ trên, olly còn một số cửa sổ khác. Lưu ý rằng có các chức năng trên thanh menu:

-Nhấp vào nút l để xem cửa sổ dữ liệu nhật ký của olly. Chứa thông tin về các mô-đun, thư viện nhập và plugin được tải cùng với chương trình khi nó được tải vào olly.

– Nhấp vào nút e để xem cửa sổ Mô-đun Thực thi, danh sách các tệp thực thi được chương trình sử dụng.

– Nhấp vào nút m và bạn sẽ thấy cửa sổ bản đồ bộ nhớ có thông tin về bộ nhớ được chương trình của chúng ta sử dụng.

-Nhấp vào nút t là cửa sổ luồng, liệt kê các luồng của chương trình.

-Nhấp vào nút w là cửa sổ

Nút

h là cửa sổ xử lý.

– Các nút / là các bản vá, một cửa sổ chứa thông tin về các lệnh mà chúng ta đã sửa đổi trong chương trình.

-Nút b là cửa sổ điểm ngắt, hiển thị các điểm ngắt mà chúng ta đặt trong chương trình.

– Nút r – Tham chiếu Chứa thông tin về kết quả của chức năng tìm kiếm trong olly.

Các hàm không thể thiếu là các hàm dùng để gỡ lỗi:

– Đặt điểm ngắt: f2

– Chạy: f9

– Nhập: f7

– Bỏ qua: f8

– Khởi động lại: ctrl + f2

Điểm ngắt có nhiều loại và ollydbg hỗ trợ tất cả các loại đó. Theo mặc định, ollydbg sử dụng các điểm ngắt mềm, nhưng bạn vẫn có thể đặt các điểm ngắt cứng nếu muốn. Ngoài ra, bạn có thể đặt điểm ngắt có điều kiện hoặc điểm ngắt trong bộ nhớ.

Điểm ngắt mềm

Các điểm dừng mềm rất hữu ích khi gỡ lỗi các hàm giải mã chuỗi. Chúng tôi có thể phát hiện hành vi của mã độc hại bằng các chuỗi mà nó sử dụng, vì vậy những người viết phần mềm độc hại thường làm hỏng chúng bằng các chức năng mã hóa/giải mã chuỗi. Mã độc phải gọi hàm giải mã chuỗi trước khi sử dụng từng chuỗi.

Điểm dừng có điều kiện

Điểm dừng có điều kiện là điểm dừng mềm chỉ dừng thực thi khi đáp ứng một số điều kiện nhất định. ollydbg cho phép thiết lập các điểm dừng có điều kiện bằng cách sử dụng các biểu thức; mỗi khi chương trình thực thi đến một điểm ngắt mềm, biểu thức sẽ được đánh giá và nếu kết quả của biểu thức khác 0 (khác không), chương trình sẽ dừng thực thi.

Các điểm ngắt có điều kiện đặc biệt hữu ích khi bạn muốn chương trình của mình chỉ dừng thực thi khi các đối số cụ thể được chuyển đến các hàm api thường được gọi.

Điểm dừng cứng

ollydbg cũng cho phép thiết lập các điểm dừng cứng thông qua một số thanh ghi cụ thể.

Ưu điểm của điểm dừng cứng là chúng không can thiệp vào mã, ngăn xếp hoặc bất kỳ tài nguyên nào khác của chương trình đang được gỡ lỗi. Chúng cũng không làm chậm quá trình thực thi chương trình. Tuy nhiên, chúng tôi chỉ có thể thiết lập tối đa 4 điểm ngắt cứng tại một thời điểm.

Để đặt điểm ngắt cứng tại một lệnh, nhấp chuột phải vào lệnh và chọn Điểm ngắt>; Phần cứng, Thực thi.

Theo mặc định, ollydbg sẽ sử dụng các điểm dừng mềm. Bạn có thể thay đổi mặc định này trong các tùy chọn gỡ lỗi. Ngoài ra, hãy sử dụng các điểm dừng cứng

Hữu ích để bỏ qua một số kỹ thuật chống gỡ lỗi, vì các điểm dừng mềm dễ dàng được phát hiện bằng các kỹ thuật này.

Điểm ngắt bộ nhớ

ollydbg hỗ trợ thiết lập các điểm ngắt cứng hoặc mềm trên một phần bộ nhớ để dừng thực thi khi chương trình truy cập vào bộ nhớ đó. Các kiểu truy cập phổ biến có thể là đọc, ghi, thực thi…

Để đặt điểm ngắt bộ nhớ, hãy chọn một vùng bộ nhớ hoặc một phần trong bản đồ bộ nhớ trong cửa sổ kết xuất bộ nhớ, nhấp chuột phải và chọn Điểm ngắt>;Bộ nhớ, khi được truy cập. Mỗi lần chỉ có thể đặt một điểm ngắt bộ nhớ và điểm ngắt bộ nhớ trước đó sẽ bị xóa khi đặt điểm ngắt bộ nhớ mới.

2. Các plugin trong ollydbg

Hủy trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Nhận xét

Tên*

Email*

Trang web

Lưu tên, email và trang web của tôi trong trình duyệt này cho lần sau khi tôi đăng bình luận.

{{#message}}{{{message}}}{{/message}}{{^message}} không gửi được. Máy chủ đã phản hồi bằng {{status_text}} (mã {{status_code}}). Vui lòng liên hệ với nhà phát triển của trình xử lý biểu mẫu này để cải thiện thông báo này. Tìm hiểu thêm{{/message}}

{{#message}}{{{message}}}{{/message}}{{^message}} Có vẻ như bạn đã gửi thành công. Ngay cả khi máy chủ phản hồi bình thường, việc gửi có thể vẫn chưa được xử lý. Vui lòng liên hệ với nhà phát triển của trình xử lý biểu mẫu này để cải thiện thông báo này. Tìm hiểu thêm{{/message}}

Ollydbg hay còn gọi tắt là Olly là một công cụ debug rất phổ biến trong Reverse Engineering (RE), 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.

Bạn đang xem: Ollydbg công cụ cho các chuyên gia reverse engineering


1. Các chức năng chính

Cửa sổ Olly
DBG được chia ra làm 5 cửa sổ con :

1: Disassembler window: Các đoạn mã của chương trình dưới dạng code assembly và các comment tại các dòng code đó.

2: Register window: Các thanh ghi và giá trị của chúng.

3: Tip window: Các thông tin bổ sung cho 1 dòng code. Các thông tin này khá hữu ích trong quá trình debug.

4: Dump window: Cho phép người sử dụng xem và chỉnh sửa các giá trị trong bộ nhớ của chương trình đang được debug.

5: Stack window: Thông tin về stack của chương trình.


*

Ngoài 5 cửa sổ trên thì Olly còn có một số cửa sổ khác. Để ý trên thanh menu có các chức năng:

*
-Click vào nútLta thấy cửa số Log data của Olly. Chứa các thông tin về các module, các import library và các plugins được load cùng chương trình tại thời điểm chương trình được load vào Olly.
– Click vào nútEta thấy cửa sổ Executable modules, danh sách các file thực thi được chương trình sử dụng.
– Click vào nútMta thấy cửa sổ Memory Map, chứa thông tin về bộ nhớ được chương trình của ta sử dụng.
-Click vào nútTlà cửa sổ Threads, liệt kê các thread của chương trình.
-Click vào nútWlà Windows
-NútHlà cửa sổ Handles.
– Nút/là Patches, cửa sổ chứa các thông tin về những câu lệnh ta đã sửa ở trong chương trình.

Xem thêm: Ngân hàng thương mại là gì? đặc điểm của ngân hàng thương mại?

– NútKlà cửa sổ Call Stack.
– NútBlà cửa sổ Breakpoints, hiển thị các breakpoint ta đặt trong chương trình.
– NútR– References chứa thông tin về kết quả cho chức năng tìm kiếm trong Olly.

Những chức năng không thể thiếu đó là các chức năng phục vụ cho công việc debug:

– Đặt Breakpoint:F2
– Run:F9
– Step into:F7
– Step over:F8
– Restart:Ctrl + F2

*

Có nhiều loạibreakpointvà Olly
Dbg hỗ trợ tất cả chúng. Mặc định, Olly
Dbg sử dụng các breakpoint mềm, nhưng nếu cần thì ta vẫn có thể đặt các breakpoint cứng. Ngoài ra, ta có thể đặt breakpoint có điều kiện hoặc breakpoint trên bộ nhớ


Breakpoint mềm

Các breakpoint mềm sẽ hữu ích khi debug một hàm giải mã string. Ta có thể phát hiện hành vi của mã độc thông qua các chuỗi string mà nó sử dụng, vì lí do này mà tác giã mã độc thường làm rối chúng thông qua các hàm mã hóa/giải mã string. Mã độc phải gọi hàm giải mã string trước khi mỗi chuỗi string được sử dụng.


Breakpoint có điều kiện

Breakpoint có điều kiện là các breakpoint mềm và chúng chỉ dừng thực thi khi một điều kiện cụ thể được thỏa mãn. Olly
Dbg cho phép đặt breakpoint có điều kiện bằng các biểu thức; mỗi lần chương trình thực thi đến breakpoint mềm, biểu thức sẽ được đánh giá và nếu kết quả biểu thức khác 0 (non-zero), chương trình sẽ dừng thực thi.

Breakpoint có điều kiện đặc biệt hữu ích khi muốn chương trình dừng thực thi chỉ khi một tham số cụ thể được truyền vào một hàm API được gọi thường xuyên.


Breakpoint cứng

Olly
Dbg cũng cho phép đặt các breakpoint cứng thông qua một số thanh ghi cụ thể.

Ưu điểm của các breakpoint cứng là chúng không can thiệp vào code, stack hay bất kì tài nguyên nào của chương trình cần debug. Chúng cũng không làm chậm quá trình thực thi chương trình. Tuy nhiên, ta chỉ có thể đặt tối đa 4 breakpoint cứng tại cùng một thời điểm.

Để đặt breakpoint cứng tại một lệnh, click phải vào lệnh đó và chọnBreakpoint > Hardware, on Execution.

Mặc định, Olly
Dbg sẽ sử dụng các breakpoint mềm. Ta có thể thay đổi mặc định này trong tùy chọn Debugging Options. Dùng breakpoint cứng cũng

giúp qua mặt một số kỹ thuật anti-debugging, khi các breakpoint mềm dễ dàng bị các kỹ thuật này phát hiện.


Breakpoint trên bộ nhớ

Olly
Dbg hỗ trợ đặt breakpoint cứng hoặc breakpoint mềm trên một vùng nhớ (chunk of memory) để dừng thực thi khi chương trình truy cập tới vùng nhớ đó. Các dạng truy cập phổ biến có thể là read, write, execute,…

Để đặt một breakpoint bộ nhớ, chọn một vùng nhớ trong cửa sổ memory dump hoặc một section trong memory map, click phải và chọnBreakpoint > Memory, on Access. Ta chỉ có thể đặt một breakpoint bộ nhớ tại một thời điểm và breakpoint nhớ trước đó sẽ bị xóa khi ta đặt một breakpoint nhớ mới.


*

Olly
Dump là plugin phổ biến nhất, cho phép dump một tiến trình thành PE file. Olly
Dump cũng thường được dùng trong quá trình unpacking. Khi sử dụng Olly
Dump để dump một tiến trình, ta có thể đặt entry point và offset cho các section một cách thủ công; nhưng thường thì ta nên để Olly
Dump tự động thực hiện thao tác trên.


*

*

Hide Debugger

Plugin này thực hiện một số phương pháp giúp Olly
Dbg qua mặt các cơ chế phát hiện debugger. Hide Debugger đặc biệt hiệu quả đối với các hàm kiểm tra Is
Debugger
Present, Find
Window, các bẫy sử dụng ngoại lệ không được xử lý, và khai thác lỗ hổng Output
Debug
String của Olly
Dbg


Leave a Reply

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