INTRODUCTION TO THE CRACKING WITH OLLYDBG FROM ZERO. Tutorials: INTRODUCTION TO THE CRACKING WITH OLLYDBG FROM ZERO. Link: Author: Ricardo ( Compiled to VietNamese by ZoZo ) Type: General for cracking. Level: Super Basic Part : 2. Sau khi chúng ta đã làm quen các cửa sổ làm việc của Olly (ở phần 1), thì trong phần 2 tiếp theo này ta quan tâm các hệ số đếm được dùng trong máy tính. Đây là phần kiến thức quan trọng trong cracking. Các hệ số dùng trong máy tính Có 3 hệ số đếm chính được sử dụng là : Nhị phân : chỉ có 2 ký số dùng để đếm ( 0 và 1 ). Thập phân : có 10 ký số dùng để đếm ( 0 tớ 9 ). Thập lục : có 16 ký số dùng để đếm ( 0 tới 9 và bổ sung 6 ký số khác là : A, B, C, D, E, F ) . Ngoài ra có thêm hệ Bát phân (8 ký số , 0 tới 8, dùng để đếm ). Số âm trong hệ 16. Thông thường , trong hệ 10, ta hay đặt dấu trừ phía trước một con số để nhận biết đó là số âm (vd : -1). Nhưng trong hệ 16, người ta chia dãy số biểu diễn một con số ra làm 2, một nữa biểu diễn số âm (từ 0000…000 tới 7FFF…FFF) , nữa còn lại là số dương (8FFF…FFF tới . FFFF…FFF). VD : Số DƯƠNG Thập lục Thập phân 0000 0000 0 0000 0001 1 7FFF FFFF 2,147,483,647 Số ÂM Thập lục Thập phân FFFF FFFF -1 FFFF FFFE -2 8000 0000 -2,147,483,648 A hug to all the CRACKSLATINOS Until part 3 Ricardo Narvaja 08 of November of 2005 Compiled to VietNamese by ZzoozZ August of 2006 1 INTRODUCTION TO THE CRACKING WITH OLLYDBG FROM ZERO. Bạn có thể quan sát sự chuyển đổi hệ số trong Olly ngay tại Command Bar . Như trong hình thì 7FFF FFFF bằng 2,147,483,647 . Bây giờ ta thay vào số 8000 0000 trong ô gõ lệnh . Quan sát ta thấy Olly không chuyển được 8000 0000 sang -2,147,483,648. Đây là một lỗi lập trình của Olly. Tuy nhiên, bạn hãy sử dụng thử thanh ghi EAX của Olly để chuyển đổi hệ số. Nhấn chuột vào thanh ghi EAX Nhấn đúp chuột trái vào thanh ghi EAX hoặc nhấn chuột phải vào EAX > chọn Modify A hug to all the CRACKSLATINOS Until part 3 Ricardo Narvaja 08 of November of 2005 Compiled to VietNamese by ZzoozZ August of 2006 2 INTRODUCTION TO THE CRACKING WITH OLLYDBG FROM ZERO. Bạn sẽ thấy cửa sổ mới xuất hiện cho phép sửa đổi giá trị của thanh ghi EAX. Bây giờ gõ vào 8000 0000 tại ô Hexadecimal, bạn sẽ thấy Olly chuyển giá trị số này sang hệ thập ph6n chính xác là -2,147,483,648. Tôi thử gõ vào ô hexadecimal một giá trị khác là FFFF FFFF thì thấy được Olly chuyển chính xác ra -1 . Như vậy, trong cửa sổ các thanh ghi này, ta có thể tìm được chính xác số âm hệ 10 từ con số hệ 16 nhờ vào thanh ghi EAX. Nhấn Cancel để tắt bỏ hộp thoại này đi. Ký tự ASCII Phần kiến thức quan trọng khác mà ta cần biết là cách mà hệ thống in ra màn hình các ký tự, ký số,… . Nhìn lại hình lúc nãy ở thanh Command . Phần chuyển đổi cuối cùng, bên cạnh số 2147483647 mà Olly có thể chuyển dịch từ số hexa ra là một ký tự ( € ). A hug to all the CRACKSLATINOS Until part 3 Ricardo Narvaja 08 of November of 2005 Compiled to VietNamese by ZzoozZ August of 2006 3 INTRODUCTION TO THE CRACKING WITH OLLYDBG FROM ZERO. Trong máy tính, mỗi ký tự, ký số,… được quy định bởi một con số hexa. Ta hãy xem qua bảng mã ASCII sau : A hug to all the CRACKSLATINOS Until part 3 Ricardo Narvaja 08 of November of 2005 Compiled to VietNamese by ZzoozZ August of 2006 4 INTRODUCTION TO THE CRACKING WITH OLLYDBG FROM ZERO. Dựa vào bảng mã ASCII này ta thấy có dòng , ta thử gõ vào thanh Command một số hexa là 45 . Ta thấy được Olly chuyển được số 45h này sang ký tự ASCII là chữ E in hoa . Quan sát trong cửa sổ DUMP của Olly ta thấy nó có một cột tên là ASCII . Giống hình sau: Trong cột ASCII này ta nhìn thấy được một chuỗi các ký tự được xếp gần nhau , hình thành nên một đoạn văn có ý nghĩa (hoặc không , cái này tùy chỗ ta coi ). Mỗi ký tự văn bản có một con số hexa tương ứng trong cột Hex dump. Trong hình là đoạn đầu của crackme được tác giả CRUEHEAD lập trình. A hug to all the CRACKSLATINOS Until part 3 Ricardo Narvaja 08 of November of 2005 Compiled to VietNamese by ZzoozZ August of 2006 5 INTRODUCTION TO THE CRACKING WITH OLLYDBG FROM ZERO. Ngăn xếp ( STACK ) Ngăn xếp là một phần của bộ nhớ hệ thống. Thường dùng để lưu trữ các dữ liệu quan trọng, thay cho việc lưu các dữ liệu đó trong các thanh ghi của CPU. Đặc điểm của ngăn xếp là các dữ liệu được đưa vào (Push) sau sẽ được lấy ra (Pop) trước . Bạn hãy tưởng tượng ngăn xếp như một chồng đĩa, cái đĩa nào được đặt lên chồng đĩa cuối cùng thì sẽ được lấy ra trước (Dĩ nhiên là trừ trường hợp bạn rì-vẹt cái chồng đĩa rùi sau đó lấy ^_^” ). Kết thúc phần 2. Phần tiếp theo chúng ta sẽ tìm hiểu xem thanh ghi (registry) và cờ (flag) là cái gì và chúng dùng cho vịêc chi . A hug to all the CRACKSLATINOS Until part 3 Ricardo Narvaja 08 of November of 2005 Compiled to VietNamese by ZzoozZ August of 2006 6 . phần 1), thì trong phần 2 tiếp theo này ta quan tâm các hệ số đếm được dùng trong máy tính. Đây là phần kiến thức quan trọng trong cracking. Các hệ số dùng trong máy tính Có 3 hệ số đếm chính. Bát phân (8 ký số , 0 tới 8, dùng để đếm ). Số âm trong hệ 16. Thông thường , trong hệ 10, ta hay đặt dấu trừ phía trước một con số để nhận biết đó là số âm (vd : -1). Nhưng trong hệ 16, người. ký số dùng để đếm ( 0 và 1 ). Thập phân : có 10 ký số dùng để đếm ( 0 tớ 9 ). Thập lục : có 16 ký số dùng để đếm ( 0 tới 9 và bổ sung 6 ký số khác là : A, B, C, D, E, F ) . Ngoài ra có thêm hệ