Welcome, sau một thời gian làm quen với Olly hôm nay em xin giới thiệu với mọi người một Plugin không kém phần quan trọng của Olly , đó chính là Plugin Command Line. Mặc dù còn nhiều tính năng hạn chế nhưng Plugin này cũng vẫn cung cấp cho chúng ta các chức năng đầy đủ mà một chương trình debug cần phải có. Nhưng bù lại thì mã nguồn của Plugin này là mở cho nên cho phép chúng ta add thêm bất kì câu lệnh mới nào vào đồng thời nó cũng cho phép chúng ta chỉnh sửa các chức năng của những câu lệnh đã có. Bài viết này được dịch ra từ file Help , mong rằng sẽ đáp ứng được phần nào thông tin , cũng như chức năng cơ bản của Plugin này.
Như chúng ta đã biết , để gọi Plugin này trong Olly chúng ta dùng phím tắt sau : Alt + F1. Hiện tại theo tài liệu mà em có thì Plugin này hỗ trợ những câu lệnh sau :
1. Expressions (Biểu thức) :
CALC expression : Tính toán giá trị của một biểu thức ? expression : Tương tự như trên expression (kí tự đầu tiên không được là chữ cái) : Tương tự như trên WATCH expression : Theo dõi, quan sát một biểu thức W expression : Tương tự
2. Assignments (Gán) :
SET reg=expression : Ghi giá trị của biểu thức vào thanh ghi chung 8, 16, hay 32 bits reg=expression : Tương tự SET memory=expression : Ghi giá trị của biểu thức vào bộ nhớ 8 , 16, hay 32 bits
3. Disassembler :
AT expression : Theo dõi địa chỉ trong cửa sổ Disassembler FOLLOW expression : Tương tự ORIG : Đi tới thanh ghi EIP hiện tại * : Tương tự
4. Dump and Stack :
D expression : Theo một địa chỉ trong cửa sổ Dump DUMP expression : Tương tự DA [expression] : Dump theo dạng assembler DB [expression] : Dump ở dạng byte (hexa) DC [expression] : Dump dưới dạng ASCII text DD [expression] : Dump dưới dạng địa chỉ (áp dụng cho stack) DU [expression] : Dump theo dạng Unicode text DW [expression] : Dump ở dạn word (hexa) STK expression : Lần theo một địa chỉ trong Stack
5. Assembling :
A expression [,command] : Assemble tại một địa chỉ
6. Labels and comments (Các lệnh liên quan đến nhãn và chú thích):
L expression, label : Gán nhãn cho một địa chỉ C expression, comment : Gán chú thích tại một địa chỉ
7. Breakpoint commands (Các lệnh liên quan đến việc đặt BP trong Olly):
BP expression [,condition] : Đặt breakpoint INT3 tại địa chỉ BPX label : Đặt breakpoint lên tất cả các hàm Call BC expression : Xóa điểm đặt BP tại địa chỉ MR expression1 [,expression2] : Đặt một BP là memory on access trên một phạm vi nào đó MW expression1 [,expression2] : Đặt một BP là memory on write trên một phạm vi nào đó MD : Xóa điểm đặt BP memory HR expression : Đặt 1-byte BP có dạng hardware on access lên một địa chỉ HW expression : Đặt 1-byte BP có dạng hardware on write lên một địa chỉ HE expression : Đặt một BP có dạng hardware on execute lên một địa chỉ HD [expression] : Xóa điểm đặt hardware BP tại một địa chỉ
8. Tracing commands (Các lệnh liên quan đến việc Trace code trong Olly):
STOP : Tạm dừng sự thi hành PAUSE : Tương tự RUN : Chạy chương trình G [expression] : Chạy chương trình đến một địa chỉ nào đó GE [expression] : Bỏ qua các ngoại lệ để điều khiển và chạy đến một địa chỉ nào đó S : Nhảy vào trong một hàm SI : Tương tự SO : Nhảy qua một hàm T [expression] : Trace vào trong một hàm đến một địa chỉ nào đó TI [expression] : Tương tự TO [expression] : Trace qua một hàm đến một điạh chỉ nào đó TC condition : Trace vào trong một hàm đến một điều kiện nào đó TOC condition : Trace qua một hàm đến một điều kiện nào đó TR : Thực thi cho đến khi Return TU : Thực thi cho đến đoạn user code
9. OllyDbg windows (Các lệnh liên quan đến cửa sổ):
LOG : Xem cửa sổ Log MOD : Xem cửa sổ Executable MEM : Xem cửa sổ Memory CPU : Xem cửa sổ CPU CS : Xem cửa sổ Call Stack BRK : Xem cửa sổ Break Points OPT : Xem cửa sổ Options
10. Miscellaneous commands (Các lệnh khác):
EXIT : Đóng OllyDbg QUIT : Tương tự OPEN [filename] : Mở một file để Debug (executable file or dll) CLOSE : Đóng chương trình đang Debug RST : Restart lại chương trình đang Debug HELP : Mở cửa Help của Plugin Command Line HELP OllyDbg : Mở cửa sổ Help của Olly HELP APIfunction : Mở cửa sổ Help của hàm API
Các lệnh dùng trong Plugin Command Line không phân biệt chữ hoa và chữ thường , các tham số trong ngoặc vuông là những tùy chọn. Các biểu thức có thể bao gồm các hằng số, các thanh ghi và các tham chiếu bộ nhớ , bên cạnh đó nó còn hỗ trợ tất cả các phép tính số học cơ bản và các Boolean Function. Theo mặc định thì tất cả các hằng số đều ở dạng Hexa. Để biểu diễn các hằng số về dạng Decimal , đi kèm nó là dấu thập phân. Ví dụ :
1. 2 + 2 : Tính toán giá trị của biểu thức (Cộng ở kiểu Hexa); 2. 2.0 + 2.0 : Tính toán giá trị của biểu thức (Cộng ở kiểu thập phân); 3. AT [EAX+10] : disassemble tại địa chỉ mà địa chỉ này là nội dung của Dw mem tại địa chỉ EAX + 0x10; 4. BP KERNEL32.GetProcAddress : Đặt một BP lên hàm API . Chú ý bạn có thể đặt một BP trong file Dll hệ thống , nhưng chỉ đối với các hệ điều hành NT; 5. BPX GetProcAddress : Đặt BP lên tất cả các lệnh gọi hàm API GetProcAddress; 6. BP 412010,EAX==WM_CLOSE : Đặt một Conditional BP tại địa chỉ 0x412010. Chương trình sẽ dừng lại khi mà giá trị của EAX = WM_CLOSE;
kienmanowar(REA – cRaCkErTeAm) – 05/01/2005
Thank to my family, Computer_Angel, Moonbaby , Zombie_Deathman, Littleboy, Benina, QHQCrker, the_Lighthouse, Hoadongnoi, Nini … all REA‘s members, HacNho, RongChauA, Deux, tlandn …. all my friend, and YOU.
http://reaonline.net