Archive for the ‘OllyDbg tut_6’ Category

OllyDbg_Tut6

Posted: September 4, 2008 in OllyDbg Tutorials, OllyDbg tut_6

I. Giới thiệu chung

Trong phần 5, tôi đã đề cập tới các câu lệnh liên quan tới việc tính toán cũng như các lệnh logic, nói tóm lại chưa có gì đặc biệt hơn và có thể gây nhàm chán với những anh em nào đã quá Pr0 khà khà J. Trong phần 6 của loạt tuts này tôi xin giới thiệu tới các bạn về các câu lệnh so sánh và các lệnh nhảy có điều kiện. Đây là những kiến thức nền tảng cơ bản và quan trọng để có thể đi tiếp các phần tiếp theo. Xin nhắc lại một lần nữa việc cung cấp tất cả các lệnh vượt quá khuôn khổ cho phép của bài viết, cũng như tôi cũng không đủ sức để mà thực hiện điều này. Do đó việc tham khảo thêm các nguồn tài liệu khác để bổ sung thêm kiến thức là điều hết sức cần thiết cho các bạn.

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