Thứ Bảy, 2 tháng 7, 2011

OllyDbg - Tut6

I. Các lệnh so sánh và các lệnh nhảy có điều kiện

Thông thường, khi chúng ta thực hiện việc so sánh là chúng ta so sánh giữa hai đối tượng trở lên và rồi đi đến một quyết định vào đó. Lấy một ví dụ vui : Người A béo hơn người B do đó suy ra người A ăn nhiều hơn người B J.

Trong Cr@cking, khi chúng ta thực hiện so sánh giữa hai toán hạng thì kết quả của việc so sánh này sẽ quyết định rằng chương trình có thực hiện câu lệnh nhảy bên dưới hay là không. Và đây cũng là những kiến thức cơ bản luôn luôn được đề cập đến trong các bài viết hướng dẫn dành cho Newbie (những người mới bắt đầu làm quen với Crack).

Chúng ta biết rằng khi một chương trình yêu cầu ta phải nhập Serial để đăng kí, thì bản thân chương trình đó sẽ quyết định xem liệu rằng cái dãy serial mà chúng ta nhập vào kia có thỏa mãn (đúng) hay không thỏa mãn thông qua việc tính toán và tiến hành các câu lệnh so sánh. Dựa trên kết quả của việc so sánh này chương trình sẽ đưa ra quyết định có thực hiện lệnh nhảy hay là không, điều này tùy thuộc vào chúng ta có nhập serial không, serial của chúng ta nhập vào đúng hay sai ?

1. Lệnh CMP

Đây là câu lệnh so sánh rất thường gặp trong quá trình chúng ta phân tích chương trình, các điều kiện nhảy thường được cung cấp bởi lệnh CMP này. Tổng quát câu lệnh CMP có dạng như sau :

CMP Đích, Nguồn

Lệnh này thực hiện việc so sánh toán hạng Đích với toán hạng Nguồn bằng cách lấy toán hạng Đích trừ đi toán hạng Nguồn. Có thể nói lệnh này tương đương với lệnh SUB nhưng nó khác với lệnh SUB ở chỗ kết quả không được lưu lại (tức là toán hạng đích không bị thay đổi). Tác dụng chủ yếu của lệnh CMP là tác động lên các cờ. Một điểm chú ý khác nữa là các toán hạng của lệnh CMP không thể cùng là các ô nhớ. Vậy tổng kết lại lệnh này thường được dùng để tạo cờ cho các lệnh nhảy có điều kiện.

Dưới đây là bảng trích dẫn các cờ chính theo quan hệ Đích và Nguồn khi so sánh 2 số không dấu:

CF
ZF
SF
Đích = Nguồn
0
1
0
Đích > Nguồn
0
0
0
Đích < Nguồn
1
0
1

Download toàn bộ bài viết: ollydbg_tut6

Source: Kienmanowar.wordpress.com   

Không có nhận xét nào:

Đăng nhận xét