**** Sau khi đặt BP ở đây, chương dừng lại tại BP. Xoá BP . Nhấn tiếp F8 ta nhận thấy đoạn CODE trên là một vòng lặp . Để thoát khỏi vòng lặp này ta đặt BP bên ngoài vòng lặp này : Quote: 00452CAB . 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX ; <== Set BreakPoint here 00452CAE . 6A 00 PUSH 0 **** Nhấn F9 để đến BP này. Chương trình xuất hiện thông báo “The license key XXXX is not scorrect”. Nhấn CANCEL để đóng thông báo này, lập tức ta trở lại chương trình trong Olly. Xoá điểm đặt BP này. Nhấn tiếp F8 **** Sau khi trace qua một số lần (ở chương trình này là 7 lần ) RETN ta nhìn lên trên chút và thấy Quote: 0050F58A |. E8 29FCFFFF CALL up-gdb_.0050F1B8 0050F58F |. 84C0 TEST AL,AL 0050F591 |. 74 5B JE SHORT up-gdb_.0050F5EE <=== JMP out of NAG if Serrial is Correct - Đến đây CRACKING diễn ra bình thường. Làm một cái script cho pp stack: Các bạn chạy cái script sau cho các chương trình sử dụng hàm Messagboxa : -Đầu tiên run chương trình -Đến hộp thọai đang ký. Đánh FU, FS -Đừng nhấn nút reg, trở lại Olly -Nhấn F12 tạm ngưng chương trính -Chạy script sau: Quote: //=========================== // Set bp MessageBoxA use method Stack // Author: Benina // Date post: 7/10/2004 //Ver: 0.1 // For Newbie //=========================== var x var _api var _dll mov _api,"MessageBoxA" mov _dll,"user32.dll" gpa _api,_dll cmp $RESULT,0 je label_exit MSG "Exist one Breakpoint" bp $RESULT MSG "Program will run continuos, Press button Reg " eob follow_in_desASM run follow_in_desASM: bc eip eob to_user_code mov x,[esp] bphws x,"x" MSG "Program will run continuos, Press button OK " run to_user_code: bpmc rtu label_exit: ret//exits script Moonbaby (http://www.reaonline.net ) Sử dụng OllyDBG & Command Line Plugin (phần cơ bản) I - Giới thiệu : - Ollydbg hay gọi tắt là Olly, là một chương trình DEBUGGER dễ sử dụng, trực quan . Thích ứng cho mọi cấp độ CrackEr khác nhau. - Có thể nói Olly bao hàm rất nhiều tính năng mà nếu sử dụng riêng lẻ ta phải cần đến nhiều chương trình kết hợp lại . Hiện nay Olly đã có Version 1.0 - Phần hướng dẫn sử dụng Olly này bao gồm ba phần : *** Phần I : Cài đặt và cấu hình Olly *** Khần II : Tổng quan về Olly *** Phần III : Sử dụng Olly II – Cài đặt và cấu hình Olly - Olly không cần cài đặt, khi load về ta chỉ việc bung nén vào trong một thư mục là đã có thể sử dụng Olly. Tuy nhiên, để có thể sử dụng thêm một số chức năng của Olly ta cần phải cấu hình thêm và tìm thêm một số Plugins được viết riêng cho chương trình. - Bạn có thể load Olly từ trang ch ủ http://home.t-online.de/home/Ollydbg hay từ http://moonbaby.envy.nu/002-tools/olly với các Plugin và cấu hình định sẵn. - Sau khi Unzip Olly vào thư mục ( chẳng hạn OllyDbg ) bạn sẽ thấy có một thư mục định sẵn Plugins, bạn cần tạo thêm một thư mục nữa là Udd. Đồng thời nếu bạn tải Olly về từ trang chủ sẽ không có file ollydbg.ini ( file này lưu giữ cấu hình của Olly ), nhưng khi bạn chạy Olly lần đầu tiên thì chươ ng trình sẽ tạo file này cho bạn. - Khởi động Olly lên, bạn chọn Options > Appearance > Directories. Ở đây bạn sẽ thấy hai đường dẫn là Udd Path và Plugin Path, bạn hãy chọn đường dẫn về thư mục của Olly. Sau đó chương trình yêu cầu bạn khỏi động lại để chập nhận chỉnh sửa. - Sau khi khởi động lại bạn sẽ nhìn thấy trên thanh công cụ chính của Olly xuất hiện thêm mộ t mục mới Plugins. - Khi bạn tải Olly từ trang web http://moonbaby.envy.nu/002-tools/olly, trong này đã có sẵn file ollydbg.ini, một số Plugins cần thiết và đã được cấu hình sẵn cho bạn các số thông số về màu sắc, màu nền cũng như một số các tuỳ chọn khác. Khi bạn tải Olly về từ trang chủ thì khi khởi động chương trình màu sắc của Olly sẽ trông không được đẹp. Để chỉnh sửa mà s ắc bạn chọn Options > Appearance, trong cửa sổ này bạn vào từng mục và chọn màu sắc, font và kích thước chữ, màu nền, màu highline Sau đó khởi động lại Olly để kích hoạt thay đổi. - Khi đã quen thuộc với Olly, bạn nên vào phần HELP để tìm hiểu thêm và cấu hình Olly theo ý của bạn. Song nếu bạn mới bắt đầu sử dụng Olly, tôi khuyên bạn nên sử dụng cấu hình định sẵn khi bạn tải về t ừ http://moonbaby.envy.nu/002-tools/olly III – Tổng quan về Olly : Olly có thể chia thành 5 cửa sổ chính . Để chuyển đổi qua lại giữa các cửa sổ này ta dùng phím TAB. Và phím Shift-TAB sẽ chuyển về cửa sổ trước đó. III.1 - CPU : - Hầu hết thời gian chúng ta tập trung vào đây. Cửa sổ này chia làm 4 ô nhỏ. Ta xét từ trái sang phải : ** Ô thứ nhất : Hiển thị địa chỉ của code. Khi ta double-click vào nó thì ngay dòng chúng ta double-click vào sẽ đổi thành “ $ == > “, bên trên nó sẽ là “ $ - x “ và bên dưới sẽ là “ $ + x “. Các giá trị “ x “ này chính là số byte của câu lệnh. ** Ô thứ hai : chính là mã lệnh. Khi ta double-click vào nó thì có nghĩa ta đặt BreakPoint tại đó. Và khi double-click lần nữa thì xoá bỏ điểm đặt BreakPoint này. ** Ô thứ ba : code Assembler. Đây là ô rất quan trọng trong suốt quá trình trace code. Khi ta double-click vào nó thì sẽ hiện lên ô “Assemble at XXXXXXXX”, chúng ta có thể sửa code của chương trình thông qua ô này. ** Ô thứ tư : hiển thị thông tin của chương trình. Chúng ta sử dụng ô này để tìm các chuỗi đặt biệt. Và khi chúng ta chuyển sang cửa sổ “Text String reference” thì mọi thông tin của cửa sổ này chính là thông tin của ô này. Khi ta double-click vào nó thì sẽ hiện lên ô “ Add comment at XXXXXXXX” cho chúng ta ghi chú lại thông tin, chú giải cần thiết để sử dụng cho lần sau. III.2 - Registers [FPU, MMX, 3DNow!] : - Cửa sổ thứ hai nằm bên phải cửa sổ thứ nhất. - Hiển thị các thanh ghi và cờ trong Assembly. Cửa sổ này cần thiết để chúng ta theo dõi sự thay đổi giá trị của các thanh ghi, các lệnh toán học …. III.3 - Cửa số thứ ba : - Cửa sổ nhỏ nằm ngay bên dưới của sổ thứ nhất. - Thông báo cho ta biết địa chỉ thực, giá trị tính toán, trước khi đưa vào hiển thị ở Cửa Sổ Thứ Hai. - Trong cửa sổ này, khi ta right click vào một dòng thì có thể xuất hiện cửa sổ phụ với các tùy chọn ( tối đa là 4 tuỳ chọn ) Modify data, Follow address in Dump, Follow value inDump và Appearance. - Tuy nhiên phải ghi nhớ một điều, thông số xuất hiện trong cửa sổ này là giá trị của dòng lệnh trong cửa sổ thứ nhấ t khi ta trace tới. Còn khi ta dò thì không xuất hiện thông số trong cửa sổ này *** Modify data : khi chọn mục này sẽ xuất hiện cửa sổ Modify dWord at XXXXX với ba giá trị là Hexadecimal, Signed và Unsigned. Ưu điểm của của sổ này là trong một số trường hợp ta có thể xem được số SERIAL thực của chương trình. *** Follow address in Dump : Chuyển cửa sổ thứ tư đến địa chỉ mà ta chọn. Rất cần thiết khi ta cần xem xét giá trị của chương trình được lưu tại địa chỉ này *** Follow value inDump : Chuyền cửa sổ thứ tư đến giá trị của địa chỉ mà ta chọn. *** Appearance : thông báo về các tùy chọn trong Options > Appearance . III.4 - Address, Hex dump, ASCII hay UNICODE - Cửa sổ thứ tứ nằm bên dưới cửa sổ thứ ba . - Cần thiết để ta quan sát sự thay đổi các giá trị tính toán của chương trình. - Trong một vài trường hợp ta có thể tìm thấy chuỗi SERIAL ở đây. III.5 - STACK - Cửa sổ thứ năm nằm bên dưới của sổ thứ hai và ngay bên phải cửa sổ thứ ba. - Đây là bộ nhớ tạm của chương trình. - Các thông số của một hàm trước khi xử lý sẽ được lưu tạm vào trong STACK này. Theo dõi chặt chẽ sự thay đổi các vùng nhớ và giá trị của cửa sổ này sẽ giúp ích rất nhiều trong quá trình tìm ra chuỗi SERIAl thực. . 0050F591 |. 74 5B JE SHORT up-gdb_.0050F5EE <=== JMP out of NAG if Serrial is Correct - Đến đây CRACKING diễn ra bình thường. Làm một cái script cho pp stack: Các bạn chạy cái script sau