Để mở cửa sổ About : D:\Crack\DateCrack\DateCrck.exe -a Để mở cửa sổ Command Line Syntax : D:\Crack\DateCrack\DateCrck.exe -? Để khởi động chương trình bình thường : D:\Crack\DateCrack\DateCrck.exe D:\Software\ABC\abc.exe, 19/02/2005, 0 Để khởi động chương trình maximize : D:\Crack\DateCrack\DateCrck.exe D:\Software\ABC\abc.exe, 19/02/2005, 1 CƠ CHẾ HOẠT ĐỘNG : Thông thường ngay khi khởi động, bằng cách này hay cách khác thì soft đều kiểm tra đồng hồ hệ thống để xét xem chương trình đã hết hạn chưa. Và nhiệm vụ của DateCrack+ là sửa lại đồng hồ hệ thống thành ngày mà ta đã đặt ra trong 10 giây đầu tiên kể từ lúc khởi động chương trình, sau đó đồng hồ sẽ trở lại bình thường. Tuy chỉ có 10 giây nhưng bấy nhiêu là quá đủ để chương trình kiểm tra xong và chạy bình thường. Và thế là chương trình bị lừa 1 cách dễ dàng :D VÀI ĐIỂM LƯU Ý : a) câu lệnh của chúng ta phải có đủ số dấu phẩy (,) cần thiết và chúng phải được đặt đúng vị trí b) sau khi sửa lại Target:, icon của shortcut sẽ thay đổi thành icon của DateCrack+. Nếu không thích như thế, các bác thì cần vào Properties, tab Shortcut, chọn Change Icon rồi link đến icon của chương trình là xong Okey, trăm nghe không bằng một thấy. Chúng ta bước qua phần III nào !!! III - Example : Victim : EmEditor Homepage : http://www.emeditor.com/ ================================================== Install EmEditor vào thư mục nào đó (giả sử là D:\Phan mem\EmEditor) Chạy thử chương trình. Ta biết được soft này chỉ cho dùng thử 30 ngày, sau đó phải đăng ký. Mở đồng hồ hệ thống lên. Giả sử hôm nay là 20/02/2005. Bây giờ ta chỉnh đồng hồ lên 20 ngày. Xong reopen chương trình, haha chỉ còn có 10 ngày nữa thôi :D Oki, tạo 1 shortcut đến chương trình. Xong ấn chuột phải vào shortcut chọn Properties. Ấn tab Shortcut rồi trong box Target: ta sửa thành như sau : D:\Crack\DateCrack\DateCrck.exe D:\Phan mem\EmEditor\emeditor.exe, 20/02/2005 Tiếp theo ta nhấn Apply, rồi OK. Run lại chương trình xem các bác Kiểu này thì có đến tết Công-gô cũng chả hết hạn sử dụng (chỉ tội nghiệp cái soft mỗi lần khởi động là phải làm đi làm lại 1 công việc vô ích - check time) :D :D :D The_lighthouse(REA) Kill CRC by a little program A :USING "SYMBOL LOADER" CRACKING A TIME TRIAL PROPRAM Hôm nay tôi xin post bài này, vì cảm thấy kỷ thuật crack này cung rất hay, mà thực sự thì nó rất newbie, nhưng là newbie mà chúng ta ko biết được các kỷ thuật newbie thì thật sự chúng ta chưa phải là newbie. (các bạn đếm xem tui viết bao nhiêu từ newbie vậy??? :)) hi`hi`). Đồng thời qua TUT này tui sẽ giới thiệu với các bạn một tính năng của chương trình SI là Symbol Loader. Vì nó có liên quan đến các TUT unpack sau này sử dụng SI, nên bài này rất cần cho các newbie để tiến xa hơn nữa. Vài lời tâm sự: Có một hôm, tôi lang thang trên mạng và bắt gặp được lão Mushy có một bài rất hay mà lão ta quản cáo là crack được 99% các chương trình Time Trial.Thật là hấp dẫn phải ko các bạn. Kỷ thuật tôi sắp trình bày cho các bạn là cái mà Lão Mushy quản cáo đó.Mời các bạn xem qua I. "LUỒNG CHỈ THỊ" LÀ GÌ? Khi một chương trình chạy hay thực thi, nó sẽ chạy xiên qua một series các hàm, thủ tục và những chỉ thị (cá hai hàm và thủ tục thực ra là những chỉ thị đuợc chọn lựa và đuợc nhóm lại với nhau thành 1 nhóm rồi luu vào một nơi nào đó trong chương trình để khi gọi thực thi một lần một ). Một “LUỒNG CHỈ THỊ” là một list hay một biểu đồ của lối đi mà chương trình đi qua khi thực thi . Lối đi này có thể khác nhau dựa trên tình huống mà chương trình đã chạy . Tại sao chương trình lại có thể có 2 lối đi?. Tôi ví dụ như sau để các bạn dể hiểu: Nếu trong thời gian 30 ngày, một chương trình trial sẽ cho phép ta sử dụng thử , còn như quá 30 ngày thì ko dùng được nữa. Vậy chương trình sẽ có 2 "lối đi" của các dòng lệnh , một là chưa quá 30 ngày, hai là sau 30 ngày. Sau đây là 6 thủ tục mà một chương trình Time Trials thường phải có: 1. Getsystemtime (Kiểm tra thời gian hệ thống) 2. Installed (Kiểm tra khi bạn cài đặt chương trình) 3. Expired (Hiển thị một tín hiệu khi chương trình hết hiệu lực) 4. DaysLeft (Hiển thị một tín hiệu như "you have % days left") 5. Halt (Thóat chương trình) 6. Main (Về chương trình chính) Sử dụng thủ tục và các chỉ thị asm ta diễn tả chế độ bảo vệ của một chương trình Time Trial giống các thủ tục ở trên như sau: Quote: 00000001:Call GetSystemTime 00000002:Call Installed 00000003:If (GetSystemTime-Installed) >30 days then 00000004: Call Expired 00000005: Jmp Halt 00000006:Otherwise 00000007: Call DaysLeft 00000008: Jmp Main Trong thực tế các chỉ thị trên giống như vầy: Quote: Call 041829B0 (GetSystemTime) Call 0492832C(Installed) Cmp ax,bx JL 04927435 (Nhảy hoặc không dựa vào các giá trị ax,bx) Call 04348234 (Expired) Jmp 0432833C (Halt) JL Address Call 04583BC0 (DayLeft message) Jmp 042392BC (Về chương trình chính) Nếu bạn nhìn vào đọan code trên bạn sẻ thấy rằng chương trình chạy dựa trên giá trị ax và bx trước lệnh nhảy JL.Vấn đề ở đây là trong một đóng các lệnh khi ta diassembly, ta rất khó tìm ra vị trí của đọan code trên để patch bởi vì có nhiều lệnh cmp/jl và cmp/jne xảy ra trong chương trình quá.Vì vậy chúng ta sẽ bàn cách tìm như thế nào vị trí chính xác cần patch hay còn gọi là tử huyệt. II. TÌM TỬ HUYỆT: Với đọan code mô tả ỏ trên chúng ta có thể thấy chương trình có khả năng đi theo hai luồng . Khi bạn vẫn trong thời gian sử dụng 30 day chương trình sẽ đi theo luồng sau: Quote: Call 041829B0 (GetSystemTime) Call 0492832C(Installed) Cmp ax,bx JL 04927435 (JUMP đ?n DayLeft message) Call 04583BC0 (DayLeft message) Jmp 042392BC (V? chương trình chính) Khi đã hết hạn sử dụng Luồng chỉ thị sẽ giống như dưới đây: Quote: Call 041829B0 (GetSystemTime) Call 0492832C(Installed) Cmp ax,bx JL 04927435 (NO JUMP ) Call 04348234 (Expired) Jmp 0432833C (Halt) Với hai list trên chúng ta thấy rằng, các chỉ thị đều giống nhau trước lệnh JL, và List đầu tiên là tình huống lệnh JL nhảy,còn list thứ 2 là tình huống mà chương trình sẽ ko nhảy khi gập lệnh JL. Và lệnh JL thì lại dựa trên giá trị ax và bx. Vì vậy để crack một chương trình trial,chúng ta phải làm thay đổi giá trị của ax và bx (đây là cách đúng đắn ) do đó chúng ta luôn luôn có một chương trình trong thời gian cho phép sử dụng. Hay một cách khác là thay lệnh JL thành JUMP để ép buộc chương trình chạy theo luồng chỉ thị đầu tiên ở trên. OK, chúng ta đã nắm được nguyên lý. Bây giờ, tôi sẽ hướng dẫn các bạn cách mà "họ đã làm điều đó như thế nào?". III THỰC HÀNH: - Tools cần thiết: SoftIce 4.05 với chương trình "Symbol Loader" của SI Tôi đang xử dụng WIN98SE và SI 4.05 mua tại các tiệm bán đĩa ,khi cài đặt chương trình SI xong, vào menu START của window: Start/Program/Nu Mega SoftICE/ Symbol Loader thì thấy có “Symbol Loader” -Target (bia bắn) : program "museArc" trong bộ tut "The Complete Cracking Guide for Newbie". Bạn hảy setup chương trình museArc lên máy bạn. Máy của tôi sau khi setup chương trình nằm trong thư mục : C:\Program Files\museArc\PROGRAM\museArc.exe Như các bạn biết đấy , trong tut 3 , chúng ta đã xử xong anh chàng này và đả tìm ra được tử huyệt cần phải patch. Nhưng ở đây như ở trên đã nói, chúng ta hảc sử dụng Symbol Loader của SI . Vậy bây giờ coi như chúng ta chưa biết gì về tử huyệt và vẫn dụng các kiến thức trên để cracking museArc. Nếu các bạn ko có Symbol Loader thì các bạn sẻ ko thể thực hành được tut này. Vì chính Symbol Loader sẻ giúp ta lưu lại tòan bộ lối đi của chương trình cho mỗi tình huống xảy ra. Tức là nó sẽ lưu lại luồng chỉ thị mà chương trình đã thực hiện. Trước tiên bạn hảy bật Symbol Loader lên.Vào menu File/Open module/ , chọn file cần crack là museArc.exe . Rồi sau đó bạn vào menu Module/Load để load file exe lên. Thông thường, bạn sẽ được đón mừng với một cái thông báo lỗi khi biên dịch symbol : "An error occured during symbol translation/load. Load executable anyway?" Chỉ cần nhấn nút "Yes" để tiếp tục tải file exe. Bây giờ SI sẽ chiếm quyền điều khiển của SL (Symbol Loader) có thể xác nhận điều này khi nhìn vào các thông tin trên window. (SI sẽ bắn ra màn hình) Bạn có thể sẽ thấy nhiều dòng trong cửa sổ code của SI như sau: Quote: FFFF INVALID FFFF INVALID FFFF INVALID FFFF INVALID Hảy bỏ qua những điều này vì nó ko là lỗi. Nó chỉ hiển thị một vùng trong bộ nhớ mà SI ko thể xác định được. Tại thời điểm này chúng ta sẽ setup SI để nó hiển thị những gì chúng ta muốn trong cửa sổ command ( Hảy ghi nhớ rằng tất cả những gì trong cửa sổ command đều đã được logged) Bước 1: Đóng cửa sổ code trong SI -Bước này chúng ta ko muốn cửa sổ Code trong SI hiển thị. Chúng ta dùng lệnh này "wc" Bước 2: Đặt breakpoint cho hàm GetSystemTime -Bây giờ chúng ta đặt bp cho hàm GetSystemTime bằng lệnh: 'bpx GetSystemTime' Hàm GetSystemTime là một trong nhiều hàm lấy ngày và giờ hiện hành của hệ thống. Nhân tiện đây, tôi xin nói thêm, từ "GetsystemTime" ở lệnh "bpx GetSystemTime" chỉ là một địa chỉ trỏ đến hàm. Nếu bạn . Quote: 00 000 0 01 : Call GetSystemTime 00 000 002 :Call Installed 00 000 003 :If (GetSystemTime-Installed) > 30 days then 00 000 004 : Call Expired 00 000 005 : Jmp Halt 00 000 006 :Otherwise 00 000 007 : Call. 00 000 007 : Call DaysLeft 00 000 008 : Jmp Main Trong thực tế các chỉ thị trên giống như vầy: Quote: Call 0 418 29B0 (GetSystemTime) Call 04 92832C(Installed) Cmp ax,bx JL 04 927435 (Nhảy hoặc không. D:CrackDateCrackDateCrck.exe D:SoftwareABCabc.exe, 19 /02 / 200 5, 0 Để khởi động chương trình maximize : D:CrackDateCrackDateCrck.exe D:SoftwareABCabc.exe, 19 /02 / 200 5, 1 CƠ CHẾ HOẠT ĐỘNG : Thông thường