Link: 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à một lỗi lập trình của
Trang 1Tutorials: INTRODUCTION TO THE CRACKING WITH
OLLYDBG FROM ZERO
Link:
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ừ 0 000…000 tới 7 FFF…FFF) , nữa còn lại là số dương
(8 FFF…FFF tới F FFF…FFF).
VD :
Số DƯƠNG
Số ÂM
-A hug to all the CR -ACKSL -ATINOS Until part 3 Ricardo Narvaja 08 of November of 2005
Compiled to VietNamese by ZzoozZ August of 2006
1
Trang 2Bạ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
Trang 3Bạ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 CR -ACKSL -ATINOS Until part 3 Ricardo Narvaja 08 of November of 2005
Compiled to VietNamese by ZzoozZ August of 2006
3
Trang 4Trong 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 :
Trang 5Dự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 CR -ACKSL -ATINOS Until part 3 Ricardo Narvaja 08 of November of 2005
Compiled to VietNamese by ZzoozZ August of 2006
5
Trang 6Ngă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